忽略具有多个自变量的Excel LINEST函数中的#N / As(known_x's)

时间:2014-02-12 18:30:33

标签: excel-formula

我试图使用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的行。

1 个答案:

答案 0 :(得分:3)

发布的链接中的公式可能会被调整,但它很笨重。具有缺失数据的最小二乘可以被视为回归,对于数值,权重为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)并删除错误行的结果来检查。