20

我敢肯定这是其他人以前解决过很多次的问题。

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

所以我将从每个人那里得到一组 {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)功能。

4

7 回答 7

30

我遇到了这个并且不愿意使用加载项,因为它很难与没有安装加载项的人共享工作表。

我的同事设计了一个相对紧凑的清洁配方(以使用一点魔法为代价)。

注意事项:

  • 该公式的工作原理是:

    • 使用该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作为一个命名范围)

于 2010-05-13T02:20:17.303 回答
5

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

于 2009-06-25T12:05:33.687 回答
5

最简单的方法可能如下:

  1. 在此处下载 Excel 插件:用于 Microsoft Excel 的 XlXtrFun™ 额外功能

  2. 使用函数插入()。=插值($A$1:$A$3,$B$1:$B$3,D1,FALSE,FALSE)

A 列和 B 列应包含您的输入,G 列应包含您的所有日期值。公式进入 E 列。

于 2009-06-25T19:45:13.287 回答
2

一种很好的图形方式来查看插值结果的拟合程度:

获取您的日期、值对并使用 Excel 中的 XY 图表(而不是折线图)绘制它们。右键单击图表上的结果线,然后单击“添加趋势线”。有许多不同的选项可以选择使用哪种类型的曲线拟合。然后您可以转到新创建的趋势线的属性并显示方程和 R 平方值。

确保在格式化趋势线方程标签时,将数值格式设置为具有高精度,以便显示方程常数的所有有效数字。

于 2009-06-25T14:19:17.190 回答
2

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 帖子中,但我还没有足够的声望点。

于 2014-02-19T15:08:31.497 回答
1

或者。

=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))

j7x 值在哪里。

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

更容易将其放入代码中。

于 2010-08-12T09:09:19.660 回答
1

您可以使用 Excel 的“趋势线”功能找出最适合您的数据的公式。使用该公式,您可以计算y任何x

  1. 为其创建线性散点图(XY)(插入 => 散点图);
  2. 创建多项式或移动平均趋势线,选中“在图表上显示方程”(右键单击系列 => 添加趋势线);
  3. 将方程复制到单元格中并用x所需的 x 值替换 's

在下面的屏幕截图中 A12:A16 持有x,B12:B16 持有y,C12 包含计算y任何的公式x

Excel 插值

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

于 2015-10-29T15:01:49.520 回答