我试图使用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的行。
答案 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)
并删除错误行的结果来检查。