Home > Blockchain >  inter-rater reliability by groups
inter-rater reliability by groups

Time:03-23

I have a dataset that looks like the following but with much more rows and 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))

where R1, R2, and R3 are different raters. I want to calculate the inter-rater reliability (inter-coder reliability) within each group. How could I loop over the groups to do that?

I found a similar questions here: Inter-rater reliability per category but there is no answer. I appreciate any help even it is only about the looping over the groups without the calculation of the inter-rater reliability.

CodePudding user response:

I discovered the excellent tidycomm package recently. Calculating icr on groups is no implemented yet but it works nicely with 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>

Created on 2022-03-23 by the reprex package (v2.0.1)

  • Related