boot.ci中的错误,启动R包 - Redux

时间:2016-06-12 05:09:19

标签: r

我正在引导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

任何想法都会非常感激。

1 个答案:

答案 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 *)。