我试图重新创建最初在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中做到这一点?
非常感谢您的帮助!
答案 0 :(得分:0)
在lavaan()
包下面的代码中使用。根据适合ML
(maximum 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)