用dplyr计算分组二进制数据的置信区间

时间:2017-07-31 10:44:58

标签: r binary dplyr confidence-interval

我对R以及分析二进制数据相当新,目前我正在尝试评估参与者的焦虑率是否与他们暴露于风险因素有关。为此,我最初计划计算每个暴露组中参与者的比例,这些参与者被诊断出患有95%置信区间的焦虑,并绘制这些。但是我的置信区间计算不正确,我无法弄清楚原因。我的数据集的简化版本如下:

library(tidyverse)

anxietytable <- tibble(
  id = c(1:709),
  exposure = c(rep("mild", 29), rep("severe", 29), rep("unexposed", 3), rep("mild", 337), rep("severe", 203), rep("unexposed", 108)),
  case_anxiety = as.logical(c(rep("TRUE", 61), rep("FALSE", 648)))
  )

计算比例和置信区间的计算如下:

anxiety_rates <- anxietytable %>%
  group_by(exposure) %>%
  summarise(anxiety_rate= mean(case_anxiety),
            anxiety_uci= anxiety_rate+(1.96*sd(case_anxiety)/sqrt(sum(case_anxiety))),
            anxiety_lci= anxiety_rate-(1.96*sd(case_anxiety)/sqrt(sum(case_anxiety))))

返回:

# A tibble: 3 × 4
   exposure anxiety_rate anxiety_uci  anxiety_lci
      <chr>        <dbl>       <dbl>        <dbl>
1      mild   0.07923497   0.1776778 -0.019207848
2    severe   0.12500000   0.2456297  0.004370339
3 unexposed   0.02702703   0.2113630 -0.157308955

当我绘制图表时,我有点怀疑错误条,所以我使用binom.test手动测试它,使用“温和”曝光组的整体和TRUE计数(prop.test也返回类似的值,同样如此几个在线工具):

 binom.test(29,366)

返回:

data:  29 and 366
number of successes = 29, number of trials = 366, p-value < 2.2e-16
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
 0.05370521 0.11181316
sample estimates:
probability of success 
            0.07923497 

因此我的比例计算似乎是正确的,但我的置信区间不是。我假设这很可能是因为我在代码中出错或使用了一个函数而不是由于统计误解(尽管如果不是我很乐意在CrossValidated中提问),但我已经经历了很多次并且改变了包围等等,并且无法找出它为什么没有给出我期望的价值。

有人可以就如何重构我的代码提出任何建议,以便正确计算置信区间吗?

0 个答案:

没有答案