R中与MLR估计器进行逻辑3交互

时间:2018-07-14 19:28:08

标签: r logistic-regression robust

我试图重新创建最初在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中做到这一点?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

lavaan()包下面的代码中使用。根据适合MLmaximum likelihood)的问题创建样本数据。 likelihood="wishart"的使用类似于MPlus程序。可从以下位置下载软件包:cfa()lavaan()(如果需要手动安装)。请注意,模型的实现可能会因数据和参数而异。Documentation讨论了建立模型的其他方法。在此样本模型中,未使用所有因素,因为它会遇到方差问题。

导入库

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)

enter image description here