bookisflying 2024-03-24 17:29 采纳率: 20%
浏览 19
已结题

多参数线性最小二乘法的MATLAB编程问题


关于最小二乘法的两个问题:

有一物理量(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编程试过,感觉结果有问题。

  • 写回答

21条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-24 17:29
    关注
    获得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.]]) 结果和问题一的计算结果一致,说明矩阵表示法与通解是等价的。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 创建了问题 3月24日