2010-07-08 4 views
1

У меня есть следующая проблема. Мне нужно вычислить Шерсть & Fleiss ICC's для ситуации, в которой предметы оцениваются по разному количеству судей. Например, конкурентный характер отрасли оценивается по целому ряду отраслей, но с различным числом судей в отрасли. Одну отрасль оценивают только 2 судьи, тогда как конкурентный характер другой отрасли может оцениваться до 12 судей. Я использовал функции ICC (package psych) и icc (пакет irr) для определения icc, но неясно, могут ли они иметь дело с различным количеством судей. Кто-нибудь может мне с этим помочь? Как рассчитать S & F icc, когда количество судей является переменной? Я предпочел бы продолжать использовать R для этого, но если это будет лучше достигнуто с помощью другого программного обеспечения, я тоже хотел бы получить эти предложения.icc's, когда количество судей не является постоянным

Спасибо, Питер Verbeet

+0

Если вам не повезло, этот вопрос, вероятно, настолько специфичен и ориентирован на статистику (в отличие от R-ориентированного программирования), что вы не получите ответа здесь. Вы можете скопировать себя и попробовать R-help, или можете попытаться написать авторов пакетов напрямую. – Harlan

ответ

3

Я использовал иерархическое линейное моделирование для этого. Я упомянул HML notes for R профессора Seltman, чтобы узнать, как это сделать. Трюк получает условия дисперсии для ICC с переменным количеством судей.

library(lme4) 

# calculate the hierarchical model 
m1 = lmer(score ~ (1|item_id) + (1|judge_id), data=d) 
print(m1) 

# helper function to pull out the variances 
xVars <- function(model) { 
    exvars = lme4::VarCorr(model) 
    vars = c(exvars$item_id[1,1], exvars$judge_id[1,1], attr(exvars,"sc")^2) 
    names(vars) <- c('item var', 'judge var', 'residual var') 
    vars 
} 
# helper function for ICC(k) variations 
icck <- function(variances, k=1) { 
    icc = variances[1]/(variances[1] + (variances[2] + variances[3])/k) 
    names(icc) = c(paste('ICC', k, sep='')) 
    icc 
} 

# the output you want 
icc1 = icck(xVars(m1)) 
print(icc1) 
icc8 = icck(xVars(m1), 8) 
print(icc8) 
+0

Отлично! Большое спасибо! –

+1

Я ценю благодарность, но я был бы счастливее, если бы вы проголосовали за ответ и отметили его как принятый. ;-) – Turadg

+0

Привет! Я стою перед той же проблемой и намереваюсь использовать ваш код. Не могли бы вы быть добрыми и объяснить разницу между случаем k = 1 и k = 8 более подробно, для кого-то, не знакомого с каппами? Большое спасибо! – JBJ

Смежные вопросы