24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1997  |  回复: 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

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +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的回帖
查看全部 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的回帖

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的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★
wenzimu: 金币+1, ★★★很有帮助 2012-08-17 14:06:19
xzhdty: 金币+2, 谢谢 2012-08-17 16:50:48
引用回帖:
4楼: Originally posted by wenzimu at 2012-08-16 18:40:35
>> 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=
      =regre ...

没问题啊,原版的
CODE:
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

比如b的

b(:,:,1) =

   -0.1501
    0.5187


b(:,:,2) =

   -0.3011
    0.6585


b(:,:,3) =

    0.0059
    0.4830


b(:,:,4) =

   -0.3984
    0.6927


b(:,:,5) =

    0.0696
    0.4994


b(:,:,6) =

   -0.4565
    0.6888


b(:,:,7) =

    0.1679
    0.5196


b(:,:,8) =

   -0.4132
    0.8050


b(:,:,9) =

   -0.4390
    0.7496


b(:,:,10) =

   -0.8774
    0.9798


b(:,:,11) =

    0.2749
    0.3699


b(:,:,12) =

    0.2595
    0.2433
showmethemoney
5楼2012-08-17 09:33:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见