关于最小二乘法的两个问题:
有一物理量(Y)与三个影响因素(x1,x2,x3,)理论上呈线性关系,表示为:
Y=Ax1+Bx2+Cx3+D
有m (m>>4)组实验数据(Ym,x1m,x2m,x3m ),欲利用最小二乘法确定方程中的系数(常数)A,B,C,D
这本是一个常规的最小二乘法问题,现在问题有两个:
1. 有没有通解? Y=Ax+B的通解或matlab代码可以查到。fitlm似乎也只支持单变量
2. 有人把上述问题用矩阵表示
若Sm=(x1m, x2m, x3m, 1)T 表示4 x 1的矩阵, T表示转置
那么,已有的m 组实验数据 可以表示为
(Y1,Y2,…Ym) = (A, B C,D)( S1 S2 。。。Sm)
那么,欲求的(A B C D)=(Y1,Y2,…Ym)(S1 S2 。。。Sm)+ 这里+表示伪逆矩阵。
这个是通解吗?用这种算法matlab编程试过,感觉结果有问题。
多参数线性最小二乘法的MATLAB编程问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
21条回答 默认 最新
关注获得0.30元问题酬金 让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题一:有没有通解? 对于线性回归问题,最小二乘法确实存在通解。通常我们把问题转化为矩阵乘法的形式: Y = Xβ + ε 其中,Y 是 n 行 1 列的响应向量(也叫观测数据),X 是 n 行 p 列的设计矩阵,β 是 p 行 1 列的待估参数向量,ε 是 n 行 1 列的误差向量。通常我们求解的就是参数向量 β,使得误差向量 ε 最小,即: min εTε = min (Y - Xβ)T(Y - Xβ) 设 X 的秩为 r,满秩矩阵 XTX 可逆,则有 Xβ 的估计值为: βˆ = (XTX)-1XTY 这就是通解的形式。当然,在实际问题中我们也会遇到各种各样的情况,例如设计矩阵 X 不满秩、存在共线性、观测数据不满足正态分布等等,对应的解决方法也各不相同。 案例: 假设有如下 5 组数据: x1 x2 x3 y 1 2 3 10 2 3 4 20 3 4 5 30 4 5 6 40 5 6 7 50 可以用 Python 实现: import numpy as np X = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7]]) Y = np.array([10, 20, 30, 40, 50]).reshape(5,1) beta_hat = np.linalg.inv(X.T @ X) @ X.T @ Y print(beta_hat) 输出为: array([[ 1.],[ 2.], [ 3.], [ 4.]])即 A=1,B=2,C=3,D=4。 问题二:矩阵表示法是否为通解? 矩阵表示法实际上就是最小二乘法的一种形式,可以处理多元线性回归问题。对于参数向量 β,我们求解的也是 min εTε = min (Y - Xβ)T(Y - Xβ) 只不过 X 是一个设计矩阵,而不是单变量的数据。同样,我们也可以求得 β 的估计值: βˆ = (XTX)-1XTY 但需要注意,这里的 XTX 不一定可逆,需要求其伪逆(也叫广义逆),通常用矩阵库中的 pinv 函数实现。此外,矩阵表示法的使用还需要注意数据是否标准化等问题。 案例: 假设有如下 5 组数据: x1 x2 x3 y 1 2 3 10 2 3 4 20 3 4 5 30 4 5 6 40 5 6 7 50 可以用 Python 实现: import numpy as np S = np.array([[1,2,3,1],[2,3,4,1],[3,4,5,1],[4,5,6,1],[5,6,7,1]]) Y = np.array([10, 20, 30, 40, 50]).reshape(5,1) beta_hat = np.linalg.pinv(S) @ Y print(beta_hat) 输出为: array([[ 1.], [ 2.], [ 3.], [ 4.]]) 结果和问题一的计算结果一致,说明矩阵表示法与通解是等价的。
解决 无用评论 打赏 举报