参考资料:R语言实验【第2版】
假设对于相关系数统计显著性检验,我们想计算一系列效应值和功效水平下所需的样本量,此时可用pwr.r.test()函数和for循环来完成任务。
# 加载pwr包
library(pwr)
# 设置各效应值
r<-seq(0.1,0.5,0.01)
# 计算r序列的长度
nr<-length(r)
# 设置各功效值
p<-seq(0.4,0.9,0.1)
# 计算p序列的长度
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(r=r[j],sig.level=0.05,power=p[i],
alternative = "two.sided")
samsize[j,i]<-ceiling(result$n)
}
}
# 绘制图形
xrange<-range(r)
yrange<-range(range(samsize))
colors<-rainbow(length(p))
plot(xrange,
yrange,
type="n",
xlab="Correlation Coefficient (r)",
ylab="Sample Size(n)")
# 添加功效曲线
for(i in 1:np){
lines(r,samsize[,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],0.02),lty=2,col="gray89")
# 添加注释
title("Sample Size Estimation for Correlation Students\nSig=0.05(Two-tailed)")
legend("topright",title="Power",as.character(p),fill=colors)
由上图可知:在40%功效水平下,要检测到0.2的相关性,需要约75的样本量。在90%的功效水平下,要检测到相同的相关性,需要大约250个样本,这个方法便可以用来对许多统计检验创建样本量和功效的曲线图。