我有以下数据框:
structure(list(test1 = c(0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1),
test2 = c(0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1), test3 = c(0,
0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1), test4 = c(1, 0, 1, 1, 1,
1, 0, 1, 0, 1, 0, 1), test5 = c(0, 0, 1, 1, 0, 1, 1, 1, 0,
1, 0, 1), test6 = c(0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1)), row.names = c(NA,
-12L), class = c("tbl_df", "tbl", "data.frame"))
每个变量/列对应一个测试(test1,test2,test3,test4 ...),并具有每个观察结果的测试结果(1或0)。
我想为所有可能的变量对计算Kappa统计量,并将这些组合的结果存储在数据框中,如
structure(list(...1 = c("test1-test2", "test1-test3", "test1-test4",
"test2-test1"), `z-score` = c(NA, NA, NA, NA), kappa = c(NA,
NA, NA, NA), `p-value` = c(NA, NA, NA, NA)), row.names = c(NA,
-4L), class = c("tbl_df", "tbl", "data.frame"))
>
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
您将需要安装irr
软件包(尽管您可以将其替换为测试的任何其他版本)。我将原始数据集命名为dfr1
,并将结果数据集命名为dfr2
。这将遍历所有列名,并从每个测试中检索结果:
dfr2 <- data.frame(pair = as.character(), z_score = as.numeric(), kappa = as.numeric(), p_value = as.numeric())
for(i in 1:ncol(dfr1)){
for(j in 1:ncol(dfr1)){
if(i != j){
tst <- irr::kappa2(dfr1[,c(i,j)])
dfr2 <- rbind(dfr2, data.frame(pair = paste0(names(dfr1[,c(i,j)]), collapse = "-"),
z_score = tst$statistic,
kappa = tst$value,
p_value = tst$p.value))
}
}
}
答案 1 :(得分:1)
您的数据:
test <- structure(list(test1 = c(0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1),
test2 = c(0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1), test3 = c(0,
0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1), test4 = c(1, 0, 1, 1, 1,
1, 0, 1, 0, 1, 0, 1), test5 = c(0, 0, 1, 1, 0, 1, 1, 1, 0,
1, 0, 1), test6 = c(0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1)), row.names = c(NA,
-12L), class = c("tbl_df", "tbl", "data.frame"))
使用combn获得所有可能的比较:
PAIRS = combn(names(test),2)
使用irr并遍历以下组合:
library(irr)
all_results = apply(PAIRS,2,function(i){
result = kappa2(test[,i], "unweighted")
data.frame(
'comparison'=paste(i,collapse="-"),
'z-score'=result$statistic,
'kappa'=result$value,
'p-value'=result$p.value
)
})
结果在一个列表中,我们将它们组合成一个data.frame
all_results = do.call(rbind,all_results)
comparison z.score kappa p.value
1 test1-test2 -0.09897433 -0.02857143 0.9211586502
2 test1-test3 0.58554004 0.16666667 0.5581846494
3 test1-test4 -0.82807867 -0.23529412 0.4076259477
4 test1-test5 -0.09897433 -0.02857143 0.9211586502
5 test1-test6 0.58554004 0.16666667 0.5581846494
6 test2-test3 0.58554004 0.16666667 0.5581846494
7 test2-test4 1.65615734 0.47058824 0.0976899593
8 test2-test5 3.46410162 1.00000000 0.0005320055
9 test2-test6 0.58554004 0.16666667 0.5581846494
10 test3-test4 -1.22474487 -0.33333333 0.2206713619
11 test3-test5 0.58554004 0.16666667 0.5581846494
12 test3-test6 3.46410162 1.00000000 0.0005320055
13 test4-test5 1.65615734 0.47058824 0.0976899593
14 test4-test6 -1.22474487 -0.33333333 0.2206713619
15 test5-test6 0.58554004 0.16666667 0.5581846494