我有 3PL 模型参数(猜测、难度和辨别项目参数)。是否有任何函数可以让我从项目响应数据中估计个人能力?我尝试了ltmfactor.score 包中的函数,但它似乎需要估计参数的全部数据,而我没有。
在模型参数已知时使用 IRT 估计能力
机器算法验证
r
秤
项目反应理论
2022-03-31 17:56:24
2个回答
我在包中找不到执行此操作的方法ltm,但如果您愿意使用该包,它相对简单mirt。
首先,写出一些由可能但随机的响应模式组成的任意矩阵或数据框。您也可以包含您感兴趣的实际响应模式以供以后使用。
dat <- matrix(sample(c(0,1), 10000, TRUE), ncol = 5)
colnames(dat) <- paste0('item', 1:5)
将其用作数据输入并mirt()提供选项pars = 'values' 以返回包含参数名称、数字、起始值等的数据框。编辑此对象以包含您想要的截距、斜率或其他值,并设置所有估计符合逻辑FALSE。这将导致模型立即与您想要的参数收敛。
library(mirt)
sv <- mirt(dat, 1, itemtype = '3PL', pars = 'values')
#custom discrimination, easiness, and guessing values
sv$value[sv$name == 'a1'] <- c(1,.9,.8,1,1.1)
sv$value[sv$name == 'd'] <- c(-1,0,1.5,-1.5,0)
sv$value[sv$name == 'g'] <- c(.2,.15,.17,.19,.15)
#set the parameters as fixed
sv$est <- FALSE
最后,(任意)使用 估计这个模型pars = sv,并使用返回的对象计算因子得分。如果您包含了您感兴趣的响应模式,则fscores()直接使用工作,否则使用response.pattern选项直接估计模式。
mod <- mirt(dat, 1, pars = sv)
fscores(mod)
#more interested in pattern: 0, 1, 1, 0, 1
fscores(mod, response.pattern = c(0,1,1,0,1))
希望这会有所帮助。
编辑:由于我不久前发布了这个答案,因此该mirtCAT包是作为扩展开发的,mirt并包含一个辅助函数,该函数调用用于建立具有已知系数generate.mirt_object()的合适模型。mirt
以下是使用上述参数的方法。
library(mirtCAT)
pars <- data.frame(a1 = c(1,.9,.8,1,1.1),
d = c(-1,0,1.5,-1.5,0),
g = c(.2,.15,.17,.19,.15))
mod <- generate.mirt_object(pars, itemtype = '3PL')
# trait scores for pattern: 0, 1, 1, 0, 1
fscores(mod, response.pattern = c(0,1,1,0,1))
我认为包装器版本更不容易出错,当然更易于查看和理解。
试试 catR 的 thetaEst。
来自手册:此命令返回给定响应模式和给定项目参数矩阵的能力估计。