gpt4 book ai didi

python - 大型数据集上的广义最小二乘法

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:09 28 4
gpt4 key购买 nike

我想对未独立采样的数据进行线性拟合。我遇到了广义最小二乘法:

b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y

方程是Matlab格式的; XY 是数据点的坐标,V 是“方差矩阵”。

问题在于,由于其大小(1000 行和列),V 矩阵变得奇异,因此不可逆。关于如何解决这个问题的任何建议?也许使用 GLS 以外的方法来解决广义线性回归问题?我可以使用并且(稍微)熟悉的工具是 Numpy/Scipy、R 和 Matlab。

最佳答案

代替:

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 ];

关于python - 大型数据集上的广义最小二乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com