使用R语言对数据功效分析 – pwr包
文章目录
首先我们要知道什么是一型错误和二型错误
拒绝H0 | 不拒绝H0 | |
---|---|---|
H0为真 | 一型错误 | 正确 |
H0为假 | 证确 | 二型错误 |
用pwr包做功效分析时候,对于每个函数,可以设置4个变量(样本大小, 显著水平, 功效和效应值)且 知道三个求一个
其实我比较迷惑的是,效应值到底是个什么玩意儿。
不用着急,在学习完之后,会有一些了解
函数 | 功效计算的对象 |
---|---|
pwr.2p.test | 两比例(n相等) |
pwr.2p2n.test | 两比例(你不想等) |
pwr.anova.test | 平衡的one-way ANOVA |
pwr.chisq.test | 卡方检验 |
pwr.f2.test | 广义线性模型 |
pwr.p.test | 比例(单样本) |
pwr.t.test | 相关系数 |
pwr.t.test | t检验 |
pwr.t2n.test | t检验(n不相等的两样本) |
注: 不同的函数对应的效应值不同,可以使用help()函数查看具体的效应值如何计算。
10.2.1 t检验
?pwr.t.test()
pwr.t.test(n = NULL, d = NULL, sig.level = 0.05, power = NULL,
type = c("two.sample", "one.sample", "paired"),
alternative = c("two.sided", "less", "greater"))
n为样本大小,d是效应值, sig.level显著型水平,power功效,
type 是样本类型, alternative 是单双边检验,
若效应值为0.8,sig.level = 0.05, 如果差异存在希望90% 的把握检测出来,则
> pwr.t.test(d = 0.8, sig.level = 0.05, power = 0.9,
+ type = "two.sample",
+ alternative = "two.sided")
Two-sample t test power calculation
n = 33.82555
d = 0.8
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
可以看出需要 34 x 2 = 68 个样本
10.2.2 方差分析
pwr.anova.test() 可以对平衡的单因素ANOVA进行功效分析
> ?pwr.anova.test()
pwr.anova.test(k = NULL, n = NULL, f = NULL, sig.level = 0.05, power = NULL)
k 是组的个数,f 是效应值(ES)
比如现在对五个组做单因素方差分析,要到达0.8的功效,效应值(ES)为0.25, 比如现在对五个组做单因素方差分析,要到达0.8的功效,效应值(ES)为0.25
> pwr.anova.test(k = 5, f = 0.25, sig.level = 0.05, power = 0.8)
Balanced one-way analysis of variance power calculation
k = 5
n = 39.1534
f = 0.25
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
可以看出需要 40 x 5 = 200 个样本
10.2.3 相关性
对相关性进行功效分析改怎么做呢
?pwr.r.test()
pwr.r.test(n = NULL, r = NULL, sig.level = 0.05, power = NULL,
alternative = c("two.sided", "less","greater"))
r 是效应值(ES)通过线性相关系数衡量,
比如: 现在研究抑郁 和 孤独的关系: 零假设H0:p<0.25。 备择假设H1:p>0.25.
p 是两种心理疾病的相关性, 假设显著性水平是0.05, 如果H0是错误的,且你想有90%的把握拒绝他, 则
> pwr.r.test(r = 0.25, sig.level = 0.05, power = 0.9,
+ alternative = "two.sided")
approximate correlation power calculation (arctangh transformation)
n = 163.1837
r = 0.25
sig.level = 0.05
power = 0.9
alternative = two.sided
可以看出, 在双尾检测下需要164个观测
> pwr.r.test(r = 0.25, sig.level = 0.05, power = 0.9,
+ alternative = "greater")
approximate correlation power calculation (arctangh transformation)
n = 133.2803
r = 0.25
sig.level = 0.05
power = 0.9
alternative = greater
然而在单尾检测下,只需要134个个体
10.2.4 线性模型 - pwr.f2.test()
对于线性模型(如,多元回归),可以使用pwr.f2.test()函数完成相关的功效分析
?pwr.f2.test()
pwr.f2.test(u = NULL, v = NULL, f2 = NULL, sig.level = 0.05, power = NULL)
其中u, v 是分子和分母的自由度, f2 是效应值(ES)
f 2 = R 2 / ( 1 − R 2 ) f^2 = R^2/(1-R^2) f2=