我不是一个伟大的R专家,但最近由于大学原因我不得不使用“ltm”包,我对某些特定功能没有问题,但是当我称之为应该返回一个列表然后我得到一个这些值与之前显示的不同。 如果我向你展示它会更简单。
install.packages("ltm")
library("ltm")
x <- rasch(LSAT)
coeff <- x$coefficients
x的内容
Call:
rasch(data = LSAT)
Coefficients:
Dffclt.Item 1 Dffclt.Item 2 Dffclt.Item 3 Dffclt.Item 4 Dffclt.Item 5
-3.615 -1.322 -0.318 -1.730 -2.780
Dscrmn
0.755
Log.Lik: -2466.938
coeff的内容:
beta.i beta
Item 1 2.7300133 0.7551347
Item 2 0.9986059 0.7551347
Item 3 0.2398539 0.7551347
Item 4 1.3064513 0.7551347
Item 5 2.0994042 0.7551347
第二列“beta”是正确的,它只是重复表格长度的Dscrmn值,但为什么“beta.i”列中的元素与“Dffclt.Item 1 Dffclt.Item 2”不同Dffclt.Item 3 Dffclt.Item 4 Dffclt.Item 5“
感谢您的帮助!
答案 0 :(得分:0)
coef(x)
是类“rasch”对象的正确接口。您可以阅读函数coef.rasch
,了解它与$coef
之间的内部组件之间的区别:
> ltm::coef.rasch
function (object, prob = FALSE, order = FALSE, ...)
{
if (!inherits(object, "rasch"))
stop("Use only with 'rasch' objects.\n")
cof <- if (object$IRT.param) {
coefs <- IRT.parm(object)$parms
p <- length(coefs)
matrix(c(coefs[1:(p - 1)], rep(coefs[p], p - 1)), ncol = 2,
dimnames = list(colnames(object$X), c("Dffclt", "Dscrmn")))
}
else {
object$coef
}
if (prob)
cof <- cbind(cof, `P(x=1|z=0)` = plogis(object$coef[,
1]))
if (order)
cof <- cof[order(cof[, 1]), ]
cof
}
<environment: namespace:ltm>
因此,切换键是否使用IRT参数(默认为TRUE
)。关注文档...
如果
IRT.param = TRUE
,则参数估计值在通常的IRT参数化下报告,即logit(π_i)= beta(z - beta_i ^ *)。