加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【转】使用matlab做回归分析

(2012-04-12 18:56:27)
标签:

杂谈

分类: Matlab
著名经济学家弗里德曼的一个著名论断是“通货膨胀始终是个货币现象”,即通货膨胀的产生总是和货币超发相伴随的。这一论断是否总成立呢?货币超发和通货膨胀之间关系的关联度有多高呢?计量经济学就是用来回答这些问题的有力工具,通过对历史数据的分析来检验理论的有效性,并建立模型用于预测和分析未来的形势。



      
最基本的模型就是经典的线性回归了,这也是计量经济学的入门模型。Matlab可以用来进行计量模型的运算,下面就演示如何进行一个最基本的回归分析。

       第一步是把数据加载到Matlab工作环境中。这一步骤有多种实现方法,可以通过文件读取函数xlsread,也可以通过图形化的操作完成;这里通过最简单便捷的方式操作,就是直接从Excel里复制粘贴到Matlab中。

       假设数据已经整理到了Excel中,在Matlab命令行中输入M2=[],然后从Excel里复制M2的数据到剪贴板,回到Matlab环境中,将光标置于[]中间,Ctrl+V就完成了对M2变量的赋值,同样的方法给CPI赋值,这样模型的原始数据M2CPI就进入到了工作环境中。(2007-20119月的月度数据)

       第二步是调用Matlab里的回归模型进行分析,将M2CPI作为输入,模型执行后将计算结果输出。这一步在matlab里实现起来非常简单,命令行中输入regress(CPI,M2)回车即可,返回的结果就是相关系数。这只显示了最基本的信息,regress函数最完整的形式如下:

[B,BINT,R,RINT,STATS] = REGRESS(Y,X,alpha)

函数的返回值中,B是回归系数向量,BINTB95%置信度下的置信区间,R是残差序列,RINT是残差在5%显著性水平下的矩阵,可用于判断模型的有效性,STATS是一个包含模型统计变量的向量,该函数的详细信息如下表:

回归函数regress的特征        [B,BINT,R,RINT,STATS] = REGRESS(Y,X,alpha)

 

变量

变量含义

变量特征

输出参数

Y

因变量

nx1的矩阵

X

自变量

带常数项时须将第一列置为全1

alpha

置信度,默认为5%

 

输出参数

B

模型估计值beta向量

 

R

模型残差序列

 

BINT

beta的置信区间

置信区间受alpha控制,默认为95%

RINT

残差序列的置信区间

STATS

模型的统计信息,包括四项,分别为拟合度R2,模型显著性F,P,残差的标准差

更多的信息,如变量的t值,需要使用regstats函数

执行如下命令:

>>[B,BINT,R,RINT,STATS]=regress(price2ret(flipud(CPI)),[ones(49,1) price2ret(flipud(M2))])

得出如下结果:

B =[0.00027982   -0.025282]

BINT =[ -0.0031271    0.0036867;    -0.2105      0.15994]

STATS =[0.0016017     0.075401      0.78483  5.3374e-005]

该模型的拟合度R2只有0.0016F值也只有0.075,显然该模型是不合理的,我国近年来CPI的变化无法用M2解释,真是怪现象。

第三步是像Eviews一样输出详细、可读性强的结果。

模型估计过之后,像eviews里那样,也可以很方便的得到残差图。只需如下代码:

Plotyy(1 :50,M2,1 :50,CPI)

 http://www.xiaozhuang.org/upload/201110260123507874.jpg

 

看到了这个图之后,就知道这个模型根本没必要做了,用线性模型没法分析它们之间的关系。

第四步:保存数据、保存程序,留作后用。

有些数据是我们辛辛苦苦导入到Matlab环境里去的,将来可能还会需要重复使用,有没有办法不用每次都复杂地从excel里导入呢?Matlab提供了非常方便的方法来实现这一点,使用save命令就可以把当前工作环境中的全部变量保存到文件中去:save datafilename。这样,你的数据就使用mtalab的一种mat文件格式保存起来了,关闭了matlab之后依然存在。下次需要使用时,只需load datafilename就可以将里面的变量加载到当前工作环境了。

如果你是在matlab里用命令行窗口不断修改、调试你的模型,到最后别忘了把工作成果保存起来,把导入数据,模型分析和模型结果的图形显示集成起来,编写成一个良好的.m文件,如果能改写成function就更好了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有