F検定、尤度比検定、ワルド検定、LM検定(プログラム)

? 仮説検定 F検定, 尤度比検定, Wald検定, LM検定
OPTIONS DOUBLE;
FREQ N;
SMPL 1 145;
READ(FILE='nerlove.asc') TC Q PL PF PK;
LTC=LOG(TC);LQ=LOG(Q);LPL=LOG(PL);LPF=LOG(PF);LPK=LOG(PK);
?**********************************************************
?  代入法によるF検定
?**********************************************************
? 制約なしの最小二乗法
? LTC = B1+B2*LQ+B3*LPL+B4*LPK+B5*LPF
?
OLSQ LTC C LQ LPL LPK LPF;
? @SSR:残差平方和, @NOB:観測値の個数, @NCOEF:パラメータの個数
SET SSR_U=@SSR;SET NOBS=@NOB;SET K=@NCOEF;
?
? 制約付き最小二乗法
? H0:B3+B4+B5=1 を仮説テスト。代入法により、B5=1-B3-B4を代入。
? LTC = B1+B2*LQ+B3*LPL+B4*LPK+(1-B3-B4)*LPF
? LTC-LPF = B1+B2*LQ+B3*(LPL-LPF)+B4*(LPK-LPF)
LTCPF=LTC-LPF;LPLPF=LPL-LPF;LPKPF=LPK-LPF;
OLSQ LTCPF C LQ LPLPF LPKPF;SET SSR_R=@SSR;
?
?**********************************************************
?  F検定(残差平方和を用いて計算)
?**********************************************************
? M: 制約式の数, FSTAT:F値
SET M=1;SET FSTAT=((SSR_R-SSR_U)/M)/(SSR_U/(NOBS-K));
PRINT SSR_U SSR_R M NOBS K FSTAT;
? F検定のP値を計算
TITLE 'F TEST';
SET NK=NOBS-K;CDF(F,DF1=M,DF2=NK,UPTAIL) FSTAT;
?**********************************************************
?  尤度比検定(残差平方和を用いて計算)
?**********************************************************
TITLE 'LR TEST';
SET LRT=NOBS*LOG(SSR_R/SSR_U);
CDF(CHISQ,DF=1,UPTAIL) LRT;
?**********************************************************
?  Wald 検定(残差平方和を用いて計算)
?**********************************************************
TITLE 'WALD TEST (USING Maximum Likelihood Estimator FOR SIGMA^2)';
SET W=NOBS*(SSR_R-SSR_U)/SSR_U;
CDF(CHISQ,DF=1,UPTAIL) W;
TITLE 'WALD TEST (USING Least Square Estimator FOR SIGMA^2)';
SET W1=(NOBS-K)*(SSR_R-SSR_U)/SSR_U;
CDF(CHISQ,DF=1,UPTAIL) W1;
?**********************************************************
?  LM 検定(残差平方和を用いて計算)
?**********************************************************
TITLE 'LM TEST';
SET LM=NOBS*(SSR_R-SSR_U)/SSR_R;
CDF(CHISQ,DF=1,UPTAIL) LM;
?**********************************************************
?  ANALYZコマンドによるWald検定とF検定
?**********************************************************
OLSQ LTC C LQ LPL LPK LPF;
FRML EQ1 LPL+LPK+LPF-1;
TITLE 'F TEST USING ANALYZ';
ANALYZ EQ1;
?**********************************************************
?  尤度比検定 (尤度を用いて計算)
?**********************************************************
PARAM B1-B5 S2;
? 初期値を最小二乗推定値に設定
SET B1=@COEF(1);SET B2=@COEF(2);SET B3=@COEF(3); 
SET B4=@COEF(4);SET B5=@COEF(5);SET S2=@S2;SET PI=3.141592;
? 制約のない最尤推定
? ※この場合の最尤推定の結果は初期値とアルゴリズムのオプションで結果がやや不安定
TITLE 'UNCONSTRAINED ML ESTIMATION';
FRML EQ_U LOGL=-0.5*LOG(2*PI)-0.5*LOG(S2)-(LTC-B1-B2*LQ-B3*LPL-B4*LPK-B5*LPF)**2/(2*S2);
ML(MAXIT=100)  EQ_U;SET LOGL_U=@LOGL;
? B3+B4+B5=1という制約の下での最尤推定
TITLE 'CONSTRAINED ML ESTIMATION: B3+B4+B5=1';
FRML EQ_R LOGL=-0.5*LOG(2*PI)-0.5*LOG(S2)-(LTC-B1-B2*LQ-B3*LPL-B4*LPK-(1-B3-B4)*LPF)**2/(2*S2);
ML(MAXIT=100)  EQ_R;SET LOGL_R=@LOGL;
? 尤度比検定
TITLE 'LR TEST AFTER ML ESTIMATION';
SET LR=-2*(LOGL_R-LOGL_U);CDF(CHISQ,DF=1,UPTAIL) LR;