FAQ/power/rmPowN - CBU statistics Wiki

Revision 9 as of 2006-10-17 14:51:44

Clear message
location: FAQ / power / rmPowN
  • alpha is likelihood of making a type I error (usually = 0.05)
  • etasq is partial eta-squared/100 so, for example, 5.9% = 0.059
  • Num(erator) is product over factors comprising term of interest of (numer of levels of factor -1)
  • d1 is sum over the factors of (number of levels of between subject factor - 1)

  • d2 is the product over the factors of (number of levels os within subject factor - 1)

  • POWER is the power of the test

[ COPY AND PASTE THE BOXED BELOW SYNTAX BELOW INTO A SPSS SYNTAX WINDOW AND RUN; ADJUST INPUT DATA AS REQUIRED]

 DATA LIST free
/alpha etasq num d1 d2 power. 
BEGIN DATA. 
.05 0.02 2 3 2 0.23
.05 0.12 2 3 2 0.93
END DATA.

matrix.
get m /variables=alpha etasq num d1 d2 power  /missing=omit.
compute alpha=make(1,1,0).
compute etasq=make(1,1,0).
compute num=make(1,1,0).
compute d1=make(1,1,0).
compute d2=make(1,1,0).
compute power=make(1,1,0).
compute alpha=m(:,1).
compute etasq=m(:,2).
compute num=m(:,3).
compute d1=m(:,4).
compute d2=m(:,5).
compute power=m(:,6).
end matrix.


define apow   (!pos !tokens(1)
                   / !pos !tokens(1)
                   / !pos !tokens(1)
                   / !pos !tokens(1)
                   / !pos !tokens(1)
                   / !pos !tokens(1)).

COMPUTE #POW = !6.

compute #conf = (1-!1).
compute #lc3 = 1.
compute #ind=0.
compute ntot = 700.000.
comment COMPUTE #LC1 = 2.000.
compute denom=(ntot-1-!4)*!5.
COMPUTE #CUMF2 = 1 - NCDF.F(IDF.F(#conf,!3,denom),!3,denom,denom*!2/(1-!2)).
COMPUTE #DIFF=1.
SET MXLOOPS=10000.
LOOP IF (#DIFF GT .00005) .
+       DO IF (#CUMF2 GT #pow) .
+               COMPUTE #LC3 = ntot.
+               COMPUTE ntot = (Ntot - rnd(1)).
+                      COMPUTE denom=(ntot-1-!4)*!5.                      
+               COMPUTE #CUMF2 = 1 - NCDF.F(IDF.F(#conf,!3,denom),!3,denom,denom*!2/(1-!2)).
+       ELSE .
+               COMPUTE #LC1 = ntot.
+               COMPUTE ntot = (ntot + #LC3)/2.
+                      COMPUTE denom=(ntot-1-!4)*!5.
+               COMPUTE #CUMF2 = 1 - NCDF.F(IDF.F(#conf,!3,denom),!3,denom,denom*!2/(1-!2)).
+          END IF. 
+       COMPUTE #DIFF = ABS(#CUMF2 - #pow) .
END LOOP .
compute pow2 = 1 - NCDF.F(IDF.F(#conf,!3,denom),!3,denom,denom*!2/(1-!2)).
if (ntot-trunc(ntot) gt 0.5) #ind=1.
if (#ind eq 0) ntot=trunc(ntot)+1.
if (#ind eq 1) ntot=rnd(ntot).
EXECUTE .
compute alpha=!1.
compute etasq=!2.
compute num=!3.
compute d1=!4.
compute d2=!5.
compute power=!6.
compute denom=(ntot-1-d1)*d2.
formats ntot (f7.0) alpha (f5.2) num (f5.2) denom (f5.2) etasq (f5.2) power (f5.2).
variable labels ntot 'Total Sample Size Required' /alpha 'Alpha' /num 'Numerator' /denom 'Denominator' /etasq 'Partial Eta-Sq' /power 'Power'.
report format=list automatic align(center)
  /variables=ntot alpha num denom etasq power 
  /title "Anova term sample size for given power (any anova)" .
!enddefine.
matrix.
get m /variables=alpha etasq num d1 d2 power  /missing=omit.
compute alpha=make(1,1,0).
compute etasq=make(1,1,0).
compute num=make(1,1,0).
compute d1=make(1,1,0).
compute d2=make(1,1,0).
compute power=make(1,1,0).
compute alpha=m(:,1).
compute etasq=m(:,2).
compute num=m(:,3).
compute d1=m(:,4).
compute d2=m(:,5).
compute power=m(:,6).
end matrix.
apow alpha etasq num d1 d2 power.