【问题标题】:Ignore #N/As in Excel LINEST function with multiple independent variables (known_x's)在具有多个自变量(known_x's)的 Excel LINEST 函数中忽略 #N/As
【发布时间】:2017-08-03 19:42:02
【问题描述】:

我正在尝试使用 LINEST 函数找到最适合一组 x、y、z 数据的平面方程。缺少一些 z 数据,这意味着 z 列中有 #N/As。例如:

    A   B   C
    (x) (y) (z)
1   1   1   5.1
2   2   1   5.4
3   3   1   5.7
4   1   2   #N/A
5   2   2   5.2
6   3   2   5.5
7   1   3   4.7
8   2   3   5
9   3   3   5.3

我想做=LINEST(C1:C9,A1:B9),但#N/A 会导致返回值错误。

我找到了单个自变量的解决方案(一列 known_x,即将一条线拟合到 x,y 数据),但我无法将它扩展到两个自变量(两个 known_x 的列,即拟合平面到 x、y、z 数据)。我找到的解决方案在这里:http://www.excelforum.com/excel-general/647448-linest-question.html,公式(针对我的应用稍作修改)是:

=LINEST(
  N(OFFSET(C1:C9,SMALL(IF(ISNUMBER(C1:C9),ROW(C1:C9)-ROW(C1)),
    ROW(INDIRECT("1:"&COUNT(C1:C9)))),0,1)),
  N(OFFSET(A1:A9,SMALL(IF(ISNUMBER(C1:C9),ROW(C1:C9)-ROW(C1)),
    ROW(INDIRECT("1:"&COUNT(C1:C9)))),0,1)),
  )

相当于=LINEST(C1:C9,A1:A9),忽略包含#N/A的行。

【问题讨论】:

  • 你能把#N/A改成0吗?我认为 0 对 Linest() 有意义。如果可以,只需添加带有=IFERROR(C1;0)的D列
  • @Makah 如果将 y 值的 #N/A 更改为零,则需要将一列 1 添加到回归 (x) 矩阵,并将此矩阵中的相应行更改为零.那么你应该得到与Linest() 相同的结果。这基本上就是下面的公式所做的。
  • 你解决了吗? @lori_m 回答接缝有一些错字,我不能让它工作。

标签: excel-formula


【解决方案1】:

发布的链接中的公式可能会被修改,但它很笨拙。缺失数据的最小二乘可以被视为一种回归,数值的权重为 1,非数值的权重为 0。根据这个观察,你可以试试这个(在 1x3 范围内使用 Ctrl+Shift+Enter):

=LINEST(IF(ISNUMBER(C1:C9),C1:C9,),IF(ISNUMBER(C1:C9),CHOOSE({1,2,3},1,A1:A9,B1:B9),),)

这给出了平面方程为z=-0.2x+0.3y+5,可以对照使用LINEST(C1:C8,A1:B8) 并删除错误行的结果进行检查。

【讨论】:

  • 我无法让你的公式起作用。我使用相同的问题数据,您的公式结果为#VALUE!
  • @Pedro77 已评论here。
猜你喜欢
  • 2018-01-11
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
相关资源
最近更新 更多