大標本理論に基づく仮説検定の有意水準を有限標本で評価(Box-Pierce and Ljung-Box)
プログラム
#include<oxstd.h> main(){ decl cn,creject,crepeat; decl dp,dq1,dq2; decl vg,vr,vx; decl i,j; // cn: sample size, dp:# of autocorrelations // crepeat: number of simulations cn=50;dp=4;crepeat=50000; vg=vr=zeros(dp+1,1);creject=zeros(2,1); for(i=0;i<crepeat;++i){ dq1=dq2=0; // vx=ranu(cn,1)-0.5; // Use, for example, a normal distribution for x. vx=rann(cn,1);vx=vx-meanc(vx); // Autocovariance for(j=0;j<dp+1;++j){vg[j]=(1/cn)*vx[j:cn-1]'*vx[0:cn-j-1];} // Autocorrelation vr=(1/vg[0])*vg; // Box-Pierce Statistics dq1=cn*sumsqrc(vr[1:dp]); // Ljung-Box Statistics for(j=1;j<dp+1;++j){dq2=dq2+vr[j]^2/(cn-j);} dq2=cn*(cn+2)*dq2; // Calculate p-value and test the H0:rho_1=...=rho_4=0 if(tailchi(dq1,dp) < 0.05){creject[0]+=1;} if(tailchi(dq2,dp) < 0.05){creject[1]+=1;} } println("Comparison of Box-Pierce and Ljung-Box tests:", " (Sample Size=",cn,")"); println( "%r",{"Size"}, "%c",{"True","Box-Pierce","Ljung-Box"}, 0.05~creject'/crepeat); }
計算結果
Comparison of Box-Pierce and Ljung-Box tests: (Sample Size=50) True Box-Pierce Ljung-Box Size 0.050000 0.035580 0.050540