【问题标题】:Bootstrap likelihood ratio test using PoLCA models in R?在 R 中使用 PoLCA 模型进行自举似然比检验?
【发布时间】:2023-03-21 07:44:01
【问题描述】:

我有一个由 300 个人完成的 10 个李克特变量 (1-5) 的量表:

###set seed
set.seed(421)

###create random likert variables, N = 300
var1 <- sample(1:5, 300, replace = T)
var2 <- sample(1:5, 300, replace = T)
var3 <- sample(1:5, 300, replace = T)
var4 <- sample(1:5, 300, replace = T)
var5 <- sample(1:5, 300, replace = T)
var6 <- sample(1:5, 300, replace = T)
var7 <- sample(1:5, 300, replace = T)
var8 <- sample(1:5, 300, replace = T)
var9 <- sample(1:5, 300, replace = T)
var10 <- sample(1:5, 300, replace = T)

df = data.frame(cbind(var1, var2, var3, var4, var5,
                  var6, var7, var8, var9, var10))

使用PoLCA package,我使用不同数量的类对数据进行建模,如下所示:

###define group of functions to use
all_v <- cbind(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10) ~ 1

###set seed
set.seed(421)

###1 class
LCA_1 <- poLCA(all_v, data = df, nclass=1, maxiter=10000, 
                       graphs=T, tol=1e-10, na.rm=TRUE, probs.start=NULL, 
                       nrep=500, verbose=TRUE, calc.se=TRUE)

###2 classes
LCA_2 <- poLCA(all_v, data = df, nclass=2, maxiter=10000, 
                       graphs=T, tol=1e-10, na.rm=TRUE, probs.start=NULL, 
                       nrep=500, verbose=TRUE, calc.se=TRUE)

###3 classes
LCA_3 <- poLCA(all_v, data = df, nclass=3, maxiter=10000, 
                       graphs=T, tol=1e-10, na.rm=TRUE, probs.start=NULL, 
                       nrep=500, verbose=TRUE, calc.se=TRUE)

在评估拟合时,我知道我可以使用 PoLCA 提供的拟合统计数据(例如 BIC、AIC),并且我可以使用以下方法进行正常似然比检验:

###pick random LL's for each class of model
logLik_1 <- -2658.805
logLik_2 <- -2658.055
logLik_3 <- -4668.640

###conduct example LL test using these values
teststat <- -2 * (logLik_1 - logLik_2)
pchisq(teststat, df = 5, lower.tail = F)

不过,从我看到的文献来看,现在更可取的是运行引导似然比检验。我尝试使用R mirt package 中的 boot.LR 函数,但出现此错误:

Error in boot.LR(LCA_1, LCA_2) : is(mod, "SingleGroupClass") is not TRUE

有什么建议吗?非常感谢您的时间/帮助。

【问题讨论】:

    标签: r statistics-bootstrap


    【解决方案1】:

    看来如果要使用boot.LR函数,基本形式的boot.LR(mod, mod2, R = 1000)mod1mod2对象需要从mirt()函数中获取。 在boot.LR函数中,有is(mod, "SingleGroupClass")条件,"SingleGroupClass"定义了模型探索时从mirt返回的对象。 ("SingleGroupClass",boot.LR source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-11
      • 2018-08-10
      • 2018-02-15
      • 2016-11-09
      • 2015-01-21
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多