increase sample size:但是必须给出统计学上的理由
- Power estimation
library(pwr)
# t检验
power_t_test <- function(m1, m2, sd1, sd2, n1, n2, alpha = 0.05) {
sd_pooled <- sqrt(((n1 - 1) * sd1^2 + (n2 - 1) * sd2^2) / (n1 + n2 - 2))
d <- (m1 - m2) / sd_pooled
power <- pwr.t.test(n = n1 + n2, d = d, sig.level = alpha, type = "two.sample", alternative = "two.sided")$power
return(list(d = d, power = power))
}
# Wilcoxon秩和检验
power_wilcox_test <- function(z, n, alpha = 0.05) {
r <- z / sqrt(n)
power <- pwr.r.test(n = n, r = r, sig.level = alpha)$power
return(list(r = r, power = power))
}
# 单因素方差分析
power_anova_test <- function(ss_between, ss_total, n, k, alpha = 0.05) {
eta_sq <- ss_between / ss_total
f <- sqrt(eta_sq / (1 - eta_sq))
power <- pwr.anova.test(k = k, n = n, f = f, sig.level = alpha)$power
return(list(eta_sq = eta_sq, f = f, power = power))
}
# Fisher's精确检验和卡方检验
power_fisher_chisq_test <- function(chi_sq, n, k, alpha = 0.05) {
if (k == 2) {
effect_size <- sqrt(chi_sq / n)
} else {
effect_size <- sqrt(chi_sq / (n * (k - 1)))
}
power <- pwr.chisq.test(w = effect_size, N = n, df = (k - 1) * (k - 1), sig.level = alpha)$power
return(list(effect_size = effect_size, power = power))
}
# 示例用法
t_test_result <- power_t_test(m1 = 10, m2 = 12, sd1 = 2, sd2 = 2.5, n1 = 30, n2 = 30)
print(t_test_result)
wilcox_test_result <- power_wilcox_test(z = 2.5, n = 50)
print(wilcox_test_result)
anova_test_result <- power_anova_test(ss_between = 100, ss_total = 500, n = 10, k = 3)
print(anova_test_result)
fisher_chisq_test_result <- power_fisher_chisq_test(chi_sq = 8, n = 100, k = 2)
print(fisher_chisq_test_result)
好的,我来解释一下这些函数中使用的统计量:
-
power_t_test
函数:d
: 这是Cohen's d效应量,用于衡量两组平均值之间的差异大小。它是两组平均值的差值除以pooled标准差。power
: 这是在给定效应量和样本量的情况下,t检验能够检测到真实效应的概率。
-
power_wilcox_test
函数:r
: 这是Wilcoxon秩和检验的效应量,计算方式为标准化的Wilcoxon统计量z除以sqrt(n)。power
: 这是在给定效应量和样本量的情况下,Wilcoxon秩和检验能够检测到真实效应的概率。
-
power_anova_test
函数:eta_sq
: 这是η^2效应量,用于衡量在单因素方差分析中,因子对总变异的解释程度。它等于因子平方和除以总平方和。f
: 这是f效应量,与η^2相关,计算方式为sqrt(eta_sq / (1 - eta_sq))。power
: 这是在给定效应量和样本量的情况下,单因素方差分析能够检测到真实效应的概率。
-
power_fisher_chisq_test
函数:effect_size
: 这是效应量,对于2x2列联表,计算方式为sqrt(chi_sq / n);对于其他情况,计算方式为sqrt(chi_sq / (n * (k - 1)))。power
: 这是在给定效应量和样本量的情况下,Fisher's精确检验或卡方检验能够检测到真实效应的概率。
总的来说,这些函数中使用的统计量包括Cohen's d、Wilcoxon秩和检验的r、η^2、f和卡方检验的效应量,它们都是衡量效应大小的指标。通过这些指标和样本量,可以计算出相应检验的统计力。
怎么阐述这些理由:
The current study has not enough power - it can detect differences between groups with the probability of xx. That may cause high-level of type-II error. If we want to achieve at least 0.8 power, we need to have that many animals in each group, and the groups must be balanced.
然后下面用power = 0.8作为阈值,看看需要的n大小是多少
pwr.anova.test(k = k, f = f, sig.level = alpha, power=0.8)
标签:建议,power,sq,效应,test,检验,样本量,解决,方法
From: https://www.cnblogs.com/chen-heybro/p/18208018