为实现可视化,我需要计算所有七个评估者组合/对的加权kappa。因此,如果我使用带有七个列的一些示例数据:
ex <- structure(list(`1` = c(1, 1, 2, 1, 2, 1, 1, 1, 2, 3, 1, 1, 1,
1, 1, 1, 2, 1, 2, 2), `2` = c(1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 1,
2, 1, 1, 2, 2, 1, 2, 2, 2), `3` = c(1, 1, 2, 1, 2, 1, 1, 1, 2,
3, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2), `4` = c(1, 1, 2, 2, 2, 1, 2,
2, 2, 3, 2, 1, 1, 2, 2, 2, 1, 1, 2, 2), pa = c(1, 2, 1, 2, 3,
1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 3, 2), ta = c(2, 2, 2,
1, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 3), ka = c(1,
1, 2, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2)), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))
我想获得一个捕获所有列组合上的irr::kappa2
输出的结构。像这样的结构:
out <- data.frame("1_2"=irr::kappa2(ex[c(1,2)]),
"1_3"=irr::kappa2(ex[c(1,3)]),"1_4"=irr::kappa2(ex[c(1,3)]),....
(用于列的所有唯一组合)。
有什么想法吗?
答案 0 :(得分:2)
一种解决方案是将函数kappa2
的整个输出结构存储到列表的元素中,并为每个可能的列组合包含一个元素:
# initialization
out_list <- list()
column <- 1
# cycle for storing kappa2's output structure
for (i in 1:(ncol(ex)-1)){
for (j in (i+1):ncol(ex)){
out_list[[column]] <- irr::kappa2(ex[,c(i,j)])
# renaming the elements
names(out_list)[column] <- paste0(i, "_", j)
column <- column + 1
}
}
如果只希望每对列的Kappa值(如注释中所述),则可以使用以下代码(与以前非常相似):
# initialization
# the number of columns of "out" is from mathematics
out <- as.data.frame(matrix(0, nrow = 1, ncol = ncol(ex) * (ncol(ex)-1) / 2))
column <- 1
# cycle for calculation kappa
for (i in 1:(ncol(ex)-1)){
for (j in (i+1):ncol(ex)){
out[1,column] <- irr::kappa2(ex[,c(i,j)])$value
colnames(out)[column] <- paste0(i, "_", j)
column <- column + 1
}
}