############## Chapter 4 ###############
library(lavaan)
library(rio)
library(semTools)
library(semPlot)
# read in data
CustomerDelight <- import("Customer Delight Data_Student.sav")
# define model
mod <- '
behavior =~ adapt1 + adapt2 + adapt3 + adapt4 + adapt5
customer =~ delight1 + delight2 + delight3
word =~ WOM1 + WOM2 + WOM3
'
fit <- cfa( model = mod, data = CustomerDelight[, c(6:13, 39:41)])
summary(fit, fit.measures = TRUE, standardized=TRUE)
## lavaan 0.6-12 ended normally after 41 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 25
##
## Number of observations 500
##
## Model Test User Model:
##
## Test statistic 61.041
## Degrees of freedom 41
## P-value (Chi-square) 0.023
##
## Model Test Baseline Model:
##
## Test statistic 4760.823
## Degrees of freedom 55
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.996
## Tucker-Lewis Index (TLI) 0.994
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5794.488
## Loglikelihood unrestricted model (H1) -5763.968
##
## Akaike (AIC) 11638.977
## Bayesian (BIC) 11744.342
## Sample-size adjusted Bayesian (BIC) 11664.990
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.031
## 90 Percent confidence interval - lower 0.012
## 90 Percent confidence interval - upper 0.047
## P-value RMSEA <= 0.05 0.978
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.023
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## behavior =~
## adapt1 1.000 0.921 0.896
## adapt2 0.976 0.030 32.773 0.000 0.899 0.921
## adapt3 0.998 0.035 28.842 0.000 0.920 0.873
## adapt4 0.995 0.034 29.028 0.000 0.917 0.875
## adapt5 0.929 0.032 28.607 0.000 0.856 0.870
## customer =~
## delight1 1.000 0.700 0.857
## delight2 1.221 0.046 26.568 0.000 0.855 0.916
## delight3 1.193 0.050 23.673 0.000 0.836 0.843
## word =~
## WOM1 1.000 1.108 0.890
## WOM2 1.075 0.042 25.769 0.000 1.191 0.889
## WOM3 1.061 0.046 23.097 0.000 1.176 0.819
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## behavior ~~
## customer 0.446 0.040 11.249 0.000 0.691 0.691
## word 0.381 0.053 7.154 0.000 0.373 0.373
## customer ~~
## word 0.379 0.044 8.688 0.000 0.488 0.488
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .adapt1 0.208 0.017 12.496 0.000 0.208 0.197
## .adapt2 0.145 0.013 11.285 0.000 0.145 0.152
## .adapt3 0.264 0.020 13.224 0.000 0.264 0.238
## .adapt4 0.256 0.019 13.160 0.000 0.256 0.234
## .adapt5 0.236 0.018 13.302 0.000 0.236 0.244
## .delight1 0.178 0.015 11.579 0.000 0.178 0.266
## .delight2 0.141 0.017 8.133 0.000 0.141 0.161
## .delight3 0.284 0.023 12.105 0.000 0.284 0.289
## .WOM1 0.321 0.036 8.916 0.000 0.321 0.207
## .WOM2 0.375 0.042 8.979 0.000 0.375 0.209
## .WOM3 0.681 0.055 12.340 0.000 0.681 0.330
## behavior 0.849 0.066 12.798 0.000 1.000 1.000
## customer 0.491 0.042 11.665 0.000 1.000 1.000
## word 1.228 0.100 12.234 0.000 1.000 1.000
# Visualizing the model
semPaths(fit, "par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
