大標本理論に基づく仮説検定の有意水準を有限標本で評価
プログラム
#include<oxstd.h> main(){ decl cK,cn,crepeat,i; decl dc,dphi,dsigma2,ds2; decl vb,vbeta,ve,vepsilon,veta,vreject,vtvalue,vx,vy; decl mX,mSb; // cn: sample size, crepeat:number of simulations cn=30;crepeat=50000; // true values vbeta=<1;0.5>;dsigma2=1;dc=2;dphi=0.6; cK=rows(vbeta);vreject=zeros(2,1); // generate x // x_0 => N(dc/(1-dphi), 1/(1-dphi^2)). vx=zeros(cn,1);vx[0]=dc/(1-dphi)+rann(1,1)/sqrt(1-dphi^2); // x_t=dc+dphi*x_{t-1}+eta_t, eta_t=> N(0,1) veta=rann(cn-1,1); for(i=0;i<cn-1;++i){vx[i+1]=dc+dphi*vx[i]+veta[i];} // vtvalue=zeros(crepeat,1); for(i=0;i<crepeat-1;++i){ // Generate y_t=beta_1+beta_2*x_t+epsilon_t // // If epsilon_t => U(-0.5,-0.5), vepsilon=ranu(cn,1)-0.5; // If epsilon_t => N(0,sigma2), // vepsilon=sqrt(dsigma2)*rann(cn,1); vy=vbeta[0]+vbeta[1]*vx+vepsilon; mX=ones(cn,1)~vx; // X matrix vb=invert(mX'*mX)*mX'*vy; // beta-hat ve=vy-mX*vb; // residual ds2=ve'*ve/(cn-cK); // estimate of sigma^2 mSb=ds2*invert(mX'*mX); // estimated covariance matrix of beta-hat // Calculate t ratio for H0: beta2=0 vtvalue[i]=(vb[1]-vbeta[1])/sqrt(mSb[1][1]); if(tailt(fabs(vtvalue[i]),cn-cK) < 0.025){vreject[0]+=1;} if(tailn(fabs(vtvalue[i])) < 0.025){vreject[1]+=1;} } println("Estimated Size of tests:", " (Sample Size=",cn,")"); println( "%r",{"Size"}, "%c",{"True", "t", "Normal"},0.05~vreject'/crepeat); }
計算結果
Estimated Size of tests: (Sample Size=30) True t Normal Size 0.050000 0.049580 0.058440