Validación de Escalas para VIVANDA - Análisis Avanzado de Fiabilidad y Validez

VIVANDA, la cadena de supermercados premium, necesita validar su cuestionario de experiencia del cliente para su programa “Tarjeta Vivanda”. Se evaluarán 3 constructos clave:

  1. Exclusividad de Productos (EP1-EP3)

  2. Servicio Personalizado (SP1-SP3)

  3. Ambiente de Tienda (AT1-AT3)

Detalle de Ítems:

Constructo Ítem Enunciado Escala
Exclusividad EP1 “Productos únicos difíciles de encontrar en otros lugares” 1-5
EP2 “Variedad de productos gourmet/importados” 1-5
EP3 “Marcas exclusivas disponibles” 1-5
Servicio SP1 “Asesoramiento especializado en vinos/quesos” 1-5
SP2 “Servicio de embalaje para regalos” 1-5
SP3 “Recordatorio de pedidos frecuentes” 1-5
Ambiente AT1 “Diseño arquitectónico premium” 1-5
AT2 “Iluminación y música ambiental” 1-5
AT3 “Olores característicos agradables” 1-5

Objetivos:

  1. Calcular Fiabilidad Compuesta (CR) para cada constructo

  2. Evaluar Validez Convergente

  3. Verificar Validez Discriminante

  4. Generar insights accionables para el equipo de Marketing

Las encuestas recolectadas se encuentran en el archivo encuesta_Vivanda.csv.

datos=read.csv(file.choose())

Carga de la data y CFA

library(lavaan)
## This is lavaan 0.6-19
## lavaan is FREE software! Please report any bugs.
library(semTools)
## 
## ###############################################################################
## This is semTools 0.5-7
## All users of R (or SEM) are invited to submit functions or ideas for functions.
## ###############################################################################
library(psych)
## 
## Adjuntando el paquete: 'psych'
## The following objects are masked from 'package:semTools':
## 
##     reliability, skew
## The following object is masked from 'package:lavaan':
## 
##     cor2cov
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(semPlot)

modelo <- '
  exclusividad =~ EP1 + EP2 + EP3
  servicio =~ SP1 + SP2 + SP3
  ambiente =~ AT1 + AT2 + AT3
'

fit <- cfa(modelo, data=datos, missing="fiml", std.lv=TRUE)
summary(fit, standardized=TRUE)
## lavaan 0.6-19 ended normally after 60 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        30
## 
##   Number of observations                           500
##   Number of missing patterns                        38
## 
## Model Test User Model:
##                                                       
##   Test statistic                                29.113
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.216
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   exclusividad =~                                                       
##     EP1               0.452    0.032   14.057    0.000    0.452    0.814
##     EP2               0.498    0.038   13.203    0.000    0.498    0.731
##     EP3               0.097    0.010    9.279    0.000    0.097    0.468
##   servicio =~                                                           
##     SP1               0.643    0.031   20.851    0.000    0.643    0.838
##     SP2               0.662    0.035   19.156    0.000    0.662    0.777
##     SP3               0.630    0.029   21.995    0.000    0.630    0.870
##   ambiente =~                                                           
##     AT1               0.230    0.031    7.508    0.000    0.230    0.480
##     AT2               0.335    0.041    8.168    0.000    0.335    0.587
##     AT3               0.261    0.033    7.977    0.000    0.261    0.564
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   exclusividad ~~                                                       
##     servicio          0.020    0.056    0.365    0.715    0.020    0.020
##     ambiente         -0.031    0.069   -0.449    0.653   -0.031   -0.031
##   servicio ~~                                                           
##     ambiente          0.028    0.065    0.425    0.671    0.028    0.028
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EP1               4.505    0.025  178.503    0.000    4.505    8.113
##    .EP2               4.127    0.031  133.226    0.000    4.127    6.058
##    .EP3               4.959    0.009  525.192    0.000    4.959   24.004
##    .SP1               4.183    0.035  120.531    0.000    4.183    5.451
##    .SP2               3.632    0.039   94.068    0.000    3.632    4.262
##    .SP3               4.478    0.033  136.779    0.000    4.478    6.183
##    .AT1               4.654    0.022  211.903    0.000    4.654    9.697
##    .AT2               4.628    0.026  177.433    0.000    4.628    8.113
##    .AT3               4.787    0.021  226.482    0.000    4.787   10.358
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EP1               0.104    0.023    4.460    0.000    0.104    0.338
##    .EP2               0.216    0.031    7.048    0.000    0.216    0.465
##    .EP3               0.033    0.002   13.937    0.000    0.033    0.781
##    .SP1               0.176    0.020    8.907    0.000    0.176    0.298
##    .SP2               0.288    0.025   11.431    0.000    0.288    0.396
##    .SP3               0.128    0.017    7.420    0.000    0.128    0.244
##    .AT1               0.177    0.016   11.343    0.000    0.177    0.769
##    .AT2               0.213    0.026    8.082    0.000    0.213    0.656
##    .AT3               0.146    0.017    8.739    0.000    0.146    0.681
##     exclusividad      1.000                               1.000    1.000
##     servicio          1.000                               1.000    1.000
##     ambiente          1.000                               1.000    1.000

Gráfico para calculos.

semPaths(fit, whatLabels="std", edge.label.cex=0.6, layout="tree2",
         groups=list(c("EP1","EP2","EP3"), c("SP1","SP2","SP3"), c("AT1","AT2","AT3")))

  cargas <- inspect(fit, "std")$lambda
  var_error <- 1 - rowSums(cargas^2)
  
  resultados <- data.frame(
    Constructo = colnames(cargas),
    CR = apply(cargas, 2, function(x) sum(x)^2 / (sum(x)^2 + sum(1 - x^2))),
    AVE = apply(cargas, 2, function(x) mean(x^2))
  )

  print(knitr::kable(resultados, digits = 3, 
                   caption = "Métricas de Fiabilidad y Validez"))
## 
## 
## Table: Métricas de Fiabilidad y Validez
## 
## |             |Constructo   |    CR|   AVE|
## |:------------|:------------|-----:|-----:|
## |exclusividad |exclusividad | 0.348| 0.157|
## |servicio     |servicio     | 0.471| 0.229|
## |ambiente     |ambiente     | 0.247| 0.099|