我想线性拟合未独立采样的数据。我遇到了广义最小二乘法:
b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y
方程式为Matlab格式; X
和Y
是数据点的坐标,V
是“方差矩阵”。
问题在于,由于其大小(1000行和列),V矩阵变得奇异,因此不可逆。有关如何解决这个问题的任何建议?也许使用一种解决GLS以外的广义线性回归问题的方法?我可以使用和稍微熟悉的工具是Numpy / Scipy,R和Matlab。
答案 0 :(得分:2)
而不是:
b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y
使用
b= (X'/V *X)\X'/V*Y
也就是说,将X*(Y^-1)
的所有实例替换为X/Y
。 Matlab将跳过计算逆(这很难,并且容易出错)并直接计算除法。
编辑:即使使用最佳矩阵操作,也无法进行某些操作(例如导致您描述的错误)。
可能与您的问题相关的一个示例是,如果尝试在约束下解决最小二乘问题,则多次测量是完全的,100%相关的。除了罕见的退化情况,无论是数学还是物理上都无法实现。您需要在测量中保持一定的独立性,以解决测量噪声或建模错误。例如,如果您有两个度量值,每个度量值的方差为1,并且完全相关,那么您的V
矩阵将如下所示:
V = [1 1; ...
1 1];
你永远无法适应这些数据。 (这通常意味着你需要重新制定你的基础功能,但这是一篇较长的论文。)
但是,如果您调整测量方差以允许测量之间存在一些小的独立性,那么它将毫无问题地工作。例如,95%的相关测量值看起来像这样
V = [1 0.95; ...
0.95 1 ];
答案 1 :(得分:1)
您可以使用奇异值分解作为求解器。它会尽力做到最好。
我通常以另一种方式考虑最小方块。你可以在这里阅读我的想法:
http://www.scribd.com/doc/21983425/Least-Squares-Fit
看看这对你有效。
我不明白 size 是怎么回事。如果你有N (x, y)
对,你仍然只需要求解M阶多项式中的(M + 1)个系数:
y = a0 + a1*x + a2*x^2 + ... + am*x^m