基于鸢尾花数据集,循环计算效应量与样本量的功效报错求助
问题排查与解决
错误原因
pwr.t.test函数中用于指定效应量的参数名称是d(对应Cohen's d值),而非你代码中使用的e,这就是报错提示“unused argument (e = e[j])”的直接原因——该函数不存在名为e的参数。
修正后的代码
# 效应量向量 e <- seq(.2, 1, .1) el <- length(e) # 样本量向量 n <- seq(10, 50, 1) nl <- length(n) # 创建存储功效值的数组 Irispower <- array(numeric(el*nl), dim=c(el,nl)) # 循环计算不同效应量和样本量下的功效 for (i in 1:nl){ # 遍历样本量 for (j in 1:el){ # 遍历效应量 result <- pwr.t.test(n = n[i], d = e[j], sig.level = .05, power = NULL, type = "two.sample", alternative="two.sided") Irispower[j,i] <- ceiling(result$power) } }
额外说明
- 你当前代码还未用到鸢尾花数据集,如果后续需要基于鸢尾花实际数据计算效应量再做功效分析,可以用
effsize包的cohen.d函数先计算真实效应量,再代入循环。 ceiling(result$power)会将功效值向上取整(比如0.83会变成1),如果需要保留功效的精确小数,直接去掉ceiling()即可。
内容的提问来源于stack exchange,提问作者Redd11
相关产品推荐
相关产品推荐

