下面我们看看Phillips-Perron检验,考虑序列相关和异方差下的Newey-West估计量。
开始设置 e'e/n1 ,然后修正为2*wi*(e_i'e)/n1。
nw=e'e/n1;
i=1;
do while i<=lags;
w=1-i/(lags+1);
nw=nw+2*w*e[1:n1-i]'e[i+1:n1]/n1;
i=i+1;
endo;
还是调用前面的数据
data=reshape(data,rows(data)/2,2);
y=data[.,1];
lags=5;
n=rows(y);
dy=y[2:n]-y[1:n-1];
x=y[1:n-1];
n1=rows(x);
b=inv(x'x)*x'dy;
e=dy-x*b;
nw=e'e/n1;
i=1;
do while i<=lags;
w=1-i/(lags+1);
nw=nw+2*w*e[1:n1-i]'e[i+1:n1]/n1;
i=i+1;
endo;
print "NW estimator=" nw;
用这个程序作为长期方差的nw估计,则DF统计量修正为,
taupp=sqrt(s2u/s2tq)*tau-1/2*(s2tq-s2u)/sqrt(s2tq)*n1*setau/sig其中,
s2u=e'e/n1 , s2tq=nw
setau 是第一个系数的标准误,sig是残差向量e的标准偏。
data=reshape(data,rows(data)/2,2);
y=data[.,1];
lags=5;
call pp(y,lags);
proc(0)=pp(y,lags);
local n,dy,x,n1,k,b,e,s2hat,varb,se,tau,setau,sig,nw,w,i,taupp,s2u,s2tq;
n=rows(y);
dy=y[2:n]-y[1:n-1];
x=y[1:n-1];
n1=rows(x); k=cols(x);
b=inv(x'x)*x'dy;
e=dy-x*b;
s2hat=e'e/(n1-k);
varb=s2hat*inv(x'x);
se=sqrt(diag(varb));
tau=b[1]./se[1]; print "tau =" tau;
setau=se[1];
sig=stdc(e);
nw=e'e/n1;
i=1;
do while i<=lags;
w=1-i/(lags+1);
nw=nw+2*w*e[1:n1-i]'e[i+1:n1]/n1;
i=i+1;
endo;
s2u=e'e/n1;
s2tq=nw;
taupp=sqrt(s2u/s2tq)*tau-1/2*(s2tq-s2u)/sqrt(s2tq)*n1*setau/sig;
print "taupp=" taupp;;print/rz "( n=" n1 ")";
endp;
如果滞后长度=0,则tau和taupp相同。