1

我有一个数据框,我想在其中为多个评估者在我的因素“形式”的多个级别上计算评估者协议 (Fleiss Kappa)。当我运行我的代码时,我收到以下错误:

**Error in factor(ratings[i, ], levels = lev) : subscript out of bounds**

这是它的外观示例:

form <- c("B01","B01","B01","B02","B02","B02","B03","B03","B03")
word<-c("arch","avenue","concrete","devotion","equations","moth","piling","relate","cover")
B01200<-c(1,2,3,NA,NA,NA,NA,NA,NA)
B01209<-c(3,2,1,NA,NA,NA,NA,NA,NA)
B01214<-c(1,3,2,NA,NA,NA,NA,NA,NA)
B01228<-c(NA,NA,NA,NA,NA,NA, 2,2,1)
B01235<-c(NA,NA,NA,NA,NA,NA ,1,2,3)
B01242<-c(NA,NA,NA,NA,NA,NA, 3,3,1)
B02215<-c(NA,NA,NA ,2,1,1,NA,NA,NA)
B02217<-c(NA,NA,NA,2,1,1,NA,NA,NA)
B02222<-c(NA,NA,NA, 3,1,3,NA,NA,NA)
x <- data.frame(form,word,B01200,B01209,B01214,B01228,B01235,B01242,B02215,B02217,B02222)
x$form <-factor(x$form)
by(x,x[,"form"], function(x) kappam.fleiss(x[,-c(1:2)], detail=TRUE))

当我使用 str(x) 查看底层结构时,我看不出我的“form”变量有什么问题。

这是它显示的内容:

    'data.frame':   9 obs. of  11 variables:
     $ form  : Factor w/ 3 levels "B01","B02","B03": 1 1 1 2 2 2 3 3 3
     $ word  : Factor w/ 9 levels "architects","avenue",..: 1 2 3 5 6 7 8 9 4
     $ B01200: num  1 2 3 NA NA NA NA NA NA
     $ B01209: num  3 2 1 NA NA NA NA NA NA
     $ B01214: num  1 3 2 NA NA NA NA NA NA
     $ B01228: num  NA NA NA NA NA NA 2 2 1
     $ B01235: num  NA NA NA NA NA NA 1 2 3
     $ B01242: num  NA NA NA NA NA NA 3 3 1
     $ B02215: num  NA NA NA 2 1 1 NA NA NA
     $ B02217: num  NA NA NA 2 1 1 NA NA NA
     $ B02222: num  NA NA NA 3 1 3 NA NA NA

我究竟做错了什么?

谢谢!

4

1 回答 1

2

irr 包中的“以列表方式省略缺失的数据” ,也由kappam.fleiss()函数来正确计算 kappa 值。这基本上意味着,所有读者必须至少对您的一个案例进行评级,才能使该函数无错误地执行(即 no NA)。在您的数据中,没有任何行符合此条件(即每个案例至少有一个NA)。

举例说明:

  • 作品:kappam.fleiss(data.frame(c(1,3,4), c(1,3,3)))
  • 仍然有效:kappam.fleiss(data.frame(c(1,3,4), c(1,3,NA)))
  • 仍然有效(但只给你 NaN):kappam.fleiss(data.frame(c(1,NA,4), c(1,3,NA)))
  • 给出一个错误(就像你的情况一样):kappam.fleiss(data.frame(c(1,NA,4), c(NA,3,NA)))

根据您想要做什么,您可能会重组数据,或者将其拆分并分别测试子集?

于 2016-07-28T18:55:54.567 回答