一个DF-GLS检验的Gauss程序:
@ DF-GLS for AR(1). Univariate @
@ Usage:
{x} = ers(y,ioption)
output = x TxN matrix. GLS demeanded or detrended data
Input = y: TxN matrix
ioption = 1 for constant
ioption = 2 for linear trend
{x1,x2} = ersfish(y1,cdc);
output x1 = Nx1 t-value for DF-GLS for Panel AR(1) model
x2 = 1x1 Fisher statistics
Input y1 = TxN GLS demeanded or detrended data
cdc = DF-GLS critical values
@
proc ERS(y,ioption);
local t,c1,c2,y1,y2,z,z1,z2,b1,b2,yd1,yd2;
if ioption == 1;
t = rows(y);
c1 = 1- 7/t;
y1 = y[2:t,.] - y[1:t-1,.].*c1;
y1 = y[1,.]|y1;
z = ones(t,1);
z1 = z[2:t,.] - z[1:t-1,.].*c1;
z1 = z[1,.]|z1;
b1 = invpd(z1'z1)*z1'y1;
yd1 = y - b1';
endif;
if ioption == 2;
t = rows(y);
c2 = 1- 13.5/t;
y2 = y[2:t,.] - y[1:t-1,.].*c2;
y2 = y[1,.]|y2;
z = ones(t,1)~seqa(1,1,t);
z2 = z[2:t,.] - z[1:t-1,.].*c2;
z2 = z[1,.]|z2;
b2 = invpd(z2'z2)*z2'y2;
yd1 = y - b2[1] - seqa(1,1,t).*b2[2];
endif;
retp(yd1);
endp;
proc (2) = ersfish(y1,cdc);
local cyy0,cyx0,cb0,tb0,cs0,ts0,ct0,tt0,pv,i;
local tyy0,tyx0,yy1,yy2;
yy1 = y1;
i = 1;
do while i <= n;
yy1[.,i] = ers(y1[.,i],1);
i = i + 1;
endo;
cyy0 = yy1[2:t,.]; cyx0 = yy1[1:t-1,.];
cb0 = sumc(cyy0.*cyx0)./sumc(cyx0.*cyx0);
cs0 = cyy0 - cyx0.*cb0';
cs0 = meanc(cs0.*cs0)./sumc(cyx0.*cyx0);
ct0 = (cb0-1)./sqrt(cs0);
pv = zeros(cols(cyx0),2);
i = 1;
do while i <= cols(cyx0);
pv[i,1] = minindc(abs(ct0[i] - cdc))./rows(cdc);
i = i + 1;
endo;
pv = ln(pv);
pv = sumc(pv).*(-2);
retp(ct0,pv[1]);
endp;
|