TALLER ANÁLISIS FACTORIAL Y CONSISTENCIA INTERNA
Curso: Validación de mediciones y escalas en salud
Maestría en Epidemiología
Facultad Nacional de Salud Pública
Universidad de Antioquia

Objetivos
1. Aplicar los métodos para la descripción estadística de un proceso de validación de bases de datos.
2. Aplicar los métodos para el análisis factorial exploratorio de una validación de escalas.
3. Interpretar los resultados y definir teóricamente los factores en una validación.
4. Aplicar los métodos para el análisis factorial confirmatorio de una validación de escalas.
5. Interpretar los resultados de un análisis factorial confirmatorio como parte de un proceso de evaluación de la validez estructural.
6. Aplicar los métodos e interpretar los resultados de un proceso de evaluación de la consistencia interna de un instrumento.

Nota: Por favor, no leer de corrido el taller, leer cada parte y resolverlo antes de pasar al siguiente. Esto permitirá mantener la dinámica del proceso

if(!require(psych)) install.packages("psych")
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(lavaan)) install.packages("lavaan")
if(!require(MVN)) install.packages("MVN")
if(!require(gridExtra)) install.packages("gridExtra")
if(!require(foreign)) install.packages("foreign")
if(!require(GPArotation)) install.packages("GPArotation")
if(!require(corrplot)) install.packages("corrplot") 
if(!require(readxl)) install.packages("readxl") 
if(!require(lavaanPlot)) install.packages("lavaanPlot") 
afe <- read_excel("afe.xlsx")
afe1 <- afe
afc <- read_excel("afc.xlsx")
afc1<-afc

Parte 1: Análisis factorial exploratorio

Imagine que usted es un investigador en salud que ha desarrollado una escala para la medición de la calidad de vida relacionada con la salud en personas con autismo. Durante este proceso usted ya ha realizado diferentes procesos para la generación de los ítems, la forma de puntuación, la evaluación de la validez de apariencia y contenido y un piloto.

Ahora usted realizó una aplicación de su instrumento de 10 ítems en 352 personas con autismo.

Las preguntas son:

Número Pregunta
1 ¿Cuánto disfruta de la vida?
2 ¿En qué medida siente que su vida tiene sentido?
3 ¿Tiene energía suficiente para la vida diaria?
4 Tiene suficiente dinero para cubrir sus necesidades?
5 ¿Qué disponibilidad tiene de la información que necesita en su vida diaria?
6 ¿Es capaz de desplazarse de un lugar a otro?
7 ¿Cuán satisfecho/a está con su capacidad de trabajo?
8 ¿Cuán satisfecho/a está de sí mismo?
9 ¿Cuán satisfecho/a está de las condiciones del lugar donde vive?
10 ¿Cuán satisfecho/a está con el acceso que tiene a los servicios sanitarios?

Todas las preguntas se responden en una escala Likert de 1 a 5, donde 5 representa mayor intensidad del constructo medido y 1 menor intensidad, la opción 3 representa un nivel neutro en la pregunta.

1. Descripción estadística

1.1. Descripción de los datos

Realice inspección de los datos y describa los datos en términos estadísticos ¿Qué piensa o qué interpreta de los datos? ¿Tienen distribución normal? ¿Cuál es la medida de tendencia central y de dispersión? ¿Existe efecto piso o efecto techo?

tabla1 <-describe(afe1, quant=c(.1,.25,.5,.75,.90))
tabla1 <-tabla1[c(2,3,4,5,8, 9, 11,12,13, 14, 15, 16,17,18)]
colnames(tabla1) <-c("Número de observaciones", "Media", "Desviación estándar", "Mediana", "Mínimo", "Máximo" ,"Sesgo", "Curtosis", "Error Estándar", "P10", "P25" ,"P50", "P75", "P90")
tabla1
##     Número de observaciones Media Desviación estándar Mediana Mínimo Máximo
## P1                      352  2.78                0.93       3      1      5
## P2                      352  2.55                1.11       3      1      5
## P3                      352  2.84                1.15       3      1      5
## P4                      352  3.25                1.29       3      1      5
## P5                      352  3.28                1.10       3      1      5
## P6                      352  3.66                1.19       4      1      5
## P7                      352  2.52                1.26       2      1      5
## P8                      352  2.63                1.11       3      1      5
## P9                      352  3.37                1.22       4      1      5
## P10                     352  3.11                1.23       3      1      5
##     Sesgo Curtosis Error Estándar P10 P25 P50 P75 P90
## P1  -0.01    -0.36           0.05   2   2   3   3   4
## P2   0.06    -1.08           0.06   1   2   3   3   4
## P3   0.12    -0.94           0.06   1   2   3   4   4
## P4  -0.30    -1.00           0.07   1   2   3   4   5
## P5  -0.31    -0.63           0.06   2   3   3   4   5
## P6  -0.54    -0.69           0.06   2   3   4   5   5
## P7   0.42    -0.94           0.07   1   1   2   4   4
## P8   0.20    -0.79           0.06   1   2   3   3   4
## P9  -0.37    -0.88           0.07   2   2   4   4   5
## P10 -0.27    -0.97           0.07   1   2   3   4   5
tabla2 <- t(apply((afe1), 2, table))
tabla2
##      1   2   3   4   5
## P1  31  99 148  65   9
## P2  78  91 102  75   6
## P3  43 110  85  88  26
## P4  46  56  82 101  67
## P5  24  62 102 120  44
## P6  18  48  76 103 107
## P7  90 106  66  62  28
## P8  61 107 101  67  16
## P9  30  63  75 116  68
## P10 49  63  83 116  41
list <-lapply(1:ncol(afe1),
              function(col) ggplot2::qplot(afe1[[col]],
                                           geom = "histogram",
                                           binwidth = 1))
cowplot::plot_grid(plotlist = list)

# 1.2. Normalidad

Realice evaluación de la normalidad univariada y multivariada. ¿Por qué es importante?

mvn(afe1, mvnTest = "mardia" , univariateTest   = "SW", multivariatePlot    = "qq", univariatePlot="histogram")

## $multivariateNormality
##              Test        Statistic              p value Result
## 1 Mardia Skewness 333.365795118388 1.21655900528497e-06     NO
## 2 Mardia Kurtosis 4.78017001058921 1.75147020398114e-06     NO
## 3             MVN             <NA>                 <NA>     NO
## 
## $univariateNormality
##            Test  Variable Statistic   p value Normality
## 1  Shapiro-Wilk    P1        0.8988  <0.001      NO    
## 2  Shapiro-Wilk    P2        0.8898  <0.001      NO    
## 3  Shapiro-Wilk    P3        0.9079  <0.001      NO    
## 4  Shapiro-Wilk    P4        0.8980  <0.001      NO    
## 5  Shapiro-Wilk    P5        0.9071  <0.001      NO    
## 6  Shapiro-Wilk    P6        0.8745  <0.001      NO    
## 7  Shapiro-Wilk    P7        0.8842  <0.001      NO    
## 8  Shapiro-Wilk    P8        0.9075  <0.001      NO    
## 9  Shapiro-Wilk    P9        0.8969  <0.001      NO    
## 10 Shapiro-Wilk    P10       0.8996  <0.001      NO    
## 
## $Descriptives
##       n     Mean   Std.Dev Median Min Max 25th 75th         Skew   Kurtosis
## P1  352 2.778409 0.9347912      3   1   5    2    3 -0.007907398 -0.3555838
## P2  352 2.545455 1.1058930      3   1   5    2    3  0.055515104 -1.0800013
## P3  352 2.840909 1.1511061      3   1   5    2    4  0.121797840 -0.9405929
## P4  352 3.247159 1.2937469      3   1   5    2    4 -0.299027847 -0.9985726
## P5  352 3.278409 1.1025946      3   1   5    3    4 -0.309432056 -0.6318281
## P6  352 3.661932 1.1896633      4   1   5    3    5 -0.542581484 -0.6897798
## P7  352 2.522727 1.2629028      2   1   5    1    4  0.422880296 -0.9394848
## P8  352 2.630682 1.1119509      3   1   5    2    3  0.203680900 -0.7888096
## P9  352 3.366477 1.2215123      4   1   5    2    4 -0.368048647 -0.8757003
## P10 352 3.105114 1.2347195      3   1   5    2    4 -0.271887625 -0.9718959

2. Análisis factorial exploratorio

2.1. Correlaciones

Revise la matriz de correlaciones de los ítems, ¿existe correlación? ¿Hay correlaciones entre |0,3| a |0,7|? En caso de que sí, por qué esto es importante y de forma visual qué piensa de esta. En caso de que no, ¿qué piensa de este hallazgo?

corafe <- cor(afe1, method= "spearman")
corrplot(corafe, method = "number")

2.2. Test de esfericidad de Bartlett

Realice el test de esfericidad de Bartlett ¿Qué evalúa este? ¿Qué es la matriz identidad? ¿Cuáles son las Ha y Ho de este? Utiice un nivel de alfa de 0,05. ¿Qué significa el resultado?

cortest.bartlett(afe1)
## R was not square, finding R from data
## $chisq
## [1] 1291.486
## 
## $p.value
## [1] 4.086553e-241
## 
## $df
## [1] 45

2.3. Medida de adecuación de Kaiser-Meyer-Olkin.

Realice el nivel cálculo cálculo de la medida de adecuación de Kaiser-Meyer-Olkin. Según los criterios de Kaiser, ¿cómo interpreta el resultado?

KMO(corafe)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = corafe)
## Overall MSA =  0.89
## MSA for each item = 
##   P1   P2   P3   P4   P5   P6   P7   P8   P9  P10 
## 0.87 0.84 0.92 0.89 0.90 0.92 0.89 0.88 0.89 0.90

2.4. Definición del número de factores

Defina el número de factores, para esto utilice tres criterios: 1. El criterio de Kaiser 2. El criterio gráfico (utilizando el gráfico de sedimentación o Cattell’s Scree Test) 3. Mediante el análisis paralelo de Horn

¿Cuántos factores encuentra utilizando los tres criterios? ¿Con cuantos criterios factores decide quedarse?

eigbd2<- eigen(corafe)
round(eigbd2$values, 2)
##  [1] 4.56 1.19 0.84 0.69 0.57 0.51 0.49 0.44 0.38 0.33
fa.parallel(afe1, fm ="wls")

## Parallel analysis suggests that the number of factors =  2  and the number of components =  1

2.5. Análisis factorial exploratorio

Realice el análisis factorial Realice un primer análisis factorial sin rotación, luego con una rotación ortogonal (intente con varimax), luego con una no ortogonal (intente con oblimin)

fa1<- fa(afe1, nfactors = 2, fm="wls", rotate ="none")
print(fa1, sort=T)
## Factor Analysis using method =  wls
## Call: fa(r = afe1, nfactors = 2, rotate = "none", fm = "wls")
## Standardized loadings (pattern matrix) based upon correlation matrix
##     item WLS1  WLS2   h2   u2 com
## P1     1 0.72 -0.34 0.63 0.37 1.4
## P3     3 0.68  0.00 0.47 0.53 1.0
## P7     7 0.67 -0.05 0.45 0.55 1.0
## P8     8 0.66 -0.39 0.60 0.40 1.6
## P5     5 0.65  0.31 0.52 0.48 1.4
## P2     2 0.63 -0.33 0.50 0.50 1.5
## P6     6 0.61  0.24 0.43 0.57 1.3
## P10   10 0.59  0.17 0.37 0.63 1.2
## P4     4 0.57  0.32 0.43 0.57 1.6
## P9     9 0.57  0.21 0.37 0.63 1.3
## 
##                       WLS1 WLS2
## SS loadings           4.06 0.70
## Proportion Var        0.41 0.07
## Cumulative Var        0.41 0.48
## Proportion Explained  0.85 0.15
## Cumulative Proportion 0.85 1.00
## 
## Mean item complexity =  1.3
## Test of the hypothesis that 2 factors are sufficient.
## 
## The degrees of freedom for the null model are  45  and the objective function was  3.72 with Chi Square of  1291.49
## The degrees of freedom for the model are 26  and the objective function was  0.24 
## 
## The root mean square of the residuals (RMSR) is  0.04 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic number of observations is  352 with the empirical chi square  53.16  with prob <  0.0013 
## The total number of observations was  352  with Likelihood Chi Square =  84.54  with prob <  4.1e-08 
## 
## Tucker Lewis Index of factoring reliability =  0.918
## RMSEA index =  0.08  and the 90 % confidence intervals are  0.061 0.099
## BIC =  -67.91
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy             
##                                                   WLS1 WLS2
## Correlation of (regression) scores with factors   0.94 0.77
## Multiple R square of scores with factors          0.89 0.60
## Minimum correlation of possible factor scores     0.78 0.19
fa.diagram(fa1)

fa2<- fa(afe1, nfactors = 2, fm="wls", rotate ="varimax")
print(fa2, sort=T)
## Factor Analysis using method =  wls
## Call: fa(r = afe1, nfactors = 2, rotate = "varimax", fm = "wls")
## Standardized loadings (pattern matrix) based upon correlation matrix
##     item WLS1 WLS2   h2   u2 com
## P5     5 0.68 0.22 0.52 0.48 1.2
## P4     4 0.63 0.16 0.43 0.57 1.1
## P6     6 0.61 0.24 0.43 0.57 1.3
## P9     9 0.56 0.24 0.37 0.63 1.4
## P10   10 0.55 0.27 0.37 0.63 1.5
## P3     3 0.50 0.47 0.47 0.53 2.0
## P8     8 0.22 0.74 0.60 0.40 1.2
## P1     1 0.30 0.74 0.63 0.37 1.3
## P2     2 0.23 0.67 0.50 0.50 1.2
## P7     7 0.46 0.49 0.45 0.55 2.0
## 
##                       WLS1 WLS2
## SS loadings           2.49 2.27
## Proportion Var        0.25 0.23
## Cumulative Var        0.25 0.48
## Proportion Explained  0.52 0.48
## Cumulative Proportion 0.52 1.00
## 
## Mean item complexity =  1.4
## Test of the hypothesis that 2 factors are sufficient.
## 
## The degrees of freedom for the null model are  45  and the objective function was  3.72 with Chi Square of  1291.49
## The degrees of freedom for the model are 26  and the objective function was  0.24 
## 
## The root mean square of the residuals (RMSR) is  0.04 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic number of observations is  352 with the empirical chi square  53.16  with prob <  0.0013 
## The total number of observations was  352  with Likelihood Chi Square =  84.54  with prob <  4.1e-08 
## 
## Tucker Lewis Index of factoring reliability =  0.918
## RMSEA index =  0.08  and the 90 % confidence intervals are  0.061 0.099
## BIC =  -67.91
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy             
##                                                   WLS1 WLS2
## Correlation of (regression) scores with factors   0.86 0.87
## Multiple R square of scores with factors          0.73 0.75
## Minimum correlation of possible factor scores     0.47 0.51
fa.diagram(fa2)

fa3<- fa(afe1, nfactors = 2, fm="wls", rotate ="oblimin")
print(fa3, sort=T)
## Factor Analysis using method =  wls
## Call: fa(r = afe1, nfactors = 2, rotate = "oblimin", fm = "wls")
## Standardized loadings (pattern matrix) based upon correlation matrix
##     item  WLS1  WLS2   h2   u2 com
## P5     5  0.74 -0.03 0.52 0.48 1.0
## P4     4  0.70 -0.08 0.43 0.57 1.0
## P6     6  0.64  0.03 0.43 0.57 1.0
## P9     9  0.58  0.05 0.37 0.63 1.0
## P10   10  0.55  0.09 0.37 0.63 1.1
## P3     3  0.40  0.35 0.47 0.53 2.0
## P8     8 -0.05  0.80 0.60 0.40 1.0
## P1     1  0.05  0.77 0.63 0.37 1.0
## P2     2  0.00  0.71 0.50 0.50 1.0
## P7     7  0.35  0.39 0.45 0.55 2.0
## 
##                       WLS1 WLS2
## SS loadings           2.55 2.22
## Proportion Var        0.25 0.22
## Cumulative Var        0.25 0.48
## Proportion Explained  0.53 0.47
## Cumulative Proportion 0.53 1.00
## 
##  With factor correlations of 
##      WLS1 WLS2
## WLS1 1.00 0.63
## WLS2 0.63 1.00
## 
## Mean item complexity =  1.2
## Test of the hypothesis that 2 factors are sufficient.
## 
## The degrees of freedom for the null model are  45  and the objective function was  3.72 with Chi Square of  1291.49
## The degrees of freedom for the model are 26  and the objective function was  0.24 
## 
## The root mean square of the residuals (RMSR) is  0.04 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic number of observations is  352 with the empirical chi square  53.16  with prob <  0.0013 
## The total number of observations was  352  with Likelihood Chi Square =  84.54  with prob <  4.1e-08 
## 
## Tucker Lewis Index of factoring reliability =  0.918
## RMSEA index =  0.08  and the 90 % confidence intervals are  0.061 0.099
## BIC =  -67.91
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy             
##                                                   WLS1 WLS2
## Correlation of (regression) scores with factors   0.91 0.92
## Multiple R square of scores with factors          0.83 0.84
## Minimum correlation of possible factor scores     0.66 0.69
fa.diagram(fa3)

2.6. Conclusión

De acuerdo al método que usted seleccionó, ¿qué piensa de los resultados? ¿Cómo llamaría a los dominios encontrados? ¿por qué? ¿ qué sustento teórico utiliza para definirlos? ¿Cómo estos factores “encajan” en el constructo de calidad de vida relacionada con la salud?

Parte 2. Análisis factorial confirmatorio

Imagine que usted es un investigador en salud que está evaluando la validez estructural de una escala para medir la calidad de vida relacionada con la salud en personas con autismo. Usted decide realizar esta evaluación mediante un análisis factorial confirmatorio. Para esto usted aplica los 10 ítems del instrumento en 352 participantes.

Las preguntas son:

Número Pregunta
1 ¿En qué medida piensa que el dolor (físico) le impide hacer lo que necesita?
2 ¿Cuánto disfruta de la vida?
3 ¿Cuál es su capacidad de concentración?
4 ¿Cuánta seguridad siente en su vida diaria?
5 ¿Tiene energía suficiente para la vida diaria?
6 ¿Tiene suficiente dinero para cubrir sus necesidades?
7 ¿Cuán satisfecho/a está con su sueño?
8 ¿Cuán satisfecho/a está con su capacidad de trabajo?
9 ¿Cuán satisfecho/a está de sí mismo?
10 ¿Cuán satisfecho/a está de las condiciones del lugar donde vive?

Todas las preguntas se responden en una escala Likert de 1 a 5, donde 5 representa mayor intensidad del constructo medido y 1 menor intensidad, la opción 3 representa un nivel neutro en la pregunta.

1. Descripción estadística de los datos

1.1. Descripción de los datos

Realice inspección de los datos y describa los datos en términos estadísticos ¿Qué piensa o qué interpreta de los datos? ¿Tienen distribución normal? ¿Cuál es la medida de tendencia central y de dispersión? ¿Existe efecto piso o efecto techo?

tabla3 <-describe(afc1, quant=c(.1,.25,.5,.75,.90))
tabla3 <-tabla3[c(2,3,4,5,8, 9, 11,12,13, 14, 15, 16,17,18)]
colnames(tabla3) <-c("Número de observaciones", "Media", "Desviación estándar", "Mediana", "Mínimo", "Máximo" ,"Sesgo", "Curtosis", "Error Estándar", "P10", "P25" ,"P50", "P75", "P90")
tabla3
##     Número de observaciones Media Desviación estándar Mediana Mínimo Máximo
## P1                      352  2.86                1.41       3      1      5
## P2                      352  2.78                0.93       3      1      5
## P3                      352  2.81                0.97       3      1      5
## P4                      352  3.02                1.06       3      1      5
## P5                      352  2.84                1.15       3      1      5
## P6                      352  3.25                1.29       3      1      5
## P7                      352  2.66                1.26       3      1      5
## P8                      352  2.52                1.26       2      1      5
## P9                      352  2.63                1.11       3      1      5
## P10                     352  3.37                1.22       4      1      5
##     Sesgo Curtosis Error Estándar P10 P25 P50 P75 P90
## P1   0.13    -1.30           0.08   1   2   3   4   5
## P2  -0.01    -0.36           0.05   2   2   3   3   4
## P3   0.30    -0.25           0.05   2   2   3   3   4
## P4  -0.14    -0.42           0.06   2   2   3   4   4
## P5   0.12    -0.94           0.06   1   2   3   4   4
## P6  -0.30    -1.00           0.07   1   2   3   4   5
## P7   0.18    -1.16           0.07   1   2   3   4   4
## P8   0.42    -0.94           0.07   1   1   2   4   4
## P9   0.20    -0.79           0.06   1   2   3   3   4
## P10 -0.37    -0.88           0.07   2   2   4   4   5
tabla4 <- t(apply((afc1), 2, table))
tabla4
##      1   2   3   4  5
## P1  81  75  69  66 61
## P2  31  99 148  65  9
## P3  24 115 137  57 19
## P4  34  63 144  84 27
## P5  43 110  85  88 26
## P6  46  56  82 101 67
## P7  80  94  67  86 25
## P8  90 106  66  62 28
## P9  61 107 101  67 16
## P10 30  63  75 116 68
list <-lapply(1:ncol(afc1),
              function(col) ggplot2::qplot(afc1[[col]],
                                           geom = "histogram",
                                           binwidth = 1))
cowplot::plot_grid(plotlist = list)

2. Análisis factorial confirmatorio

2.1. Correlaciones

Revise la matriz de correlaciones de los ítems, ¿existe correlación? En caso de que sí, por qué esto es importante y de forma visual qué piensa de esta. En caso de que no, ¿qué piensa de este hallazgo?

corafc <- cor(afc1, method= "spearman")
corrplot(corafc, method = "number")

2.2. Normalidad multivariada

Evalúe si hay normalidad multivariada ¿por qué importa esto? En caso de que no haya, qué precauciones se deben tener para estimar el modelo?

mvn(afc1, mvnTest = "mardia" , univariateTest   = "SW", multivariatePlot    = "qq", univariatePlot="histogram")

## $multivariateNormality
##              Test        Statistic              p value Result
## 1 Mardia Skewness 301.734364449273 0.000209085806134511     NO
## 2 Mardia Kurtosis 2.23206140839474   0.0256109045903576     NO
## 3             MVN             <NA>                 <NA>     NO
## 
## $univariateNormality
##            Test  Variable Statistic   p value Normality
## 1  Shapiro-Wilk    P1        0.8854  <0.001      NO    
## 2  Shapiro-Wilk    P2        0.8988  <0.001      NO    
## 3  Shapiro-Wilk    P3        0.8984  <0.001      NO    
## 4  Shapiro-Wilk    P4        0.9084  <0.001      NO    
## 5  Shapiro-Wilk    P5        0.9079  <0.001      NO    
## 6  Shapiro-Wilk    P6        0.8980  <0.001      NO    
## 7  Shapiro-Wilk    P7        0.8917  <0.001      NO    
## 8  Shapiro-Wilk    P8        0.8842  <0.001      NO    
## 9  Shapiro-Wilk    P9        0.9075  <0.001      NO    
## 10 Shapiro-Wilk    P10       0.8969  <0.001      NO    
## 
## $Descriptives
##       n     Mean   Std.Dev Median Min Max 25th 75th         Skew   Kurtosis
## P1  352 2.860795 1.4143938      3   1   5    2    4  0.125693426 -1.2956598
## P2  352 2.778409 0.9347912      3   1   5    2    3 -0.007907398 -0.3555838
## P3  352 2.806818 0.9708921      3   1   5    2    3  0.298894295 -0.2509318
## P4  352 3.019886 1.0552552      3   1   5    2    4 -0.140997385 -0.4186901
## P5  352 2.840909 1.1511061      3   1   5    2    4  0.121797840 -0.9405929
## P6  352 3.247159 1.2937469      3   1   5    2    4 -0.299027847 -0.9985726
## P7  352 2.664773 1.2636076      3   1   5    2    4  0.181481873 -1.1608267
## P8  352 2.522727 1.2629028      2   1   5    1    4  0.422880296 -0.9394848
## P9  352 2.630682 1.1119509      3   1   5    2    3  0.203680900 -0.7888096
## P10 352 3.366477 1.2215123      4   1   5    2    4 -0.368048647 -0.8757003

2.3. Declaración del modelo

Usted conoce que el instrumento tiente 3 dimensiones: una llamada función física (pregunas 1, 5, 7 y 8), otra llamada función psicológica (preguntas 2, 3 y 9) y otra llamada interacción con el ambiente (prefuntas 4, 6 y 10) ¿Cómo las diagramaría usted? (Realice el diagrama en R o a mano)

model <- '

  #model
  Física =~ P1 + P5 + P7 + P8
  Psicológica =~ P2 + P3 +  P9
  Ambiente =~ P4 + P10 + P6
'

2.4. Evaluación del ajuste al modelo

Estime el ajuste de los datos al modelo teórico. ¿Cuáles son las medidas de bondad de ajuste que utilizará y por qué? ¿Qué representan o indican cada una de ellas? ¿Qué umbrales va a utilizar?

cfa <-cfa(model, ordered= T, data = afc1)
summary(cfa, standardized = T, fit.measures=T)
## lavaan 0.6-10 ended normally after 100 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of model parameters                        53
##                                                       
##   Number of observations                           352
##                                                       
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                                52.994      86.549
##   Degrees of freedom                                32          32
##   P-value (Chi-square)                           0.011       0.000
##   Scaling correction factor                                  0.644
##   Shift parameter                                            4.281
##        simple second-order correction                             
## 
## Model Test Baseline Model:
## 
##   Test statistic                              3564.206    2129.249
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.688
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.994       0.974
##   Tucker-Lewis Index (TLI)                       0.992       0.963
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.043       0.070
##   90 Percent confidence interval - lower         0.021       0.052
##   90 Percent confidence interval - upper         0.063       0.088
##   P-value RMSEA <= 0.05                          0.686       0.033
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.047       0.047
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Física =~                                                             
##     P1                1.000                               0.053    0.053
##     P5               15.154   15.274    0.992    0.321    0.796    0.796
##     P7               11.782   11.840    0.995    0.320    0.619    0.619
##     P8               14.563   14.724    0.989    0.323    0.765    0.765
##   Psicológica =~                                                        
##     P2                1.000                               0.763    0.763
##     P3                0.772    0.062   12.520    0.000    0.589    0.589
##     P9                0.998    0.057   17.404    0.000    0.761    0.761
##   Ambiente =~                                                           
##     P4                1.000                               0.704    0.704
##     P10               0.941    0.078   12.099    0.000    0.663    0.663
##     P6                0.880    0.083   10.632    0.000    0.620    0.620
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Física ~~                                                             
##     Psicológica       0.037    0.037    0.985    0.324    0.914    0.914
##     Ambiente          0.029    0.030    0.978    0.328    0.792    0.792
##   Psicológica ~~                                                        
##     Ambiente          0.395    0.038   10.353    0.000    0.735    0.735
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .P1                0.000                               0.000    0.000
##    .P5                0.000                               0.000    0.000
##    .P7                0.000                               0.000    0.000
##    .P8                0.000                               0.000    0.000
##    .P2                0.000                               0.000    0.000
##    .P3                0.000                               0.000    0.000
##    .P9                0.000                               0.000    0.000
##    .P4                0.000                               0.000    0.000
##    .P10               0.000                               0.000    0.000
##    .P6                0.000                               0.000    0.000
##     Física            0.000                               0.000    0.000
##     Psicológica       0.000                               0.000    0.000
##     Ambiente          0.000                               0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     P1|t1            -0.738    0.074   -9.984    0.000   -0.738   -0.738
##     P1|t2            -0.143    0.067   -2.128    0.033   -0.143   -0.143
##     P1|t3             0.356    0.068    5.205    0.000    0.356    0.356
##     P1|t4             0.941    0.079   11.935    0.000    0.941    0.941
##     P5|t1            -1.164    0.086  -13.493    0.000   -1.164   -1.164
##     P5|t2            -0.165    0.067   -2.447    0.014   -0.165   -0.165
##     P5|t3             0.457    0.069    6.575    0.000    0.457    0.457
##     P5|t4             1.448    0.100   14.508    0.000    1.448    1.448
##     P7|t1            -0.748    0.074  -10.084    0.000   -0.748   -0.748
##     P7|t2            -0.014    0.067   -0.213    0.831   -0.014   -0.014
##     P7|t3             0.481    0.070    6.889    0.000    0.481    0.481
##     P7|t4             1.468    0.101   14.540    0.000    1.468    1.468
##     P8|t1            -0.657    0.072   -9.069    0.000   -0.657   -0.657
##     P8|t2             0.143    0.067    2.128    0.033    0.143    0.143
##     P8|t3             0.657    0.072    9.069    0.000    0.657    0.657
##     P8|t4             1.408    0.098   14.432    0.000    1.408    1.408
##     P2|t1            -1.353    0.095  -14.290    0.000   -1.353   -1.353
##     P2|t2            -0.334    0.068   -4.888    0.000   -0.334   -0.334
##     P2|t3             0.806    0.075   10.682    0.000    0.806    0.806
##     P2|t4             1.950    0.141   13.787    0.000    1.950    1.950
##     P3|t1            -1.489    0.102  -14.566    0.000   -1.489   -1.489
##     P3|t2            -0.267    0.068   -3.934    0.000   -0.267   -0.267
##     P3|t3             0.786    0.075   10.484    0.000    0.786    0.786
##     P3|t4             1.607    0.110   14.607    0.000    1.607    1.607
##     P9|t1            -0.941    0.079  -11.935    0.000   -0.941   -0.941
##     P9|t2            -0.057    0.067   -0.852    0.394   -0.057   -0.057
##     P9|t3             0.720    0.074    9.782    0.000    0.720    0.720
##     P9|t4             1.691    0.116   14.530    0.000    1.691    1.691
##     P4|t1            -1.301    0.092  -14.120    0.000   -1.301   -1.301
##     P4|t2            -0.596    0.071   -8.348    0.000   -0.596   -0.596
##     P4|t3             0.481    0.070    6.889    0.000    0.481    0.481
##     P4|t4             1.428    0.099   14.472    0.000    1.428    1.428
##     P10|t1           -1.371    0.096  -14.341    0.000   -1.371   -1.371
##     P10|t2           -0.630    0.072   -8.761    0.000   -0.630   -0.630
##     P10|t3           -0.057    0.067   -0.852    0.394   -0.057   -0.057
##     P10|t4            0.866    0.077   11.269    0.000    0.866    0.866
##     P6|t1            -1.123    0.085  -13.255    0.000   -1.123   -1.123
##     P6|t2            -0.554    0.071   -7.829    0.000   -0.554   -0.554
##     P6|t3             0.057    0.067    0.852    0.394    0.057    0.057
##     P6|t4             0.877    0.077   11.366    0.000    0.877    0.877
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .P1                0.997                               0.997    0.997
##    .P5                0.367                               0.367    0.367
##    .P7                0.617                               0.617    0.617
##    .P8                0.415                               0.415    0.415
##    .P2                0.418                               0.418    0.418
##    .P3                0.653                               0.653    0.653
##    .P9                0.420                               0.420    0.420
##    .P4                0.504                               0.504    0.504
##    .P10               0.561                               0.561    0.561
##    .P6                0.615                               0.615    0.615
##     Física            0.003    0.006    0.496    0.620    1.000    1.000
##     Psicológica       0.582    0.049   11.869    0.000    1.000    1.000
##     Ambiente          0.496    0.061    8.195    0.000    1.000    1.000
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     P1                1.000                               1.000    1.000
##     P5                1.000                               1.000    1.000
##     P7                1.000                               1.000    1.000
##     P8                1.000                               1.000    1.000
##     P2                1.000                               1.000    1.000
##     P3                1.000                               1.000    1.000
##     P9                1.000                               1.000    1.000
##     P4                1.000                               1.000    1.000
##     P10               1.000                               1.000    1.000
##     P6                1.000                               1.000    1.000
CFAmodel<-lavaanPlot(model = cfa, coef=TRUE, stand = TRUE, covs = TRUE)
CFAmodel

2.5. Conclusión

¿Los datos se ajustan al modelo teórico de los autores originales de la escala?

Parte 3. Consistencia interna

Imagine que usted continuó la evaluación del dominio de confiabilidad del instrumento evaluado en la parte 2. En esta usted consideró que los datos se ajustaban al modelo teórico de los autores de de la escala y a su vez al constructo de calidad de vida relacionada con la salud. Ahora usted va a evaluar el aspecto de confiabilidad.

3.1. Definición de los estadísticos a utilizar

Los datos son de tipo ordinal. ¿Qué indicador o indicadores va a utilizar y por qué?

3.2. Cálculo del alfa y omega con unidimensionalidad

Calcule el alfa de Cronbach y Omega de McDonald asumiendo unidimensionalidad

psych::alpha(afc1)
## 
## Reliability analysis   
## Call: psych::alpha(x = afc1)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean  sd median_r
##        0.8      0.81    0.82       0.3 4.4 0.016  2.9 0.7     0.33
## 
##  lower alpha upper     95% confidence boundaries
## 0.77 0.8 0.83 
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## P1       0.84      0.84    0.84      0.37 5.3    0.013 0.0078  0.36
## P2       0.77      0.79    0.79      0.29 3.7    0.018 0.0252  0.33
## P3       0.78      0.80    0.81      0.31 4.0    0.017 0.0272  0.34
## P4       0.78      0.79    0.80      0.30 3.8    0.018 0.0292  0.33
## P5       0.76      0.78    0.78      0.28 3.5    0.019 0.0244  0.32
## P6       0.78      0.80    0.81      0.31 4.0    0.017 0.0289  0.34
## P7       0.78      0.80    0.80      0.30 3.9    0.017 0.0286  0.34
## P8       0.77      0.78    0.79      0.29 3.6    0.019 0.0238  0.32
## P9       0.77      0.79    0.79      0.29 3.7    0.018 0.0253  0.33
## P10      0.78      0.80    0.80      0.30 3.9    0.018 0.0301  0.33
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean   sd
## P1  352  0.25  0.21 0.058   0.05  2.9 1.41
## P2  352  0.66  0.69 0.659   0.58  2.8 0.93
## P3  352  0.57  0.59 0.521   0.46  2.8 0.97
## P4  352  0.63  0.64 0.586   0.53  3.0 1.06
## P5  352  0.75  0.76 0.739   0.66  2.8 1.15
## P6  352  0.60  0.59 0.522   0.47  3.2 1.29
## P7  352  0.62  0.61 0.543   0.49  2.7 1.26
## P8  352  0.71  0.72 0.693   0.61  2.5 1.26
## P9  352  0.67  0.69 0.657   0.57  2.6 1.11
## P10 352  0.63  0.62 0.557   0.50  3.4 1.22
## 
## Non missing response frequency for each item
##        1    2    3    4    5 miss
## P1  0.23 0.21 0.20 0.19 0.17    0
## P2  0.09 0.28 0.42 0.18 0.03    0
## P3  0.07 0.33 0.39 0.16 0.05    0
## P4  0.10 0.18 0.41 0.24 0.08    0
## P5  0.12 0.31 0.24 0.25 0.07    0
## P6  0.13 0.16 0.23 0.29 0.19    0
## P7  0.23 0.27 0.19 0.24 0.07    0
## P8  0.26 0.30 0.19 0.18 0.08    0
## P9  0.17 0.30 0.29 0.19 0.05    0
## P10 0.09 0.18 0.21 0.33 0.19    0
omega(afc1, nfactors = 1, poly= F)
## Omega_h for 1 factor is not meaningful, just omega_t
## Warning in schmid(m, nfactors, fm, digits, rotate = rotate, n.obs = n.obs, :
## Omega_h and Omega_asymptotic are not meaningful with one factor
## Omega 
## Call: omegah(m = m, nfactors = nfactors, fm = fm, key = key, flip = flip, 
##     digits = digits, title = title, sl = sl, labels = labels, 
##     plot = plot, n.obs = n.obs, rotate = rotate, Phi = Phi, option = option, 
##     covar = covar)
## Alpha:                 0.81 
## G.6:                   0.82 
## Omega Hierarchical:    0.82 
## Omega H asymptotic:    1 
## Omega Total            0.82 
## 
## Schmid Leiman Factor loadings greater than  0.2 
##        g  F1*   h2   u2 p2
## P1            0.00 1.00  1
## P2  0.67      0.44 0.56  1
## P3  0.53      0.29 0.71  1
## P4  0.58      0.33 0.67  1
## P5  0.75      0.56 0.44  1
## P6  0.51      0.26 0.74  1
## P7  0.55      0.30 0.70  1
## P8  0.71      0.51 0.49  1
## P9  0.66      0.44 0.56  1
## P10 0.53      0.28 0.72  1
## 
## With eigenvalues of:
##   g F1* 
## 3.4 0.0 
## 
## general/max  2.863739e+16   max/min =   1
## mean percent general =  1    with sd =  0 and cv of  0 
## Explained Common Variance of the general factor =  1 
## 
## The degrees of freedom are 35  and the fit is  0.32 
## The number of observations was  352  with Chi Square =  109.07  with prob <  1.5e-09
## The root mean square of the residuals is  0.05 
## The df corrected root mean square of the residuals is  0.06
## RMSEA index =  0.077  and the 10 % confidence intervals are  0.061 0.094
## BIC =  -96.16
## 
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 35  and the fit is  0.32 
## The number of observations was  352  with Chi Square =  109.07  with prob <  1.5e-09
## The root mean square of the residuals is  0.05 
## The df corrected root mean square of the residuals is  0.06 
## 
## RMSEA index =  0.077  and the 10 % confidence intervals are  0.061 0.094
## BIC =  -96.16 
## 
## Measures of factor score adequacy             
##                                                  g F1*
## Correlation of scores with factors            0.93   0
## Multiple R square of scores with factors      0.86   0
## Minimum correlation of factor score estimates 0.71  -1
## 
##  Total, General and Subset omega for each subset
##                                                  g  F1*
## Omega total for total scores and subscales    0.82 0.82
## Omega general for total scores and subscales  0.82 0.82
## Omega group for total scores and subscales    0.00 0.00

¿Qué piensa de este alfa y de este Omega? ¿Cómo los interpreta? ¿Qué problemas o dificultades tiene?

3.3. Cálculo del alfa y del omega con multidimensionalidad

Ahora: usted conoce que el instrumento tiene 3 dimensiones: física, psicológica y medio ambiente. Por esto, usted decide realizar el alfa y el omega por cada dimensión. Calcule el alfa y el omega teniendo en cuenta la dimensionalidad.

print("Función física")
## [1] "Función física"
psych::alpha(select(afc1, P1, P5, P7,P8))
## 
## Reliability analysis   
## Call: psych::alpha(x = select(afc1, P1, P5, P7, P8))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.54      0.56    0.56      0.24 1.3 0.041  2.7 0.83     0.22
## 
##  lower alpha upper     95% confidence boundaries
## 0.46 0.54 0.62 
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r  S/N alpha se  var.r med.r
## P1      0.72      0.73    0.65      0.47 2.66    0.026 0.0077 0.474
## P5      0.28      0.30    0.28      0.13 0.43    0.067 0.0487 0.022
## P7      0.39      0.42    0.43      0.20 0.73    0.059 0.0980 0.058
## P8      0.38      0.40    0.38      0.18 0.68    0.059 0.0633 0.058
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean  sd
## P1 352  0.45  0.40 0.033  0.022  2.9 1.4
## P5 352  0.77  0.79 0.749  0.547  2.8 1.2
## P7 352  0.70  0.71 0.567  0.410  2.7 1.3
## P8 352  0.71  0.73 0.628  0.424  2.5 1.3
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## P1 0.23 0.21 0.20 0.19 0.17    0
## P5 0.12 0.31 0.24 0.25 0.07    0
## P7 0.23 0.27 0.19 0.24 0.07    0
## P8 0.26 0.30 0.19 0.18 0.08    0
print("función psicológica")
## [1] "función psicológica"
psych::alpha(select(afc1, P2, P3, P9))
## 
## Reliability analysis   
## Call: psych::alpha(x = select(afc1, P2, P3, P9))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N  ase mean   sd median_r
##       0.67      0.67    0.61      0.41   2 0.03  2.7 0.78     0.36
## 
##  lower alpha upper     95% confidence boundaries
## 0.61 0.67 0.73 
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r  S/N alpha se var.r med.r
## P2      0.52      0.53    0.36      0.36 1.12    0.050    NA  0.36
## P3      0.73      0.74    0.58      0.58 2.78    0.028    NA  0.58
## P9      0.43      0.43    0.28      0.28 0.76    0.060    NA  0.28
## 
##  Item statistics 
##      n raw.r std.r r.cor r.drop mean   sd
## P2 352  0.79  0.80  0.66   0.53  2.8 0.93
## P3 352  0.69  0.70  0.42   0.36  2.8 0.97
## P9 352  0.85  0.83  0.73   0.59  2.6 1.11
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## P2 0.09 0.28 0.42 0.18 0.03    0
## P3 0.07 0.33 0.39 0.16 0.05    0
## P9 0.17 0.30 0.29 0.19 0.05    0
print("Medio ambiente")
## [1] "Medio ambiente"
psych::alpha(select(afc1, P4, P6, P10))
## 
## Reliability analysis   
## Call: psych::alpha(x = select(afc1, P4, P6, P10))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.65      0.65    0.56      0.39 1.9 0.032  3.2 0.92     0.41
## 
##  lower alpha upper     95% confidence boundaries
## 0.59 0.65 0.71 
## 
##  Reliability if an item is dropped:
##     raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## P4       0.59      0.59    0.41      0.41 1.4    0.044    NA  0.41
## P6       0.50      0.51    0.34      0.34 1.0    0.052    NA  0.34
## P10      0.57      0.58    0.41      0.41 1.4    0.045    NA  0.41
## 
##  Item statistics 
##       n raw.r std.r r.cor r.drop mean  sd
## P4  352  0.72  0.76  0.55   0.44  3.0 1.1
## P6  352  0.81  0.79  0.62   0.50  3.2 1.3
## P10 352  0.77  0.76  0.56   0.45  3.4 1.2
## 
## Non missing response frequency for each item
##        1    2    3    4    5 miss
## P4  0.10 0.18 0.41 0.24 0.08    0
## P6  0.13 0.16 0.23 0.29 0.19    0
## P10 0.09 0.18 0.21 0.33 0.19    0
semTools::reliability(cfa, return.total=T)
## For constructs with categorical indicators, Zumbo et al.`s (2007) "ordinal alpha" is calculated in addition to the standard alpha, which treats ordinal variables as numeric. See Chalmers (2018) for a critique of "alpha.ord" and the response by Zumbo & Kroc (2019). Likewise, average variance extracted is calculated from polychoric (polyserial) not Pearson correlations.
##              Física Psicológica  Ambiente     total
## alpha     0.5367030   0.6729987 0.6522358 0.7999747
## alpha.ord 0.5960894   0.7080181 0.6979352 0.8364737
## omega     0.6107369   0.7148563 0.6601140 0.8285658
## omega2    0.6107369   0.7148563 0.6601140 0.8285658
## omega3    0.6241214   0.7440310 0.6592619 0.8336655
## avevar    0.4008740   0.5027300 0.4400250 0.4431761

¿Qué piensa de este alfa y de este Omega? ¿Cómo los interpreta? ¿Eliminaría algún item? Compárelos con los obtenidos en el punto anterior.

3.4. Conclusión

Compare los alfas y omegas obtenidos en los puntos 3.2. y 3.3. ¿qué piensa de estos? ¿por qué son diferentes? ¿qué es la tau-equivalencia y por qué influye sobre los resultados? ¿por qué realizamos análisis de consistencia interna con alfa de Cronbach por dimensión?