24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1999  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wenzimu

新虫 (初入文坛)

[求助] matlab中如何用regress实现批量回归并出图

现在有三组143*4的矩阵数据,分别命名为GDP,LGDP,GRO。现在想通过regress以GDP为因变量,LGDP,GRO为自变量进行回归。如果是整体回归,那直接调用函数regress就可以了,但现在遇到的问题是想每列数据分区间求各自的回归方程并画图。比如第一列数据中,GDP(1:11,1)与LGDP(1:11,1),GRO(1:11,1);GDP(12:22,1)与LGDP(12:22,1),GRO(12:22,1);GDP(23:33,1)与LGDP(23:33,1),GRO(23:33,1)......GDP(133:143,1)与LGDP(133:143,1),GRO(133:143,1)这样分别进行批量回归,并画出实际值GDP与拟合值GDP的图;然后第二列、第三列、第四列数据也同样进行这样的拟合(如下图所示),不知这样该如何实现,还请高人帮忙~!

示意图
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
7楼: Originally posted by wenzimu at 2012-08-17 14:55:39
谢谢csgt0版主热心的答复。按照您的方法,可以实现了。有个小疑问想再麻烦您一下,就是如果代码中的Xj,Yj等这些变量也要像b这样输出13组值应该怎么改代码呢,因为按照这个运算的话,好像只能得到Xj和Yj最后一组的 ...

把维数往上加就行了
CODE:
clc
clear
X=rand(143,4);
Y=rand(143,4);
C=ones(11,1);
for n=0:12
       i=11*n;
     for j=1:4
         Xj1=X(1+i:11+i,j);
         Yj(:,j,n+1)=Y(1+i:11+i,j);
         Xj(:,:,j,n+1)=[Xj1,C];
        [b(:,:,n+1),bint(:,:,n+1),r(:,:,n+1),stats(:,:,n+1)]=regress(Yj(:,j,n+1),Xj(:,:,j,n+1));
end
end

showmethemoney
8楼2012-08-17 15:28:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

wenzimu

新虫 (初入文坛)

我自己用随机数做了一下,但最后发现回归参数不能一起出现在同一个矩阵中,最后矩阵中只有某一组的回归参数,请问这种情况怎么解决啊?
>> X=rand(143,4);
>> Y=rand(143,4);
>> C=ones(11,1);
>> for n=0:12
       i=11*n
   for j=1:4
   Xj=X(1+i:11+i,j);
   Xj=[Xj,C]
   Yj=Y(1+i:11+i,j)
   [b,bint,r,rint,stats]=regress(Yj,Xj)
end
end
2楼2012-08-16 16:17:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
改成这样
CODE:
[b(:,:,n+1),bint(:,:,n+1),r(:,:,n+1),rint(:,:,n+1),stats(:,:,n+1)]=regress(Yj,Xj);

showmethemoney
3楼2012-08-16 18:05:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wenzimu

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by csgt0 at 2012-08-16 18:05:20
改成这样

=regress(Yj,Xj);

>> X=rand(143,4);
>> Y=rand(143,4);
>> C=ones(11,1);
>> for n=0:12
       i=11*n
   for j=1:4
       Xj=X(1+i:11+i,j)
       Yj=Y(1+i:11+i,j)
       Xj=[Xj,C]
      [b(:,:,n+1),bint(:,:,n+1),r(:,:,n+1),stats(:,:,n+1)]=regress(Yj,Xj)  
end
end

csgt0版主,我按照你的提示做了一遍,可是出错了,错误:“??? Subscripted assignment dimension mismatch.”  能帮我再看一下吗?谢谢!
4楼2012-08-16 18:40:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见