按组划分的评分者间信度
inter-rater reliability by groups
我的数据集如下所示,但行数和组数更多:
df2 <- data.frame(
"group" = c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5),
"R1" = c(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0),
"R2" = c(1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0),
"R3" = c(1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0))
其中 R1、R2 和 R3 是不同的评分者。我想计算每个组内的评分者间可靠性(编码器间可靠性)。我怎样才能遍历这些组来做到这一点?
我在这里发现了一个类似的问题:Inter-rater reliability per category但是没有答案。
我很感激任何帮助,即使它只是关于在不计算评估者间可靠性的情况下遍历组。
我最近发现了优秀的 tidycomm
包。计算组上的 icr 尚未实现,但它与 group_map
.
配合得很好
library(tidyverse)
library(tidycomm)
df2 %>%
# tidycomm expects tidy data so we have to do some reshaping first
mutate(post_id = row_number()) %>%
pivot_longer(R1:R3, names_to = "coder_id", values_to = "code") %>%
# first group by, then apply the function once per group
group_by(group) %>%
group_map(.f = function(.x, .y) {
out <- test_icr(.x, unit_var = post_id, coder_var = coder_id, code)
add_column(out, group = .y$group, .before = 1L)
}) %>%
bind_rows()
#> # A tibble: 5 × 9
#> group Variable n_Units n_Coders n_Categories Level Agreement Holstis_CR
#> <dbl> <chr> <int> <int> <int> <chr> <dbl> <dbl>
#> 1 1 code 4 3 2 nominal 0.5 0.667
#> 2 2 code 3 3 2 nominal 0.667 0.778
#> 3 3 code 4 3 2 nominal 1 1
#> 4 4 code 4 3 2 nominal 0.5 0.667
#> 5 5 code 5 3 2 nominal 0.8 0.867
#> # … with 1 more variable: Krippendorffs_Alpha <dbl>
由 reprex package (v2.0.1)
于 2022-03-23 创建
我的数据集如下所示,但行数和组数更多:
df2 <- data.frame(
"group" = c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5),
"R1" = c(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0),
"R2" = c(1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0),
"R3" = c(1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0))
其中 R1、R2 和 R3 是不同的评分者。我想计算每个组内的评分者间可靠性(编码器间可靠性)。我怎样才能遍历这些组来做到这一点?
我在这里发现了一个类似的问题:Inter-rater reliability per category但是没有答案。 我很感激任何帮助,即使它只是关于在不计算评估者间可靠性的情况下遍历组。
我最近发现了优秀的 tidycomm
包。计算组上的 icr 尚未实现,但它与 group_map
.
library(tidyverse)
library(tidycomm)
df2 %>%
# tidycomm expects tidy data so we have to do some reshaping first
mutate(post_id = row_number()) %>%
pivot_longer(R1:R3, names_to = "coder_id", values_to = "code") %>%
# first group by, then apply the function once per group
group_by(group) %>%
group_map(.f = function(.x, .y) {
out <- test_icr(.x, unit_var = post_id, coder_var = coder_id, code)
add_column(out, group = .y$group, .before = 1L)
}) %>%
bind_rows()
#> # A tibble: 5 × 9
#> group Variable n_Units n_Coders n_Categories Level Agreement Holstis_CR
#> <dbl> <chr> <int> <int> <int> <chr> <dbl> <dbl>
#> 1 1 code 4 3 2 nominal 0.5 0.667
#> 2 2 code 3 3 2 nominal 0.667 0.778
#> 3 3 code 4 3 2 nominal 1 1
#> 4 4 code 4 3 2 nominal 0.5 0.667
#> 5 5 code 5 3 2 nominal 0.8 0.867
#> # … with 1 more variable: Krippendorffs_Alpha <dbl>
由 reprex package (v2.0.1)
于 2022-03-23 创建