2011-01-13 16 views
2

Ich möchte ein Diagramm der Macht vs Effekt Größe machen. Ich habe eine Macht vs Probengröße durchgeführt unter Verwendung:Power vs Effect Größe plot

ptab<-cbind(NULL, NULL)  

for (i in c(1:4588)){ 
    pwrt<-power.t.test(d=.9,n=c(1:4588),sig.level=.05,type="one.sample",alternative="two.sided") 

plot(pwrt$n,pwrt$power,type="b",xlab="sample size",ylab="power") 

aber keine Anweisungen für Power vs Effektgröße finden. Irgendwelche Ideen?

Edit: Guckte nur auf Caracals Antwort (danke Kumpel). Sieht toll aus, aber Ihre Codierung ist völlig anders als meine Versuche:

plot(pwrt$d,pwrt$power,type="b",xlab="effect size",ylab="power") 

obwohl dies nur ein Diagramm mit einem Punkt direkt in der Mitte erzeugt. Ich habe versucht, Caracals Kodierung in meine Stichprobengröße zu konvertieren, und obwohl es funktioniert hat, ist die Grafik verrückt!

Antwort

7

Edit: zeigen Power-Plot für One-Way-ANOVA mit 3 Gruppen sowie für eine Probe t-Test.

P  <- 3        # number of groups for ANOVA 
fVals <- seq(0, 1.2, length.out=100) # effect sizes f for ANOVA 
dVals <- seq(0, 3, length.out=100)  # effect sizes d for t-Test 
nn <- seq(10, 25, by=5)    # group sizes 
alpha <- 0.05       # test for level alpha 

# function to calculate one-way ANOVA power for given group size 
getFPow <- function(n) { 
    critF <- qf(1-alpha, P-1, P*n - P) # critical F-value 

    # probabilities of exceeding this F-value given the effect sizes f 
    # P*n*fVals^2 is the non-centrality parameter 
    1-pf(critF, P-1, P*n - P, P*n * fVals^2) 
} 

# function to calculate one-sample t-Test power for given group size 
getTPow <- function(n) { 
    critT <- qt(1-alpha, n-1)   # critical t-value 

    # probabilities of exceeding this t-value given the effect sizes d 
    # sqrt(n)*d is the non-centrality parameter 
    1-pt(critT, n-1, sqrt(n)*dVals) 
} 

powsF <- sapply(nn, getFPow)  # ANOVA power for for all group sizes 
powsT <- sapply(nn, getTPow)  # t-Test power for for all group sizes 

dev.new(width=10, height=5) 
par(mfrow=c(1, 2)) 
matplot(fVals, powsF, type="l", lty=1, lwd=2, xlab="effect size f", 
     ylab="Power", main="Power one-way ANOVA", xaxs="i", 
     xlim=c(-0.05, 1.1), col=c("blue", "red", "darkgreen", "green")) 
legend(x="bottomright", legend=paste("Nj =", c(10, 15, 20, 25)), lwd=2, 
     col=c("blue", "red", "darkgreen", "green")) 
matplot(dVals, powsT, type="l", lty=1, lwd=2, xlab="effect size d", 
     ylab="Power", main="Power one-sample t-Test", xaxs="i", 
     xlim=c(-0.05, 1.1), col=c("blue", "red", "darkgreen", "green")) 
legend(x="bottomright", legend=paste("N =", c(10, 15, 20, 25)), lwd=2, 
     col=c("blue", "red", "darkgreen", "green")) 

alt text

+0

Dank Kumpel. Probs haben versucht, meine Daten einzufügen. Hast du irgendwelche Tipps? – Archie

+0

@Archie Bearbeitet, um einen t-Test für eine Stichprobe einzubeziehen. – caracal

+0

das ist genial. Vielen Dank! – Archie

2

Um eine grafische Darstellung der Macht vs Effektgröße zu erhalten, brauchen Sie eine Stichprobengröße zu beheben. Hier ist ein kurzes Grundstück für n = 40 (Anmerkung: ein Liniendiagramm, besser sein würde, aber ich bleibe mit Formatierung):

pwrt2 <- power.t.test(d=seq(0,3,by=0.1), power=NULL, n=40, 
     sig.level=.05, type="one.sample", alternative="two.sided") 
plot(pwrt2$d, pwrt2$power, type="b", xlab="effect size",ylab="power") 

alt text