可视化评估者之间的分歧

机器算法验证 分类数据 数据可视化 协议统计
2022-04-05 20:21:24

我试图可视化两个评估者的过程,他们每个人都对相同的数据集进行了评级。每行(图中的线)代表心电图上的心跳(或错误)。讨论了每一个分歧,并同意了commen评级。商定的评级存储在变量 common 中。

我想展示这个协议过程中的频繁模式。

我的数据集包含约 1000 个分歧(来自约 20000 个评分)。每个评级都是 6 个类别之一。类别没有排序,但 d、e 和 f 代表不同类型的心跳(包括未知),而 a、b 和 c 是其他 ECG 模式。

我最初的想法是一个平行图,将rater1、rater2和common的每个评级连接起来:

这给出了总体思路,即存在一些主要模式,但不容易解释。

我希望有人可以推荐一个更好的解决方案。

稍作修改的数据样本:

rater1,rater2,common
f,d,e
c,b,b
f,a,a
d,e,e
d,f,f
d,f,e
f,d,c
f,d,e
b,c,c
d,e,e
c,b,b
d,b,b
d,f,e
d,e,e
f,e,e
f,e,e
b,c,c
f,e,e
d,f,e
f,d,e
b,c,c
d,e,e
f,d,e
c,f,c
f,e,e
f,d,f
f,e,e
f,e,e
d,f,e
d,f,f
f,d,e
f,e,e
c,f,c
f,e,e
c,f,c
f,d,e
f,d,f
c,f,c
d,f,e
d,e,e
f,e,e
b,c,c
c,f,c
f,e,e
f,d,e
f,e,e
b,c,c
f,e,e
f,d,f
e,f,e
1个回答

这不像你的情节那么性感,但它可能更容易读取实际频率数据。

收视率

模拟数据——颜色表示最初同意最终共同评分(即 0、1 或 2)的评分者数量。

代码:

library(ggplot2)

theme_set(theme_bw())
theme_update(strip.background=element_rect(colour="white"))
theme_update(panel.border=element_blank())

## Simulated data with similar format
n <- 10^3
df <- data.frame(common=sample(letters[1:6], size=n, replace=T, prob=c(1, 2, 3, 4, 4, 4)),
                 stringsAsFactors=F)
df$rater1 <- ifelse(runif(n) < 0.5, df$common, sample(letters[1:6], size=n, replace=T))
df$rater2 <- ifelse(runif(n) < 0.5, df$common, sample(letters[1:6], size=n, replace=T))
for(var in c("common", "rater1", "rater2")) {
    df[, var] <- factor(df[, var], levels=letters[1:6])
}
df$rater1_label <- sprintf(ifelse(df$rater1 == "a", "rater1 = %s", "%s"), df$rater1)
df$rater1_label <- factor(df$rater1_label, levels=c("rater1 = a", letters[2:6]))
df$rater2_label <- sprintf(ifelse(df$rater2 == "a", "rater2 = %s", "%s"), df$rater2)
df$rater2_label <- factor(df$rater2_label, levels=c("rater2 = a", letters[2:6]))
df$agree_with_common <- as.character(1*(df$rater1 == df$common) + 1*(df$rater2 == df$common))
p <- (ggplot(df, aes(x=common, color=agree_with_common)) +
      scale_color_manual("", guide=F,
                         values=c("0"="#D55E00", "1"="#0072B2", "2"="#009E73")) +
      xlab("common rating") + ylab("count") +
      geom_histogram(fill="white") +
      facet_grid(rater1_label ~ rater2_label) +
      ggtitle("Histogram of common rating conditional on individual ratings"))
p
ggsave("ratings.png", p, width=10, height=8)