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

MATLAB中有矩阵Y=[y1y2...yn],X1=[x11x12...x1n],X2=[x21x22...x2n],X3=[x31x32...x3n],设yi=A0+... MATLAB中有矩阵Y=[y1 y2 ... yn],X1=[x11 x12 ... x1n],X2=[x21 x22 ... x2n],X3=[x31 x32...x3n],设yi=A0+A1x1i+A2x2i+A3x3,要怎么求?是用偏最小二乘法吗?我不会……求指导!!!谢谢!! 展开
 我来答
alskdjfhcy
2013-02-03 · TA获得超过1280个赞
知道小有建树答主
回答量:747
采纳率:0%
帮助的人:679万
展开全部
已知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 -- 编程爱好者博客”,看看第一条结果
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式