我正在引导15个不同单一维度的IRT参数估计值。我为每个维度使用以下代码(交换变量和数据框的相关更改)
BS <- function(formula, data, indices) {
d <- data[indices, drop=FALSE] # allows boot to select sample
fit <- ltm(DIM1A_IRT_Vars ~ z1, IRT.param=TRUE, start.val="random", na.action=NULL, control=list(GHk=35, iter.em=100, verbose=TRUE))
return(coef(fit))
}
bootDIM1A <- boot(data=DIM1A_IRT_Vars, statistic=BS, R=500, sim="ordinary")
#Ordinary nonparametric = empirical bootstrap
print(bootDIM1A, digits=10)
plot(bootDIM1A, index=1, qdist="norm")#index= refers to that coefficient in the list
boot.ci(bootDIM1A, type="all", index=10)#index= refers to that coefficient in the list
对于其中12个模型,我在调用boot.ci或boot.plot函数时没有问题,并且在生成所需结果方面一切都很好。但是,对于其中三个维度,我得到以下内容:
for boot.ci:[1]“t的所有值都等于2.3654985546995 \ n无法计算置信区间” for boot.plot:[1]“t *的所有值都等于2.3654985546995”
现在我确实看到/已经研究过处理这个问题的相关主题,但是没有人能提供一个“一刀切”的答案。更重要的是,因为15个引导中的12个没有产生这个错误,并且除了相关的唯一函数/对象标识符(即,DIM1A_IRT_vars变为DIM1B_IRT_vars等)之外我在代码中完全没有改变,我不明白为什么会发生这种情况对于这三个维度。我也试过删除评论,因为之前的用户建议,但没有改变任何东西。此外,在(coef(fit))之前删除返回不会改变任何东西。最后,我已经将bootstraps提升到600,这也没有改变结果。所有自举估计只重复原始样本的第一次估计,如下所示,其中一个维度有32个参数(16个难度估计值和16个判别估计值):
> bootDIM4A$t0[1:36]
[1] 2.3654986 2.3543770 2.9894745 1.9730266 2.0989111 2.2333604 2.2546996 3.4546528 3.3797208 5.1105451 1.5078148 17.0628991 3.1567948
[14] 4.1629080 2.1770134 4.0014715 1.0831248 0.9757742 0.9994559 1.2374123 1.8756228 1.2023270 1.3513075 1.1867299 1.8608412 0.5105291
[27] 1.3291120 0.2202287 2.4495431 1.0526343 1.1105217 0.6287497 NA NA NA NA
> bootDIM4A$t[1:200]
[1] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[17] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[33] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[49] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[65] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[81] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[97] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[113] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[129] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[145] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[161] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[177] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
[193] 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499 2.365499
任何想法都会非常感激。
答案 0 :(得分:0)
我会将你的BS功能更改为:
BS <- function(data, indices) {
d <- data[indices, ] # allows boot to select sample
fit <- ltm(d ~ z1, IRT.param=TRUE, start.val="random", na.action=NULL, control=list(GHk=35, iter.em=100, verbose=TRUE))
return(coef(fit))
}
然后使用它:
boot(data="your actual dataset with item responses", statistic=BS, R=500, sim="ordinary")
这应该有用。
这是来自WIRS
包的ltm
数据的示例:
> boot(data=WIRS, statistic=BS, R=500, sim="ordinary")
ORDINARY NONPARAMETRIC BOOTSTRAP
Call:
boot(data = WIRS, statistic = BS, R = 500, sim = "ordinary")
Bootstrap Statistics :
original bias std. error
t1* 3.4013781 7.52611046 59.3494490
t2* -0.9421109 -0.01612312 0.8377384
t3* 0.8093891 -0.17794274 0.6883230
t4* 1.3688871 -0.24206685 0.8511538
t5* 0.4762308 -0.10135528 0.3921645
t6* 1.6804624 -0.35333454 1.2908451
t7* 0.1533959 0.06739873 1.0988324
t8* 0.3676942 -0.18417850 1.0817039
t9* 1.7178883 -0.28775229 0.9994516
t10* 1.0101366 -0.21218369 0.6517991
t11* 2.0330472 -0.30806809 1.2112776
t12* 1.3745729 -0.23506519 0.8087398
由于数据集中有6个项目,并且包估计项目难度和项目识别参数,boot
产生12个参数的结果,其中前六个对应于项目困难(即,t1 *到t6 *),其余对应于项目区分(即t7 *至t12 *)。