0

在 IRT 软件ConQuest中,您可以使用命令“score”对多个维度/潜在变量进行建模,使用相同的清单变量/原始数据,但编码不同。例如:

score (1,2,3) (0,1,2) (0,1,0) ! items(1-3);

将原始分数从 1 到 3 “重新编码”,第一维的 0、1 和 2 以及第二维(潜在变量)的 0、1、0。

您知道如何在R 包 TAM中实现相同的功能(使用lavaan语法或其他方式)吗?我正在尝试运行 PCM 分析。

非常感谢提前!

KH

4

2 回答 2

1

我在这里没有得到答案,但我联系了 TAM 包的作者 Alexander Robitzsch,这是他发给我的内容(经他许可发布):

data(data.gpcm)
psych::describe(data.gpcm)
resp <- data.gpcm

# define three dimensions and different loadings
# of item categories on these dimensions
I <- 3  # 3 items
D <- 3  # 3 dimensions

# define loading matrix B
# 4 categories for each item (0,1,2,3)
B <- array( 0 , dim=c(I,4,D) )
for (ii in 1:I){
    B[ ii , 1:4  , 1 ] <- 0:3
    B[ ii , 1 ,2 ] <- 1
    B[ ii , 4 ,3 ] <- 1
            }
dimnames(B)[[1]] <- colnames(resp)
B[1,,]
  ##   > B[1,,]
  ##        [,1] [,2] [,3]
  ##   [1,]    0    1    0
  ##   [2,]    1    0    0
  ##   [3,]    2    0    0
  ##   [4,]    3    0    1

# test run
mod1 <- tam.mml( resp , B = B , control=list( snodes=1000 , maxiter=5)  )
summary(mod1)

当然,我必须根据自己的需要编辑代码,但你们所有人可能会特别感兴趣:出于某种原因,B 矩阵仅在我还定义了 0 类别时才有效,尽管我的评级/数据仅包含从 1 到 5 的值:

B <- array( 0 , dim=c(9,6,5) ) # 9 items, 5 response cat. + 1, 5 latent dimensions
for (ii in 1:I){
  B[ ii , 1:6  , 1 ] <- 0:5
  B[ ii , 2 ,2 ] <- 1
  B[ ii , 2 ,3 ] <- 1
  B[ ii , 6 ,3 ] <- 1
  B[ ii , 6 ,4 ] <- 1
  B[ ii , 4 ,5 ] <- 1
}

dimnames(B)[[1]] <- colnames(X)
B[1,,]

干杯,KH

于 2015-03-05T18:03:04.440 回答
1

作为上述答案的扩展TAM,这里是如何使用mirt包运行相同的代码,除了使用广义部分信用模型而不是 Rasch 模型(Rasch 模型需要显式模型参数才能正确识别)。

library(mirt)
gpcm_mats <- list(B[1,,], B[2,,], B[3,,])
sv <- mirt(resp, 3, itemtype = 'gpcm', 
           gpcm_mats = gpcm_mats, pars = 'values') #starting values
mod <- mirt(resp, 3, itemtype = 'gpcm', gpcm_mats = gpcm_mats)
coef(mod, simplify=TRUE)
于 2015-03-12T20:47:32.420 回答