我对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中提问),但我已经经历了很多次并改变了包围等等,并且无法找出为什么它没有给出我期望的 Value .

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