I sent a message a couple days ago about doing calculations for power of the
ANOVA. Several people got back to me very quickly which I really
appreciated.

I'm working now on a similar problem, but instead of a balanced ANOVA, I
have an unbalanced one. The first part of the question was:

You assume that the within-population standard deviations all equal 9. You
set the Type 1 error rate at á = .05. You presume that the population means
will have the following values: uA = 17.5, uB = 19, uC = 25, and uD = 20.5.
You intend to run 80 subjects in all, with equal n's across all 4 groups.
You plan on conducting a one-way ANOVA. Compute your power to reject the
null hypothesis under these conditions.

I did:

within.var = 9 ^ 2
means = c(17.5, 19, 25, 20.5)
N = 80
J = length(means)
power.anova.test(groups = J, n = N / J,
                 between.var = var(means),
                 within.var = within.var,
                 sig.level = 0.05)

This gives me 0.6155 which agrees with SAS. The next problem though is:

You have the same Type 1 error rate and make the same assumptions about the
population standard deviation and the population means as in part a. You
still have 80 subjects in all but now you want to know how power might
change by running 10 subjects in groups A, B, and D and 50 subjects in group
C. Determine the power under this subject allocation scheme.

For this one I am doing:

# Quantile of the cutoff point in the central F
central.quant = qf(.05, J - 1, N - J, lower.tail = FALSE)
weighted.means = data.frame(Mean = means, Weight = c(10, 10, 50, 10))
# Noncentrality parameter for unbalanced ANOVA
noncentral.param = 0
for(i in 1:length(weighted.means$Mean)) {
  noncentral.param = (noncentral.param + weighted.means$Weight[i] *
                      (weighted.means$Mean[i] - mean(weighted.means$Mean)) ^
2)
}
noncentral.param = noncentral.param / within.var
# Probability of central quantile in noncentral distribution
noncentral.p = pf(central.quant, J - 1, N - J, noncentral.param,
lower.tail= FALSE)
noncentral.p

The logic behind this is in my assignment at:

http://odin.himinbi.org/classes/psy304b/homework_2.xhtml#p2b

This works for a balanced ANOVA and gives the same result as
power.anova.test (and SAS). For the unbalanced ANOVA though it is giving me
a different result though than SAS, 0.8759455 versus 0.680.

So is there a straightforward way to compute the power of an unbalanced
ANOVA? If there isn't, does anyone have any idea what is wrong with my code?
The SAS I am comparing it to is:

Data Dep;
Input cue $ mean uneven_weight;
datalines;
A 17.5  1
B 19    1
C 25    5
D 20.5  1
;

proc glmpower;
class cue;
model mean = cue;
weight uneven_weight;
power
        stddev = 9
        alpha = 0.05
        ntotal= 80
        power = .;
run;

Any help would be much appreciated.

Will

	[[alternative HTML version deleted]]

