In an earlier post, I talked about what the Power of a test is and how it interplays with sample size. During our session we used the SAS Power and Sample Size standalone package that can be installed with the initial installation of SAS*. But, we can also use syntax and in particular, PROC POWER and PROC GLMPOWER to calculate power or sample size of your trial as well. This post will use the same examples as the previous post.
PROC POWER
Example #1
We are designing an independent samples t-test to see whether males drink more milk than females. We need a number of pieces of information to determine the power of the test. We need the following:
- average milk consumed by males (used to calculate the difference between groups)
- average milk consumed by females (used to calculate the difference between groups)
- standard deviation of milk consumed (measure of variation)
- sample size
Average milk consumed by males = 8 glasses/day
Average milk consumed by females = 5 glasses/day
Standard deviation = 2
Sample size 5 males and 5 females
For independent samples t-test we will use the PROC POWER.
Proc power;
twosamplemeans test = diif
meandiff = 3
stddev = 2
npergroup = 5
power = .;
Run;
twosamplemeans | specifies the analysis you are testing for – ttest in this case |
Test = diff | specifies that we are looking for the difference between means |
meandiff = 3 | the difference between the means is 3 – 8 glasses/day drunk by males subtract the 5 glasses/day drunk by females |
stddev = 2 | standard deviation |
npergroup = 5 | there were 5 males and 5 females |
power = . | set this is what we want SAS to calculate – the power of the ttest based on the parameters out. |
Results: Still to come
Proc POWER can also be used to determine the number of observations needed for each group in order to obtain a specified Power. If we use the above example again, set the power to 0.80, let’s see how many observations we need. The coding to run this will be:
Proc power;
twosamplemeans test = diif
meandiff = 3
stddev = 2
npergroup = .
power = 0.80;
Run;
Notice the change?
npergroup = . vs. npergroup = 5 AND power = . vs. power = 0.80
Final note on PROC POWER
In the above example we were looking for the power (and npergroup) for a trial set out as an independent t-test design. PROC POWER can be used for the following additional designs:
- Logistic regression
- Multiple linear regression
- Fisher’s z test and t test of partial correlation
- Single binomial proportion
- One sample t test
- One way ANOVA
- McNemar’s test for paired proportions
- Paired t test
- Two independent proportions
- Two sample t test
- Two survival curves
- Two independent groups
To view syntax details on these analyses please see the SAS Support pages
PROC GLMPOWER
So, what happens if you have a factorial design? PROC GLMPOWER is your answer. Let’s take a look at our second example and see how we can use PROC GLMPOWER to calculate sample size required to obtain a power of 80%.
Example #2
We are now designing an ANOVA with 2×3 factorial design. We want to examine whether male and female dodo birds have different beek lengths when housed in a small, medium or large yard. We were able to obtain means and a standard deviation from a study conducted in Atlantis centuries ago and now we need to know how many dodo birds we need in order to obtain a power of 80%.
Based on the paper from Atlantis we have the following means:
Males in small yard: 12
Females in small yard: 8
Males in medium yard: 21
Females in medium yard: 21
Males in large yard: 46
Females in large yard: 39
Overall standard deviation reported in the paper was: 4
First step is to create a dataset that will contain the cell means identified above.
Data atlantis;
do sex = 1 to 2;
do housing = 1 to 3;
input beek_length @@;
end;
end;
datalines;
12 21 46
8 21 39
;
Run;
To calculate sample size – we need PROC GLMPOWER
Proc glmpower data=atlantis;
class sex housing;
model beek_length = sex | housing;
power
stddev = 4
ntotal = .
power = 0.80;
Run;
class sex housing; | specifying the class variables to be used in the model |
model beek_length = sex | housing; | model for which we want to calculate sample size |
power | telling SAS that we are going to run a power analysis |
stddev = 4 | Standard deviation for the trial |
ntotal = . | specifying that we want to calculate sample size |
power = 0.80; | specifying the power of this design is 80% |
Results: Still to come
Final note on PROC GLMPOWER
Just as with PROC POWER, PROC GLMPOWER is used for many variations. Please check the SAS Support pages for more details and options available.