如何将R语言epiR包epi.tests的Point estimates and 95% CIs转为data.frame
提取epi.tests输出中的"Point estimates and 95% CIs"并转为data.frame
问题描述
在R语言中使用epiR包的epi.tests函数时,需要提取输出里的Point estimates and 95% CIs部分,并将其转换为标准的data.frame格式。
解决方案
epi.tests的返回结果是epi.tests类的列表,其中$detail元素已经包含了所有统计量的点估计值和置信区间,只需筛选出对应目标部分的指标,并补充可读性强的名称即可。
步骤1:加载包并生成测试结果
library(epiR) # 构建测试数据 dat.v01 <- c(670,202,74,640) rval.tes01 <- epi.tests(dat.v01)
步骤2:明确指标对应关系
输出文本中的指标与$detail里statistic列代码的对应关系如下:
- 表观患病率(Apparent prevalence)→ ap
- 真实患病率(True prevalence)→ tp
- 灵敏度(Sensitivity)→ se
- 特异度(Specificity)→ sp
- 阳性预测值(Positive predictive value)→ pv.pos
- 阴性预测值(Negative predictive value)→ pv.neg
- 阳性似然比(Positive likelihood ratio)→ lr.pos
- 阴性似然比(Negative likelihood ratio)→ lr.neg
- 真阴性人群中的假阳性比例(False T+ proportion for true D-)→ p.tpdn
- 真阳性人群中的假阴性比例(False T- proportion for true D+)→ p.tndp
- 阳性结果中的假阳性比例(False T+ proportion for T+)→ p.dntp
- 阴性结果中的假阴性比例(False T- proportion for T-)→ p.dptn
- 正确分类比例(Correctly classified proportion)→ diag.ac
步骤3:筛选并转换为目标data.frame
# 定义需要保留的统计量代码 target_stats <- c("ap", "tp", "se", "sp", "pv.pos", "pv.neg", "lr.pos", "lr.neg", "p.tpdn", "p.tndp", "p.dntp", "p.dptn", "diag.ac") # 筛选detail数据框 result_df <- rval.tes01$detail[rval.tes01$detail$statistic %in% target_stats, ] # 添加可读性强的指标名称列 result_df$indicator <- c("表观患病率", "真实患病率", "灵敏度", "特异度", "阳性预测值", "阴性预测值", "阳性似然比", "阴性似然比", "真阴性人群中的假阳性比例", "真阳性人群中的假阴性比例", "阳性结果中的假阳性比例", "阴性结果中的假阴性比例", "正确分类比例") # 调整列顺序,将名称列前置 result_df <- result_df[, c("indicator", "est", "lower", "upper")] # 可选:保留两位小数,与输出显示格式一致 result_df[, c("est", "lower", "upper")] <- round(result_df[, c("est", "lower", "upper")], 2)
最终结果示例
运行上述代码后,result_df即为对应目标部分的data.frame:
print(result_df) #> indicator est lower upper #> 1 表观患病率 0.55 0.52 0.57 #> 2 真实患病率 0.47 0.44 0.49 #> 3 灵敏度 0.90 0.88 0.92 #> 4 特异度 0.76 0.73 0.79 #> 5 阳性预测值 0.77 0.74 0.80 #> 10 阴性预测值 0.90 0.87 0.92 #> 11 阳性似然比 3.75 3.32 4.24 #> 12 阴性似然比 0.13 0.11 0.16 #> 15 真阴性人群中的假阳性比例 0.24 0.21 0.27 #> 16 真阳性人群中的假阴性比例 0.10 0.08 0.12 #> 17 阳性结果中的假阳性比例 0.23 0.20 0.26 #> 18 阴性结果中的假阴性比例 0.10 0.08 0.13 #> 5.1 正确分类比例 0.83 0.81 0.84
说明
epi.tests返回的$detail包含所有计算的统计量,只需筛选出对应"Point estimates and 95% CIs"的13个指标即可。- 添加
indicator列是为了让结果与输出文本中的名称对应,提升可读性;若不需要中文名称,可替换为英文名称或直接使用statistic列。
内容的提问来源于stack exchange,提问作者MYaseen208
相关产品推荐
相关产品推荐

