You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:47:01