楼主: ihs
13996 9

ADF检验matlab代码,看看啊 [推广有奖]

  • 0关注
  • 5粉丝

博士生

86%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
6.3201
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
10775 点
帖子
334
精华
0
在线时间
129 小时
注册时间
2005-11-4
最后登录
2024-3-24

楼主
ihs 发表于 2010-10-21 14:46:46 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
好像有错啊,看下面link
http://onlyzhusy.spaces.live.com/blog/cns!91C383D504687420!640.entry?sa=400680604

5/1/2007
一些简单的matlab计量程序感谢anpopo给的那个地址,Lesage教授的这个工具包很好用,其侧重点看来应该主要放在了spatial-econometrics上?但是基本的计量检验命令还是全够的,借与HUIZI合作的一篇论文中将进一步讨论Granger Causality Test 上面 我想做一套matlab程序能够自动完成从ADF检验到可能需要的协整到Granger的整个过程 现在难点主要是在临界值的判断上 ,下面给出的matlab代码很简单 分别是ADF单位根检验 engel-granger test 和Granger Causality Test  的matlab程序

function output=dfa(testdata);
%%%%%%%%%%%%%%%%%%%
%ADF test for 时间序列
%Author:Spark CUFE & Cornell
%D
%%%%%%%%%%%%%%%%%%
no=length(testdata);
for k=2:no
yy(k-1)=testdata(k)-testdata(k-1);
end
no=length(testdata);
m=2;%给定滞后项
m=m+1;
y=diff(testdata(m:no));
for id=1:m-1
    l(:,id)=diff(testdata(m-id:no-id))';
end
l(:,m)=testdata(m+1:no)';
l(:,m+1)=ones(1,no-m)';
%l(:,m+2)=(1:no-m)';
[B,BINT,R,RINT,STATS] = REGRESS(y',l);
segmia=(sum(R.^2))/(no-m-2);
sss=sqrt(segmia/sum(y.^2));
output=(B(m)-1)/sss;

function Stat= Engel_granger( data1,data2 )
%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Author:Spark  CUFE & Cornell
%  Engel_Granger
clc
no=length(data1);
j=ones(1,no)';
[B,BINT,R,RINT,STATS] = REGRESS(data1,[data2 j]);
disp('-------------Resualt of OLS---------------');
R_square=STATS(1)
F_Value=STATS(2)
segmia=(sum(R.^2))/(no-2);
T_ValueOfData2=B(1)/(sqrt(segmia/sum(data2.^2)))
T_ValueOfConstantTerm=B(2)/(sqrt((segmia*sum(data2)^2/(no*sum(data2.^2)))))
disp('------------CRDW---------------');
dr=diff(R);
er=mean(R);
CRDW=sum(dr.^2)/sum((R-er).^2)
disp('---------adf test-------------');
Stat=dfa(R')


function F_Value= Granger( data1,data2 )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%  Author Spark CUFE & Cornell
%  Granger TEST
clc
m=8;%data1滞后项
n=12;%data2滞后项
no=length(data1);
maxl=max(m,n);
y=data1(maxl+1:no);
for j=1:m
    x(:,j)=data1(maxl-j+1:no-j);
end
for k=1:n
    x(:,m+k)=data2(maxl-k+1:no-k);
end
x(:,m+n+1)=ones(1,length(y))';
[B,BINT,R,RINT,STATS] = REGRESS(y,x);
ESS1=sum(R.^2)
T=length(y);
[B1,BINT1,R1,RINT1,STATS1] = REGRESS(y,[x(:,1:m),x(:,m+n+1)]);
ESS=sum(R1.^2)
disp('---------F_Value-----------')
F_Value=((ESS-ESS1)/n)/(ESS/(T-m-n-1));
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:matlab代码 MATLAB ADF检验 matla atlab MATLAB 检验 代码 ADF

沙发
liuming3482723 发表于 2010-10-21 21:47:11 |只看作者 |坛友微信交流群
嗯,做的挺好。看来真是下功夫了,呵呵。编程重在思想

使用道具

藤椅
king5608 发表于 2011-5-4 14:24:57 |只看作者 |坛友微信交流群
挺好,哪儿有报错?

使用道具

板凳
vkingever 发表于 2011-5-4 22:09:19 |只看作者 |坛友微信交流群
好贴!!!!!!!!!!!1

使用道具

报纸
rocky581 发表于 2012-3-13 18:01:11 |只看作者 |坛友微信交流群
谢了,copy走了!

使用道具

地板
望__仰 发表于 2012-9-1 09:57:02 |只看作者 |坛友微信交流群
dfa程序里的REGRESS定义有误。常数项1怎么是加到矩阵的最右端的???应该加到 l 矩阵的左端

使用道具

7
shixianjun 发表于 2012-10-17 14:53:33 |只看作者 |坛友微信交流群
望__仰 发表于 2012-9-1 09:57
dfa程序里的REGRESS定义有误。常数项1怎么是加到矩阵的最右端的???应该加到 l 矩阵的左端
是不是也没有趋势项啊?(我用这个程序dfa算出来和eviews不一样!!)求解答!

使用道具

8
dlldjg 发表于 2014-5-25 15:08:14 |只看作者 |坛友微信交流群
谢谢楼主分享

使用道具

9
duanpengnjau 学生认证  发表于 2015-3-4 16:43:22 |只看作者 |坛友微信交流群
自变量应该是yn-1,你表示的是yn,自变量矩阵的第m列,楼主感受一下

使用道具

10
liuxin9023 发表于 2015-3-4 21:26:28 |只看作者 |坛友微信交流群
matlab内置的有个adftest函数 可以参考下

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-9 06:10