R:icc {irr}:尝试单向模型,每个主题每个评估者有多个评级

时间:2017-08-11 02:09:38

标签: r

我没有在网上任何关于ICC {psych} / icc {irr}函数的线程中找到我的特定场景。

我正在尝试根据包含subject,rater和多个评级列的列的数据来查找interrater可靠性。 (从我收集的内容来看,大多数人使用的数据只是作为列,主题作为行,以及单元格中的单个评级。)

数据样本:

Data sample

以下是我尝试的代码:

icc(data.pers.icc[,5],model="oneway",type="consistency",unit="average",r0=0,conf.level=0.95)

icc(data.pers.icc[,c(1,2,5)],model="oneway",type="consistency",unit="average",conf.level=0.95)

我明白为什么第二行代码会给我一个错误;公式的目的不是将每列作为单独的数据点,而是作为单独的评估者。 但我不明白为什么第一行不起作用。它给了我NA的答案:

Average Score Intraclass Correlation

Model: oneway 
Type : consistency 

Subjects = 48 
Raters = 1 
ICC(1) = NA

F-Test, H0: r0 = 0 ; H1: r0 > 0 
F(47,0) = NA , p = NA 

95%-Confidence Interval for ICC Population Values:
NA < ICC < NA

我也试过包括评级和主题栏,但后者读作ICC(2)并且还给我NA作为答案。

即使这样有效,我仍然需要为每一列重复这个过程,所以我已经提取了因子得分并添加到我可以使用的列中,但是因为我不知道如何运行甚至是单列通过此功能。

P.S。我也试过ICC:

ICC(data.pers.icc[,c(35)],alpha=0.05)

但它给了我这个错误:

ICC错误1:

ICC error1

如果我包含主题和评级列,则会产生另一条错误消息:“对比度只能应用于具有2个或更多级别的因素”。

非常感谢任何帮助!我还有第二个更大的数据框来执行此操作。对不起我对R和统计数据的新手方法。

1 个答案:

答案 0 :(得分:1)

通常,icc函数的第一个参数应该是“n * m矩阵或数据框,n个主题是m。”。这意味着列是raters,行是主题。 如果只有一列(如icc(data.pers.icc[,5],model="oneway",type="consistency",unit="average",r0=0,conf.level=0.95)中所示),则只有一个评估者。因此无法计算icc。

关于你的第二个例子(icc(data.pers.icc[,c(1,2,5)],model="oneway",type="consistency",unit="average",conf.level=0.95)):第一列包含错误的主题名称。所有列都必须是数字。此外,你应该分开对待你的特质。

Trait1的正确输入应如下所示:

  Adam LiaoBo Fatima Maria
A  5.5     NA     NA    NA
B  5.0      4     NA    NA
D   NA     NA      7    NA
E  4.0      7     NA    NA
F  1.0     NA      2     4

但是,如果你把它放到icc函数中,它也会返回NA。在实验上,我发现这个函数无法处理那么多的NA值。但是,ICC包中的函数psych在某种程度上能够在你指定的时候处理那个NA,它应该使用所有案例而不仅仅是完整案例:

所以你可以像这样计算icc:

   my_data <-cbind(
   c(5.5, 5, NA, 4, 1), #Adam
   c(NA, 4, NA, 7, NA), #LiaoBo
   c(NA, NA, 7, NA, 2), #Fatima
   c(NA, NA, NA, NA, 4)) #Maria

ICC(my_data,missing=F)

将为您提供以下输出:

Call: ICC(x = my_data, missing = F)

Intraclass correlation coefficients 
                         type  ICC   F df1 df2     p lower bound upper bound
Single_raters_absolute   ICC1 0.26 2.4   4  15 0.096       -0.10        0.83
Single_random_raters     ICC2 0.11 1.5   4  12 0.277       -0.22        0.77
Single_fixed_raters      ICC3 0.10 1.5   4  12 0.277       -0.19        0.75
Average_raters_absolute ICC1k 0.58 2.4   4  15 0.096       -0.58        0.95
Average_random_raters   ICC2k 0.34 1.5   4  12 0.277       -2.50        0.93
Average_fixed_raters    ICC3k 0.31 1.5   4  12 0.277       -1.84        0.92

 Number of subjects = 5     Number of Judges =  4

现在,您只需选择正确的一个。

但是,我已经读过,icc索引既可以用于完全交叉设计(即:当所有评估者为所有科目提供评级时),或者为每个科目随机选择一组新评估者。因此icc可能不是您数据集的最佳选择。

能够更好地处理NAs的索引称为Krippendorff的alpha,它也可以在irr包中找到。要指定的唯一附加参数是数据类型(参数:method = ("nominal","ordinal","interval","ratio"))。 (我不知道你的数据,所以你可能会决定使用其他方法,然后我用下面的方法。)

Krippendorff的Trait1的alpha可以这样计算:

    kripp.alpha(t(my_data) ,"ratio")

会给你

    Krippendorff's alpha

 Subjects = 5 
   Raters = 4 
    alpha = -0.167 

这意味着您的评估者间可靠性略差于预期。该结果与ICC获得的结果非常不同。但是我不认为任何索引对于这么多缺少值的小矩阵都是有意义的。

一般来说,要注意混淆的主题和评分者。例如,对于这个索引,我必须转换我的矩阵(函数t)。

如果您想了解更多关于icc,Krippendorff的alpha和评估者间的可靠性,我建议您阅读以下文章,即使对于非统计学家也是如此:

P.S。:我想让你知道,我不是统计学家。我花了几天时间阅读有关索引的文章,并处理与你类似的问题。