R语言绘制统计功效与重复量关系图及筛选显著p值计算系数均值
R模拟统计功效相关操作实现方案
1. 计算显著模型的系数均值
你可以通过逻辑索引匹配同一次模拟的p值和对应系数,直接在现有代码末尾添加以下代码即可实现需求:
# 筛选p<0.05的模拟对应的系数,计算均值 sig_coef_mean <- mean(coef[p < 0.05], na.rm = TRUE) print(sig_coef_mean)
逻辑说明:你的代码中p和coef两个向量的索引是一一对应的,第i位的p值就是第i次模拟的检验结果,和第i位的系数完全匹配。用p < 0.05生成的布尔序列作为索引,即可精准筛选出所有显著次对应的系数再求均值,添加na.rm = TRUE参数是为了避免模拟过程中出现异常值导致计算报错。
2. 扩展:绘制统计功效与重复样本量的关系图
你可以将单次固定n的模拟逻辑封装为函数,遍历不同重复样本量计算对应功效后绘图,示例实现代码如下:
library(car) library(ggplot2) # 定义单组重复量对应的功效计算函数 calc_power <- function(n, nsims = 1000) { p <- vector(length = nsims) for (i in 1:nsims) { treat <- rnorm(n, mean = 460, sd = 110) cont <- rnorm(n, mean = 415, sd = 110) df <- data.frame( y = c(treat, cont), x = rep(c("treat", "cont"), each = n) ) model <- glm(y ~ x, data = df) p[i] = Anova(model)$P } return(sum(p < 0.05) / nsims) } # 设置要测试的重复样本量序列,可根据需求调整范围和步长 n_seq <- seq(3, 30, 2) # 批量计算每个重复量对应的统计功效 power_res <- sapply(n_seq, calc_power) # 绘制关系图 plot_df <- data.frame(n = n_seq, power = power_res) ggplot(plot_df, aes(x = n, y = power)) + geom_line(color = "steelblue", linewidth = 1) + geom_point(size = 2) + labs(x = "重复样本量", y = "统计功效") + theme_bw()
内容的提问来源于stack exchange,提问作者Alison Meeth
相关产品推荐
相关产品推荐

