首页 > 解决方案 > 与 R 中的 MLR 估计器进行逻辑 3 路交互

问题描述

我正在尝试重新创建最初在 MPlus 中完成的特定数据集的分析,而不是使用 R。但是,我不知道如何在 R 中使用逻辑回归指定 MLR 估计器。

我的原始模型如下所示:

Model1_logit <- glm(formula = Voluntary_Turnover_measure ~ IV_customerinjustice * Mod1_performance * Mod2_exhaustion
                     + dem_age + Demands + DJ + PJ + IntJ + InfJ, 
                family = binomial(link = "logit"), data = SIOP_REDUCED_DATA, na.rm=TRUE)
summary(Model1_logit)

由于某些术语彼此高度相关,因此完成此分析的研究人员使用 MLR 估计器进行更稳健的回归。我怎样才能在 R 中做到这一点?

非常感谢你的帮助!

标签: rlogistic-regressionrobust

解决方案


在下面的代码中lavaan()使用了包。样本数据是根据要拟合的问题创建的ML( maximum likelihood)。使用likelihood="wishart"类似于 MPlus 程序。如果需要手动安装cfa(),可以从这里下载软件包: 。lavaan()请注意,模型实现可能会因数据和参数而异。文档讨论了设置模型的替代方法。在这个样本模型中,没有使用所有因子,因为它遇到了方差问题。

导入库

library(lavaan)
library(cfa)

创建示例数据框

# Create sample data
Voluntary_Turnover_measure <- floor(runif(100,0,1.5))
IV_customerinjustice <- abs(rnorm(100,sd=.1))*2
Mod1_performance <- abs(rnorm(100,sd=.1))/10
Mod2_exhaustion <- abs(rnorm(100,sd=.1))/100
dem_age <- abs(floor(runif(100)*100))
Demands <- abs(rnorm(100))
DJ <- abs(rnorm(100))*20
PJ <- abs(rnorm(100))*10
IntJ <- runif(100,1,100)
InfJ <- IntJ**2
plot(IntJ, InfJ)
# Create dataframe
df <- data.frame(Voluntary_Turnover_measure, IV_customerinjustice, Mod1_performance, Mod2_exhaustion,
                 dem_age, Demands, DJ, PJ, IntJ, InfJ)

规范化数据框值

df_scaled <- scale(df)
df_scaled[,'Voluntary_Turnover_measure'] <- df[,'Voluntary_Turnover_measure']  # Response variable kept not normalized

指定型号

model1 <- 'Voluntary_Turnover_measure = ~ DJ + PJ + IntJ + dem_age +  Demands'

估计模型参数

model1.fit <- cfa(model1, data=df_scaled)
summary(model1.fit)

MLR 估计器

mlr.fit <- cfa(model1, 
               data = df_scaled, 
               likelihood = "wishart",
               estimator='MLR'
               )
summary(mlr.fit)

在此处输入图像描述


推荐阅读