作业帮 > 综合 > 作业

MATLAB如何才能在3个自变量1个因变量的情况下预测这个因变量之后的数值变化?那3个自变量已经预测出未来数

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/04 19:55:13
MATLAB如何才能在3个自变量1个因变量的情况下预测这个因变量之后的数值变化?那3个自变量已经预测出未来数
MATLAB中有矩阵Y=[y1 y2 ... yn],X1=[x11 x12 ... x1n],X2=[x21 x22 ... x2n],X3=[x31 x32...x3n],设yi=A0+A1x1i+A2x2i+A3x3,要怎么求?是用偏最小二乘法吗?我不会……求指导!谢谢!
MATLAB如何才能在3个自变量1个因变量的情况下预测这个因变量之后的数值变化?那3个自变量已经预测出未来数
已知X123求Y的话,直接使用你的公式即可
代码:
X1=[x11 x12 ...x1n];%行向量里都是n个数字,下同
X2=[x21 x22 ...x2n];
X3=[x31 x32 ...x3n];
Y=A0+A1*X1+A2*X2+A3*X3;%A0123为四个已知数字
这样就求出了1行n列的行向量Y
至于你说的“预测”,我猜是A0123是待定系数吧.
也就是已知X123及Y的n组量,希望用三元一次函数进行拟合吧.
这样的话,若用最小二乘法,思路是:
{下面我用sum(f(i),1,10)表示f(i)表达式从1加到10的值}
第一、设A0123为待定系数,并使用X123计算Y的估计值YY
YY=sum(A0+A1*X1i+A2*X2i+A3*X3i,1,n)
第二、计算真实的Y和估计的YY每个对应项之差的平方,再求总和S
S=sum((A0+A1*X1i+A2*X2i+A3*X3i-Yi)^2,1,n)
第三、目的是求使S最小的A0123,即为最小二乘解
这实际上是可微多维函数求极值的问题,用对各自变量求偏导并同时取零解决
此时针对上面的S等式分别对A0123求偏导
dS/dA0=sum(2*(A0+A1*X1i+A2*X2i+A3*X3i-Yi),1,n)
dS/dA1=sum(2*(A0+A1*X1i+A2*X2i+A3*X3i-Yi)*X1i,1,n)
dS/dA2=sum(2*(A0+A1*X1i+A2*X2i+A3*X3i-Yi)*X2i,1,n)
dS/dA3=sum(2*(A0+A1*X1i+A2*X2i+A3*X3i-Yi)*X3i,1,n)
上面4等式右边提取A0123,再两边同除2得
(dS/dA0)/2=A0*n+A1*sum(X1i,1,n)+A2*sum(X2i,1,n)+A3*sum(X3i,1,n)-sum(Y,1,n)
(dS/dA1)/2=A0*sum(X1i,1,n)+A1*sum(X1i*X1i,1,n)+A2*sum(X2i*X1i,1,n)+A3*sum(X3i*X1i,1,n)-sum(Y*X1i,1,n)
(dS/dA2)/2=A0*sum(X2i,1,n)+A1*sum(X1i*X2i,1,n)+A2*sum(X2i*X2i,1,n)+A3*sum(X3i*X2i,1,n)-sum(Y*X2i,1,n)
(dS/dA3)/2=A0*sum(X3i,1,n)+A1*sum(X1i*X3i,1,n)+A2*sum(X2i*X3i,1,n)+A3*sum(X3i*X3i,1,n)-sum(Y*X3i,1,n)
令上4等式左边为0,注意到右边都是“A0*已知常数+A1*已知常数+A2*已知常数+A3*已知常数-已知常数”的形式
因此得到一个四元一次非齐次方程组,用高等数学中线性方程组的求解方法求解(或者甚至用初中的代入法求解方程组)即可
这样就得到了最佳的A0123四个数字,这四个参数使得拟合的Y=A0+A1*X1+A2*X2+A3*X3函数,与给定的X123和Y数据在最小二乘意义下差值最小,即最佳拟合
再问: 解答的好详细!谢谢!!比书上的清楚多了……我就是看懂一点不懂一点。。真心谢谢! 我还想问一下,如果用了回归分析,算出来的b=[b0 b1 b2 b3]是不是还不是最佳的?因为bint是b取值范围……那是不是要用你的方法算才是最佳拟合? [b, bint, r, rint, stats] = regress(y,x) b = -10782.76 12.64 -0.36 0.0016 bint = -14679.36 -6886.16 9.39 15.90 -1.35 0.62 -0.0084 0.012
再答: MATLAB的regress函数就是按照我上面所说的最小二乘法计算出来的 用我说的步骤计算出来的A0123就等于用regress计算出的b 若你问题中的Y和X123都是1行n列行向量,则代码应为:B=regress(Y',[ones(n,1) X1' X2' X3']); “ ' ”是转置的意思,这样得到4行1列的B,从上到下分别是问题中的A0123 bint是b的置信区间,并不是b的取值范围,这是取决于第三个输入量显著性水平Alpha的,缺省值为0.05。含义是:待定系数不在bint范围内的概率只有Alpha 你可以百度搜索“MATLAB regress -- forgeteverything -- 编程爱好者博客”,看看第一条结果