Structural Equation Modeling

Overview

Employee Engagement Analysis: This project uses Structural Equation Modeling to assess the impact of leadership, workplace environment, training, and coworker relationships on job satisfaction and engagement. With data from 500 simulated employees, I identified critical workplace engagement factors, backed by statistical insights and clear visual representations.

Objectives

  • Evaluate the underlying relationships between leadership quality, workplace environment, training efficacy, and coworker relationships.
  • Determine the influence of these factors on employee job satisfaction and subsequent engagement.
  • Offer actionable insights for organizations aiming to improve workplace satisfaction and engagement.

Data Visualization

Methodology

  • Data Simulation: Generated synthetic data for 500 employees, incorporating aspects such as leadership quality, training effectiveness, coworker relationships, and work environment.
  • Structural Equation Modeling (SEM): Developed a model to estimate the relationships between latent and observed variables, and to study the causal effects.

Tools & Technologies

  • R: For statistical analysis and data visualization.
  • lavaan package: Employed for conducting Structural Equation Modeling.
  • semTools & semPlot packages: Utilized for advanced visualization of the SEM model.

Key Results

  • Both leadership quality and workplace environment significantly influenced job satisfaction and, in turn, employee engagement.
  • Training showed a direct and indirect (via job satisfaction) impact on employee engagement.

Code & Resources

set.seed(123)
n <- 500
latent_leader_quality <- rnorm(n)
latent_work_env <- rnorm(n)
latent_training <- rnorm(n)
latent_coworker_rel <- rnorm(n)

leader_quality1 <- 0.7 * latent_leader_quality + rnorm(n)
leader_quality2 <- 0.8 * latent_leader_quality + rnorm(n)
work_env1 <- 0.9 * latent_work_env + rnorm(n)
work_env2 <- 0.6 * latent_work_env + rnorm(n)
training1 <- 0.85 * latent_training + rnorm(n)
training2 <- 0.75 * latent_training + rnorm(n)
coworker_rel1 <- 0.9 * latent_coworker_rel + rnorm(n)
coworker_rel2 <- 0.8 * latent_coworker_rel + rnorm(n)

job_satisfaction <- 0.5*latent_leader_quality + 0.4*latent_work_env + 0.3*latent_training + 0.3*latent_coworker_rel + rnorm(n)
employee_engagement <- 0.8*job_satisfaction + 0.2*latent_training + rnorm(n)


data <- data.frame(leader_quality1, leader_quality2, work_env1, work_env2, training1, training2, coworker_rel1, coworker_rel2, job_satisfaction, employee_engagement)

model <- '
  # Latent variables
  leadership =~ leader_quality1 + leader_quality2
  work_env =~ work_env1 + work_env2
  training =~ training1 + training2
  coworker_rel =~ coworker_rel1 + coworker_rel2

  # Structural model
  job_satisfaction ~ leadership + work_env + training + coworker_rel
  employee_engagement ~ job_satisfaction + training
'

fit <- sem(model, data=data)

summary(fit, standardized = TRUE)

library(semTools)
library(semPlot)

semPaths(fit, whatLabels = "est", layout = "tree", edge.label.cex = 0.7)