0
オンラインでは、ADFテスト用のMATLABコードとSADFおよびDFテスト用のテストが見つかりました。さて、このmatlabコードをRに変換するために、45行目はまだ私にエラーを与える傾向があります。MatlabからRへのADFテスト変換
# if mflag=1 use ADF with constant and without trend
# if mlag=2 use ADF with constant and trend
# if mlag=3 use ADF without constant and trend
#ADF
#Set data sample equal to y to start
y=Data$OIL.P
#Start ADF test
ADF_FL<- function(y,adflag,mflag)
{
t1=dim(y,1)-1
const=matrix(1,t1,1)
trend=t(seq(1,1,by=t1)) #or trend=t(c(seq(1,1,by=t)1)))
y1=y(dim(y,1)-t1:dim(y,1)-1)
dy=y(2:dim(y, 1))-y(1:dim(y,1)-1)
dy0=dy(dim(dy,1)-t1+1:dim(dy,1))
x=y1
if(mflag==1){
x=c(x,const)
} else{
x=c(x, const, trend)
}
x1=x
t2=t1-adflag
x2=x1(dim(x1,1)-t2+1:dim(x1,1),) #from k+1 to the end (including y1 and x)
dy01=dy(dim(dy0,1)-t2+1:dim(dy0,1)) #from k+1 to the end (including dy0)
if(adflag>0){
j=1
while(j<=adflag){
x2=[x2 dy(dim(dy,1)-t2+1-j:dim(dy,1)-j)] #problem in this line
j=j+1
}
}
beta=((t(x2))*x2)^(-1)*(t(x2)*dy01)
eps=dy01-x2*beta
if(mflag==1){
sign=sqrt(diag(t(eps)*eps/(t2-adflag-2)*(t(x2)*x2)^(-1)))
} else{
sign=sqrt(diag(t(eps)*eps/(t2-adflag-3)*(t(x2)*x2)^(-1)))
}
tvalue=beta/sign
show(tvalue)
}
オリジナルのMATLABコード:
function [estm]=ADF_FL(y,adflag,mflag)
t1=size(y,1)-1;
const=ones(t1,1);
trend=1:1:t1;trend=trend';
y1 = y(size(y,1)-t1:size(y,1)-1);
dy = y(2:size(y,1)) - y(1:size(y,1)-1);
dy0 = dy(size(dy,1)-t1+1:size(dy,1));
x=y1;
if mflag==1; x=[x const]; end;
if mflag==2; x=[x const trend]; end;
% if mflag==3; x=x; end;
x1=x;
t2=t1-adflag;
x2=x1(size(x1,1)-t2+1:size(x1,1),:); % from k+1 to the end (including y1 and x)[email protected]
dy01=dy0(size(dy0,1)-t2+1:size(dy0,1)); % from k+1 to the end (including dy0)[email protected]
if adflag>0;
j=1;
while j<=adflag;
x2=[x2 dy(size(dy,1)-t2+1-j:size(dy,1)-j)]; %including k lag variables of dy in [email protected]
j=j+1;
end;
end;
beta =(x2'*x2)^(-1)*(x2'*dy01); % model [email protected]
eps = dy01 - x2*beta;
if mflag==1; sig = sqrt(diag(eps'*eps/(t2-adflag-2)*(x2'*x2)^(-1))); end;
if mflag==2; sig = sqrt(diag(eps'*eps/(t2-adflag-3)*(x2'*x2)^(-1))); end;
if mflag==3; sig = sqrt(diag(eps'*eps/(t2-adflag-1)*(x2'*x2)^(-1))); end;
tvalue=beta./sig;
estm=tvalue(1);
は、誰かが、この中で私を助けてもらえますか?
おかげで、
デビッド