7 votos

Visualización de interrater desacuerdo

Estoy tratando de visualizar el proceso de dos calificadores que han valorado el mismo conjunto de datos. Cada fila (línea en la trama) representan un latido de corazón (o error) en un ecg. Todo desacuerdo que se discutió y común de clasificación acordado. El acuerdo calificaciones se almacena en la variable común.

Quiero mostrar modelos frecuentes en este proceso de acuerdo.

Mi conjunto de datos contiene ~1000 desacuerdos(de ~20000 calificaciones). Cada una de las clasificaciones es una de las 6 categorías. Las categorías no están ordenadas, pero d, e y f representan los diferentes tipos de latidos del corazón (incl. desconocido), mientras que a, b y c son otros de los patrones de ECG.

Mi idea inicial era una paralela de la trama de la conexión de cada clasificación en rater1, rater2 y comunes:

Esto da la idea general, que hay som patrones más grandes, pero no es fácil de interpretar.

Im estoy esperando que alguien puede recomendar una solución mejor.

Ligeramente modificada de la muestra de los datos:

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

1voto

Doug Kavendek Puntos 1244

Esto no es tan sexy como su trama, pero podría hacerlo más fácil de leer datos de frecuencia real.

ratings

Datos simulados--color indica el número de evaluadores que inicialmente estuvo de acuerdo con la eventual calificación común (0, 1 o 2).

Código:

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)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X