* sizeanova_mixed.sps ----------------------- ver 1.0 by khori. title "1•Ï”‚ª”팱ŽÒŠÔ—vˆöC‚P•Ï”‚ª”팱ŽÒ“à—vˆö‚Ì•K—vƒTƒ“ƒvƒ‹”". * effect size index f=. * small f=.10 : medium f=.25: large f=.40 Cohen(1988). preserve. set printback=none. data list free/name(a6) esize alpha powd rho between within. begin data small .10 0.05 .80 .60 3 4 medium .25 0.05 .80 .60 3 4 large .40 0.05 .80 .60 3 4 medium .25 0.05 .80 .60 2 2 end data. compute f1g=between. compute f2g=within. string ftype(a8). compute ixj=(f1g-1)*(f2g-1). compute nixj=f1g*f2g. compute f1g1=f1g-1. compute f2g1=f2g-1. compute eps0=1/f2g1. compute eps1=0.5. if (eps0>=eps1) eps1=(1+eps0)/2. string name1(a6). compute name1=name. do if $casenum = 1 . write //' ‚QŒ³•ªŽU•ªÍ(mixed design)‚Ì•K—vƒTƒ“ƒvƒ‹”' // '—vˆö Œø‰Ê—Êf @ƒ¿ power ‘ŠŠÖ dfh dfe 1ŒQn ®”1ŒQ ®”‘Sn'. end if. exec. compute s1=1. do repeat dfh=f1g1 f2g1 f2g1 s1 ixj ixj f1g1/ ft='between' 'within' 'within' 'within' 'b x w' 'b x w' 'b x w'/level=f1g f2g f2g f2g nixj nixj nixj /type=1 to 7. compute ftype=ft. *initialize values. compute powa=0.0. compute n=0. if (type=1) f2=esize**2*(f2g/(1+(f2g-1)*rho)). if (type>1) f2=esize**2*f2g/(1-rho). if (type=3 or type=6) eps=eps1. if (type=4 or type= 7) eps=eps0. if (type=3 ) dfh=f2g1*eps. if (type=6 ) dfh=ixj*eps. if (type=3 or type=4 or type=6 or type=7) f2=f2*eps. compute alpha2=alpha. loop if (powa<=powd). compute n=n +100. if (type=1) dfe=n-f1g. if (type>1) dfe=(n-f1g)*(f2g-1). if (type=3 or type=4 or type=6 or type=7) dfe=dfe*eps. compute lambda=f2*n. compute f_alpha=idf.f(1-alpha2,dfh,dfe). compute powa=1-ncdf.f(f_alpha,dfh,dfe,lambda). end loop. *begin loop for interval halving. compute dir=-1. compute newn=n. compute intv=200. compute powdiff=powa-powd. loop if (powdiff>=.000001). compute intv=intv*.5. compute newn=newn +dir*intv*.5. *compute new power. if (type=1) dfe=newn-f1g. if (type>1) dfe=(newn-f1g)*(f2g-1). if (type=3 or type=4 or type=6 or type=7) dfe=dfe*eps. compute lambda=f2*newn. *compute power . compute f_alpha=idf.f(1-alpha2,dfh,dfe). compute powa=1-ncdf.f(f_alpha,dfh,dfe,lambda). compute powdiff=abs(powa-powd). do if (powa