我确信这是其他人之前已经解决过很多次的问题。

一群人将进行测量(确切地说是家庭能源使用情况)。他们都会在不同的时间和不同的时间间隔这样做。

因此,我将从每个人那里得到一组 {date, value} 对,其中缺少日期。

我需要的是一组完整的 {date, value} 对,其中对于范围内的每个日期,都有一个值已知(测量或计算)。我希望一个简单的线性插值就足以满足这个项目的需要。

如果我假设它必须在 Excel 中完成。在这样的数据集中进行插值的最佳方法是什么(这样我每天都有一个值)?

谢谢。

笔记:当这些数据集完成后,我将确定斜率(即每天的使用情况),然后我们就可以开始进行逐户比较。

附加信息 在最初的一些建议之后:我不想手动找出测量集中的孔在哪里(太多不完整的测量集!!)。我正在寻找(现有的)自动为我做这件事的东西。所以如果我的输入是

{2009-06-01,  10}
{2009-06-03,  20}
{2009-06-06, 110}

然后我期望自动得到

{2009-06-01,  10}
{2009-06-02,  15}
{2009-06-03,  20}
{2009-06-04,  50}
{2009-06-05,  80}
{2009-06-06, 110}

是的,我可以编写执行此操作的软件。我只是希望有人已经有一个“准备运行”软件(Excel)功能来解决这个(相当通用的)问题。

有帮助吗?

解决方案

最简单的方式做到这一可能如下:

  1. 下载的Excel加上: XlXtrFun™额外职能对于Microsoft Excel

  2. 使用功能intepolate().=插入($A$1:$A$3,$B1美元:$B3美元,D1,FALSE,FALSE)

列A和B中应包含你的输入,并列克应该包含所有您的日期的价值观。公式进入列E.

其他提示

我来这和是不愿意使用一个加,因为它使得难以分享这片的人没有加在安装。

我officemate设计了一个干净的公式,是比较紧凑(在昂贵的使用点魔术).

需要注意的事项:

  • 该公式适用于:

    • 使用 MATCH 功能找到行 inputs 范围之前的价值正在搜索(例如3的价值就在3.5)
    • 使用 OFFSETs选择平行的和下一个(在淡紫色)
    • 使用 FORECAST 建立一个线性内插法,使用只是这两个点,并得到的结果
  • 这个公式不可能做的推断;确保你的搜索值之间的终点(我这样做是在例如下面通过具有极端值)。

不知道,如果这个太复杂的人;但它有好处是非常的便携式(和更简单的过许多备用的解决办法)。

如果你想要复制粘贴式,这是:

=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1

(inputs 被一个叫范围内)

有两个功能, 莱斯特趋势, ,您可以尝试看看哪个可以给您带来更好的结果。它们都采用一组已知的 X 和 Y 以及新的 X 值,并计算新的 Y 值。不同之处在于,LINEST 执行简单的线性回归,而 TREND 在执行回归之前会首先尝试找到一条适合您的数据的曲线。

有一个不错的图形方式查看您的插值结果的匹配程度:

把你的日期,值对,并使用Excel中的XY图表(未折线图)绘制它们。在图表上的结果行单击鼠标右键,点击“添加趋势线”。有很多不同的选择,选择哪条曲线拟合的类型使用。然后就可以去新创建的趋势线的属性并显示该方程和R平方值。

确认,当你格式化趋势线公式标签,你设置的数字格式具有较高的精确度,使所有的公式常量的显著数字显示。

由以上YGA答案不处理的范围的情况下所需的X值是相同的参照范围的X值结束。使用YGA给出的例子,Excel公式将返回#DIV / 0!如果在9999的插补值被问到错误。这显然是部分原因YGA加入9999和-9999极端端点输入数据的范围,然后假设所有预测值是这两个数字之间。如果这种填充是不想要的或不可能的,另一种方式来避免#DIV / 0!误差是使用如下公式来检查的精确输入值匹配:

=IF(ISNA(MATCH(F3,inputs,0)),FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1)),OFFSET(inputs,MATCH(F3,inputs)-1,1,1,1))

其中F3是其中内插的结果想要的值。

请注意:我刚才说这是原来的YGA发表评论,但我没有足够的信誉分又

替代地

=INDEX(yVals,MATCH(J7,xVals,1))+(J7-MATCH(J7,xVals,1))*(INDEX(yVals,MATCH(J7,xVals,1)+1)-INDEX(yVals,MATCH(J7,xVals,1)))/(INDEX(xVals,MATCH(J7,xVals,1)+1)-MATCH(J7,xVals,1))

其中j7是x值。

xvals是x值的范围 yvals是y值的范围

更容易地把这个转换成代码。

你可以找出哪些式最适合你的数据,使用Excel的"趋势线"的功能。使用该公式可以计算 y 对于任何 x

  1. 创建的线性分散(x-y)为它(插入=>散);
  2. 创建Polynominal或移动平均趋势线,检查"显示公式 图"(右击系列=>增加的趋势线);
  3. 复制方程式进入细胞和替换 x's与你期望的x值

在下图A12:拥有A16 x's,B12:B16拥有 y's,和C12含有的公式,计算 y 对于任何 x.

Excel Interpolation

我首先发表一个答案 在这里,, 但后来发现这个问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top