功率定义为条件概率Pr(reject H0 | H1 is true)。 It can be shown 一个简单的单边 t-test 的功率可以通过以下函数来近似
B <- function(beta, n, sd = 6) {
sem <- sd / sqrt(n)
1 - pnorm(1.64 - beta / sem)
}
这里beta 是效应大小,在这种情况下对应于总体均值(或者在线性模型的语言中,beta 对应于截距)。 n 是样本大小,sd 是描述标准偏差的“可调”参数(因此测量中的不确定性)。我选择了这个值,以便我们(或多或少)从您的图中重现结果。
我们现在可以计算样本大小n 和效应大小beta 的不同值的功效B。我们选择与您显示的图中相同的值。
n <- c(100, 500, 2500, 10000, 50000, 250000)
beta <- c(0.1, 0.2, 0.5, 1.0)
library(tidyverse)
outer(beta, n, B) %>%
data.frame(row.names = beta) %>%
setNames(n) %>%
rownames_to_column("beta") %>%
gather(n, power, -beta) %>%
mutate(
n = as.numeric(n),
beta = factor(beta, unique(beta))) %>%
ggplot(aes(n, power, colour = beta, group = beta)) +
geom_line() +
geom_point() +
scale_y_continuous(labels = scales::percent) +
scale_x_log10() +
labs(x = "sample size (N)", y = "power (%)")
我把微调留给你。调整此示例以适应不同的效应大小、样本大小和标准差也很简单。