2015-03-26 2 views
1

Я немного озадачен поведением взвешенной каппы в пакете R psych. У меня есть данные с пятью классами (1,2,3,4,5) и тремя аннотаторами. Кажется, что всякий раз, когда конкретный класс (скажем, 1) используется только один комментатора (в результате нулевое значение по диагонали матрицы соглашения для этого класса), псих жалуется:R psych package: расчет взвешенной kappa

library(psych); 
df2 <- read.table('classes/WB/mcrae.quants.features.time.numeric', sep='\t'); 
cohen.weights <- matrix(c(0,5,35,95,100,5,0,30,90,95,35,5,0,60,65,95,90,60,0,5,100,95,65,5,0),ncol=5); 
cohen.kappa(df2,cohen.weights) 
Error in `rownames<-`(`*tmp*`, value = c("2", "3", "4", "5")) : 
length of 'dimnames' [1] not equal to array extent 
Calls: cohen.kappa -> cohen.kappa1 -> rownames<- 
Execution halted 

Мои данные выглядит это:

5  3  3 
5  3  3 
5  4  3 
5  4  3 
3  3  3 
5  4  4 
3  4  4 
3  3  3 
2  3  2 
... 
1  3  4 

Может кто-нибудь сказать мне, что я делаю что-то неправильно? Приведенный выше код работает, когда все классы используются по меньшей мере двумя аннотаторами. Спасибо!

Выход dput (df2):

structure(list(V1 = c(5L, 5L, 5L, 5L, 3L, 5L, 3L, 3L, 2L, 4L, 
3L, 4L, 3L, 4L, 5L, 3L, 5L, 5L, 3L, 5L, 3L, 5L, 3L, 5L, 4L, 5L, 
5L, 5L, 5L, 3L, 4L, 4L, 5L, 5L, 5L, 3L, 3L, 5L, 5L, 5L, 5L, 3L, 
3L, 5L, 5L, 3L, 4L, 3L, 4L, 3L, 5L, 5L, 4L, 3L, 5L, 5L, 5L, 5L, 
5L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 4L, 3L, 5L, 5L, 5L, 5L, 4L, 4L, 
4L, 5L, 4L, 4L, 3L, 3L, 5L, 3L, 4L, 3L, 5L, 1L), V2 = c(3L, 3L, 
4L, 4L, 3L, 4L, 4L, 3L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 4L, 4L, 
3L, 5L, 4L, 4L, 5L, 5L, 3L, 3L, 3L, 4L, 4L, 3L, 4L, 3L, 3L, 4L, 
4L, 3L, 4L, 5L, 4L, 4L, 3L, 4L, 3L, 3L, 4L, 3L, 4L, 3L, 4L, 4L, 
5L, 4L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 
4L, 4L, 4L, 4L, 5L, 3L, 4L, 4L, 3L, 4L, 4L, 3L, 3L, 3L, 4L, 3L, 
3L, 3L, 4L, 3L), V3 = c(3L, 3L, 3L, 3L, 3L, 4L, 4L, 3L, 2L, 3L, 
2L, 3L, 3L, 3L, 4L, 2L, 3L, 4L, 3L, 3L, 4L, 4L, 5L, 5L, 4L, 3L, 
3L, 3L, 5L, 3L, 3L, 4L, 4L, 4L, 3L, 3L, 4L, 4L, 4L, 4L, 3L, 4L, 
4L, 4L, 4L, 4L, 3L, 5L, 4L, 3L, 5L, 4L, 3L, 4L, 5L, 5L, 4L, 3L, 
5L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 4L, 4L, 3L, 3L, 4L, 4L, 
3L, 4L, 4L, 4L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 4L)), .Names = c("V1", 
"V2", "V3"), class = "data.frame", row.names = c(NA, -86L)) 
+0

Ответ прост, вы взвешивать матрицу и 5x5 и ваши данные 3XN? Существует несоответствие. Проверьте документацию на то же. – vrajs5

+0

Привет, нет, я так не думаю - данные, которые я показываю, это 3xN (количество аннотаторов, умноженное на количество точек данных), но в результате матрица смешения будет 5x5 (количество классов), что является весом применяется матрица. – linguist

+0

Можете ли вы добавить вывод 'dput (df2)' в свой пост, чтобы мы могли попробовать его реплицировать? Если данные слишком велики, можете ли вы представить минимально воспроизводимый пример подмножеством ваших данных? – mlegge

ответ

0

Изменчивость необходима потому, что Kappa вычисляет надежность между оценщиками и корректирует шанс соглашения. С двумя неизвестными и без изменчивости это невозможно вычислить.

See this post for a more detailed answer