SEMinR Lecture Series - REF-REF and REF-FOR Higher Order Construct Analysis

SEMinR Lecture Series REF-REF and REF-FOR Construct

SEMinR Lecture Series

This session is focused on how to estimate and validate REF-REF and REF-FOR Higher Order Constructs using SEMinR in Cran R

Reflective-Formative Higher Order Construct

  • A Reflective-Formative model is one where the first order has reflective indicators while in the second order the dimensions are formative. Here is how it looks

Steps in Analyzing Reflective-Reflective and Reflective-Formative Higher Order Construct

Step 1: Asses the Reliability and Validity for all the Lower Order Reflective Constructs (No matter whether they belong to a Reflective or Formative Higher Order Construct)

Step 2: Assess the Reliability and Validity of the Higher Order Reflective-Reflective Construct (At the Second Order/Level). Also include any reflective LOCs when assessing the Reliability and Validity of the Higher Order Ref-Ref model.

Step 3: Assess the Validity of the Higher/Second Order Formative Construct (Assess Collinearity, Indicators Weight, Factor Loadings).

Step 4: Evaluate the Structural Model

  • Collinearity Diagnostics
  • Assess the Structural Relationships
  • Explanatory Power

Example

  • The example model for this session is
  • Blue Solid Line: Reflective-Reflective
  • Red Dots: Reflective-Formative
  • Green Dashes: Lower Order Construct

Step 1: SEMinR Code

#One Reflective and One Formative - No Error
library(seminr)
# Load the Data
datas <- read.csv(file = "Data.csv", header = TRUE, sep = ",")
head(datas)
# Create measurement model
simple_mm = constructs(
  composite("Vision", multi_items("VIS", 1:4)),
  composite("Development", multi_items("DEV", 1:7)),
  composite("Rewards", multi_items("RW", 1:4)),
  composite("Assurance", multi_items("ASR", 1:4)),
  composite("Reliability", multi_items("REL", 1:5)),
  composite("Empathy", multi_items("EMP", 1:5)),
  composite("Responsiveness", multi_items("RES", 1:4)),
  composite("Organizational Performance", multi_items("OP", 1:5)))
# Create structural model
simple_sm = relationships(
  paths(from = c("Vision", "Development", "Rewards"), to = "Organizational Performance"),
  paths(from = c("Vision", "Development", "Rewards"), to = c("Assurance", "Reliability", "Empathy", "Responsiveness")),
  paths(from = c("Assurance", "Reliability", "Empathy", "Responsiveness"), to = "Organizational Performance"))
# Estimate the model
simple_model=estimate_pls(data=datas, measurement_model=simple_mm, structural_model=simple_sm)
plot(simple_model)
# Summarize the model results
summary_simple = summary(simple_model)
#Factor Loadings
summary_simple$loadings
#Reliability
summary_simple$reliability
#F&L Criteria
summary_simple$validity$fl_criteria
#HTMT
summary_simple$validity$htmt
#Cross Loadings
summary_simple$validity$cross_loadings
#Collinearity analysis
summary_simple$validity$vif_items

Step 2: SEMinR Code

#One Reflective and One Formative - No Error
library(seminr)
# Load the Data
datas <- read.csv(file = "F:\\YouTube Videos\\SEMinR\\Data.csv", header = TRUE, sep = ",")
head(datas)
# Create measurement model
simple_mm = constructs(
  composite("Vision", multi_items("VIS", 1:4)),
  composite("Development", multi_items("DEV", 1:7)),
  composite("Rewards", multi_items("RW", 1:4)),
  higher_composite("IM", c("Vision","Development","Rewards"), method = "two stage"),
  composite("Assurance", multi_items("ASR", 1:4)),
  composite("Reliability", multi_items("REL", 1:5)),
  composite("Empathy", multi_items("EMP", 1:5)),
  composite("Responsiveness", multi_items("RES", 1:4)),
  higher_composite("ISQ", c("Assurance","Reliability", "Empathy", "Responsiveness"), method = "two stage", weights = mode_B),
  composite("Organizational Performance", multi_items("OP", 1:5)))
# Create structural model
simple_sm = relationships(
  paths(from = "IM", to = "ISQ"),
  paths(from = "ISQ", to = "Organizational Performance"),
  paths(from = "IM", to = "Organizational Performance"))
# Estimate the model
simple_model=estimate_pls(data=datas, measurement_model=simple_mm, structural_model=simple_sm)
plot(simple_model)
# Summarize the model results
summary_simple = summary(simple_model)
#Factor Loadings
summary_simple$loadings
#Reliability
summary_simple$reliability
#F&L Criteria
summary_simple$validity$fl_criteria
#HTMT
summary_simple$validity$htmt
#Cross Loadings
summary_simple$validity$cross_loadings
#Collinearity analysis
summary_simple$validity$vif_items

# Bootstrap the model on the PLS Estimated Model
boot_model <- bootstrap_model(
  seminr_model = simple_model,
  nboot = 1000,
  cores = parallel::detectCores(),
  seed = 123)
# Store the summary of the bootstrapped model
# alpha sets the specified level for significance, i.e. 0.05
summary_boot <- summary(boot_model, alpha = 0.10)
summary_boot$bootstrapped_weights
summary_simple$validity$vif_items
summary_boot$bootstrapped_loadings
specific_effect_significance(boot_seminr_model = boot_model, from = "IM", through = "ISQ", to = "Organizational Performance", alpha = 0.05)
summary_boot$bootstrapped_paths
plot(boot_model)

Video Tutorial

Reference

Hair Jr, J. F., Hult, G. T. M., Ringle, C. M., Sarstedt, M., Danks, N. P., & Ray, S. (2021). Partial Least Squares Structural Equation Modeling (PLS-SEM) Using R: A Workbook.

Partial Least Squares Structural Equation Modeling (PLS-SEM) Using R

The tutorials on SEMinR are based on the mentioned book. The book is open source and available for download under this link.

Download PDF

Â