在我的数据集中,我有 5 位读者,他们在几天内反复对测试(0、1 或 2)进行了分类。
每天,实际分类的 5 个测试中只有 2-3 个读者。
library(tidyverse)
library(broom)
df <- tibble(day = rep(1:10,10)) %>%
arrange(day) %>%
mutate(reader1 = rep(c(1, 2, 0, 0, 2, NA, NA, NA, NA, NA), each = 2, 5),
reader2 = rep(c(NA, NA, NA, NA, NA, 1, 1 , 0, 1, 2), each = 2, 5),
reader3 = rep(c(1, 1, 1, 0, 2, NA, NA, NA, NA, NA), each = 2, 5),
reader4 = rep(c(NA, NA, NA, NA, NA, 2, 1, 0, 1, 2), each = 2, 5),
reader5 = rep(c(NA, NA, NA, NA, NA, 2, 2, 0, 1, 2), each = 2, 5))
最终目标是估计每天读者之间的类内相关性(使用 psych 包中的 ICC 命令)。理想的输出将是单个数据框,其中包含每天的 ICC(和 95% 置信区间)以允许绘图。
这个答案很有帮助,但仅适用于只有两个读者的情况。
我被困在哪里:
首先,对于每一天,删除读者没有对测试进行分类的列(我认为这是必要的,因为 ICC 不能有没有观察的读者)。
df %>%
group_by(day) %>%
nest()
#something here to drop non-readers
select_if(colSums(!is.na(.)) > 0)
#doesn't work. Need to slice into separate data frames?
其次,如何将 ICC 和 95% CI 提取到一个整洁的数据框中?
df %>%
group_by(day) %>%
nest() %>%
#something here to split data by day
do(ICC(.)) %>%
tidy()
#not working