*sizeoneway_repeated.sps by k.hori. title "必要サンプル数(反復測定1元分散分析)". * 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 levels . begin data small 0.10 0.05 0.80 0.0 3 medium 0.25 0.05 0.80 0.0 3 large 0.40 0.05 0.80 0.0 3 small 0.10 0.05 0.80 0.3 3 medium 0.25 0.05 0.80 0.3 3 large 0.40 0.05 0.80 0.3 3 small 0.10 0.05 0.80 0.6 3 medium 0.25 0.05 0.80 0.6 3 large 0.40 0.05 0.80 0.6 3 end data. *initialize values. compute f2=esize**2/(1-rho). compute dfh=levels-1. compute eps0=1/dfh. compute eps1=0.5. if (eps0>=eps1) eps1=(1+eps0)/2. compute p1=-1. recode p1(-1=sysmis). compute p2=p1. compute p3=p1. format p1 to p3 rho(f5.3) esize(f5.3) levels(f5.0) . do repeat powa=powa1 powa2 powa3/eps=1.0 eps1 eps0/minn=minn1 minn2 minn3. compute powa=0.0. compute n=0. compute levels2=levels*eps. loop if (powa<=powd). compute n=n +100. compute dfh2=dfh*eps. compute dfe=(n-1)*dfh2. compute lambda=f2*n*levels2. compute f_alpha=idf.f(1-alpha,dfh2,dfe). compute powa=1-ncdf.f(f_alpha,dfh2,dfe,lambda). end loop. *begin loop for interval halving. compute dir=-1. compute newn=n. compute intv=200. compute powdiff=powa-powd. compute levels2=levels*eps. loop if (powdiff>=.0001). compute intv=intv*.5. compute newn=newn +dir*intv*.5. *compute new power. compute dfh2=dfh*eps. compute dfe=(newn-1)*dfh2. compute lambda=f2*newn*levels2. *compute power . compute f_alpha=idf.f(1-alpha,dfh2,dfe). compute powa=1-ncdf.f(f_alpha,dfh2,dfe,lambda). compute powdiff=abs(powa-powd). do if (powa