The following four quantities have an intimate relationship:
Given any three, we can determine the fourth.
library(pwr)
## Warning: package 'pwr' was built under R version 4.1.2
n2 = pwr.2p2n.test(h = 0.8 , n1 = 80, sig.level=0.05,power=0.8 )
h = pwr.2p2n.test(n2 = 20 , n1 = 80, sig.level=0.05,power=0.8 )
power = pwr.2p2n.test(h = 0.8 , n1 = 80, n2 = 20, sig.level=0.05)
cat("n2 =",n2$n2)
## n2 = 14.48425
cat("h =",h$h)
## h = 0.700393
cat("power =", power$power)
## power = 0.8925191
power = pwr.t2n.test(n1 = 30 , n2 = 35 , d = 0.5, sig.level = 0.05)
sig_lvl = pwr.t2n.test(n1 = 30 , n2 = 35 , d = 0.8, power = 0.85, sig.level=NULL)
cat("power =",power$power)
## power = 0.5076005
cat("significance level =",sig_lvl$sig.level)
## significance level = 0.03390876
samp_size = pwr.t.test(d = 0.5 , sig.level = 0.05 , power = 0.85)
cat("sample size =",samp_size$n)
## sample size = 72.80046
samp_size = pwr.r.test(n = , r = 0.3, sig.level = 0.05, power = 0.9)
cat("sample size =",samp_size$n)
## sample size = 111.8068
library(pwr)
par(mfrow=c(1,1))
r <- seq(.1,.5,.01)
nr <- length(r)
p <- seq(.4,.9,.1)
np <- length(p)
samsize <- array(numeric(nr*np), dim=c(nr,np))
for (i in 1:np){
for (j in 1:nr){
result <- pwr.r.test(n = NULL, r = r[j],
sig.level = .05, power = p[i],
alternative = "two.sided")
samsize[j,i] <- ceiling(result$n)
}
}
xrange <- range(r)
yrange <- round(range(samsize))
colors <- rainbow(length(p))
plot(xrange, yrange, type="n",
xlab="Correlation Coefficient (r)",
ylab="Sample Size (n)" )
# add power curves
for (i in 1:np){
lines(r, samsize[,i], type="l", lwd=2, col=colors[i])
}
# add annotation (grid lines, title, legend)
abline(v=0, h=seq(0,yrange[2],50), lty=2, col="grey89")
abline(h=0, v=seq(xrange[1],xrange[2],.02), lty=2,
col="grey89")
title("Sample Size Estimation for Correlation Studies\n
Sig=0.05 (Two-tailed)")
legend("topright", title="Power", as.character(p),
fill=colors)
######################################################### library(pwr) # range of correlations r <- seq(.1,.5,.01) nr <- length(r)
p <- seq(.4,.9,.1) np <- length(p)
power <- array(numeric(nr*np), dim=c(nr,np)) for (i in 1:np){ for (j in 1:nr){ result <- pwr.r.test(n = 30, r = r[j], sig.level = .05, power = NULL, alternative = “two.sided”) power[j,i] <- ceiling(result$n) } }
xrange <- range(r) yrange <- round(range(power)) colors <- rainbow(length(p)) plot(xrange, yrange, type=“n”, xlab=“Correlation Coefficient (r)”, ylab=“Sample Size (n)” )
for (i in 1:np){ lines(r, power[,i], type=“l”, lwd=2, col=colors[i]) }
abline(v=0, h=seq(0,yrange[2],50), lty=2, col=“grey89”) abline(h=0, v=seq(xrange[1],xrange[2],.02), lty=2, col=“grey89”) title(“Sample Size Estimation for Correlation Studies Sig=0.05 (Two-tailed)”) legend(“topright”, title=“Power”, as.character(p), fill=colors)