计算 r 中因子水平的置信区间

Calculate confidence interval for factor levels in r

我有一个包含约 2,204 项鸟类调查的数据集。我使用(每个 sex/total 每个性别的调查数量的 1 数量)计算了每个性别的检测率。我想计算每个性别的检出率的置信区间。数据集如下所示:

bird sex outcome
a f 1
a f 0
a f 1
a f 0
a f 1
b m 1
b m 0
b m 0
b m 1
b m 1
c f 1
c f 0
c f 1
c f 0
c f 1

我用这个代码来计算每个性别的检出率:

df$outcome <- as.numeric(df$outcome)
detection_sex <- df %>% 
    group_by(sex) %>% 
   summarise(dr = mean(sex))

男性检出率为59%,女性检出率为56%。我不确定如何为每个性别提取 95% CI。我有 729 份女性调查和 1,475 份男性调查,所以我使用此代码来尝试获得 95% CI:

Hmisc::binconf(1475, 2204)

这产生了:

PointEst     Lower    Upper
 0.3307623 0.3114294 0.350684

这不可能,因为男性的平均检出率为 59%。有没有办法让每个性别的平均检出率达到 95%CI?

如果我没理解错的话,你想独立计算每个性别的检出率的置信区间,对吗?

如果是这样,您可以尝试以下操作。按 sex 分组后,您可以对 Hmisc 中的二项式概率使用 binconf 并包含参数以提供每个 sex.

所需的所有结果

调用 binconf 时,第一个参数将是检测到的结果总数(或 sum(outcome))。第二个参数是鸟的总数surveyed/observations(或n())。

结果包括以下内容(对于每个 sex):Xoutcome 的总数,N 是观察总数,PointEst 这是均值的点估计值,以及上下置信区间估计值。

默认值为 0.05 的 alpha 和 Wilson 区间。

library(tidyverse)
library(Hmisc)

df %>% 
  group_by(sex) %>% 
  summarise(CI = list(binconf(sum(outcome), 
                              n = n(), 
                              include.x = T, 
                              include.n = T, 
                              return.df = T))) %>%
  unnest(CI)

输出

# A tibble: 2 × 6
  sex       X     N PointEst Lower Upper
  <chr> <dbl> <dbl>    <dbl> <dbl> <dbl>
1 f         6    10      0.6 0.313 0.832
2 m         3     5      0.6 0.231 0.882