抱歉,那个命令错了一个字母。请用如下命令。
title"Computation of min sample size for test of fit";
data one;
rmsea0=.05;*null hyp rmsea;
rmseaa=.08;*alt hyp rmsea;
d=15;*degrees of freedom;
alpha=.05;*alpha level;
powd=.80;*desired power;
*initialize values;
powa=0.0;
n=0;
*begin loop for finding initial level of n;
do until (powa>powd);
n+100;
ncp0=(n-1)*d*rmsea0**2;
ncpa=(n-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
end;
*begin loop for interval halving;
dir=-1;
newn=n;
intv=200;
powdiff=powa-powd;
do until(powdiff<.001);
intv=intv*.5;
*compute new power;
ncp0=(newn-1)*d*rmsea0**2;
ncpa=(newn-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
powdiff=abs(powa-powd);
if powa<powd then dir=1;else dir=-1;
end;
minn=newn;
output;
proc print data=one;
var rmsea0 rmseaa powd alpha d minn powa; run;


雷达卡
京公网安备 11010802022788号







