library(readxl)
Datos = read_excel("Datos_FJ26.xlsx")
# Seleccionar únicamente variables explicativas
D1 <- Datos[, c("PIB", "Empleo", "Educación", "Razón", "Salud", "Esperanza", "Doctores")]
#————————————————————————————————————————————————————- # 1)
Identifica si hay observaciones faltantes, atípicas o extremas, corrige
de ser necesario.
#————————————————————————————————————————————————————-
# FORMULARIO: Cuenta el total de observaciones faltantes
colSums(is.na(D1))
## PIB Empleo Educación Razón Salud Esperanza Doctores
## 0 0 7 6 0 1 0
Identifiqué observaciones faltantes en las variables Educación, Razón y Esperanza
Para no tener que eliminar países de la muestra, decidí reemplazar los valores faltantes en lugar de borrar observaciones completas
Ya que las variables entre países pueden presentar dispersión y valores extremos, utilicé la mediana como criterio de reemplazo, ya que es una medida más robusta que la media ante posibles valores atípicos
# Código para reemplazar con la mediana
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
D1 <- na.aggregate(D1,FUN=median)
# Guardar base limpia después de imputar faltantes
D1_limpia <- D1
Verifiqué nuevamente la base, confirmé que no quedan observaciones faltantes:
# FORMULARIO: Cuenta el total de observaciones faltantes
colSums(is.na(D1_limpia))
## PIB Empleo Educación Razón Salud Esperanza Doctores
## 0 0 0 0 0 0 0
# FORMULARIO: Realiza un análisis descriptivo de las variables
library(psych)
describe(D1_limpia)
## vars n mean sd median trimmed mad min
## PIB 1 38 65148.90 27027.77 59552.96 62316.03 19594.44 23020.66
## Empleo 2 38 72.05 6.35 72.99 72.20 5.86 55.13
## Educación 3 38 18.15 12.78 14.13 16.30 5.75 4.82
## Razón 4 38 8.61 2.09 8.95 8.69 1.76 3.26
## Salud 5 38 9.31 2.29 9.28 9.26 2.07 4.68
## Esperanza 6 38 81.23 2.44 81.90 81.47 1.70 75.30
## Doctores 7 38 3.84 1.04 3.73 3.80 0.99 1.50
## max range skew kurtosis se
## PIB 155750.09 132729.43 1.41 2.61 4384.48
## Empleo 85.48 30.35 -0.43 -0.08 1.03
## Educación 55.70 50.87 1.49 1.35 2.07
## Razón 13.10 9.84 -0.44 0.07 0.34
## Salud 17.16 12.48 0.71 1.74 0.37
## Esperanza 84.30 9.00 -0.93 -0.23 0.40
## Doctores 6.58 5.08 0.37 0.24 0.17
Realicé un análisis descriptivo de las variables para identificar valores atípicos o inconsistencias Sobre todo, revisé los valores mínimos y máximos de cada variable. Los resultados muestran que, aunque algunas variables presentan dispersión entre países, los valores observados se encuentran dentro de rangos razonables para indicadores económicos, educativos y de salud
Con base en esta revisión, no identifiqué valores atípicos evidentes ni inconsistencias que requirieran de mi corrección manual La dispersión de los datos es razonable, esto debido a las diferencias económicas, educativas y de salud que existen entre los diversos países
# FORMULARIO: Identificación de observaciones extremas.
# Crea una columna en la base de datos con la distancia Mahalanobis (MD) para cada observación, se utilizan solo las variables X´s de la base de datos
D1_limpia$MD <- mahalanobis(D1, colMeans(D1), cov(D1))
# FORMULARIO: Identificación de observaciones extremas
# Para cada MD calcula el valor P de la prueba, donde MD tiene una distribución Ji.Cuadrada con k-1 grados de libertad. K es el total de variables explicativas.
# Regla si el valor P es menor a 0.001 la observación es un outlier.
D1_limpia$p<-pchisq(D1_limpia$MD, df=7-1, lower.tail=FALSE) # Cambiar k por # de variables de D1
Obs_extremas<-which(D1_limpia$p < 0.001) # Criterio Muy estricto
Obs_extremas
## integer(0)
Para identificar observaciones extremas, utilicé la distancia de Mahalanobis. Esta medida evalua qué tan alejada se encuentra cada observación del centro multivariado de la db, considerando a la vez las siete variables del análisis: PIB, Empleo, Educación, Razón, Salud, Esperanza y Doctores
Posteriormente, calculé el valor p asociado a cada distancia de Mahalanobis utilizando una distribución Ji-cuadrada con k-1 grados de libertad. En este caso trabajé con 7 variables, utilicé seis grados de libertad
Siguiendo el criterio establecido, consideré como observación extrema aquella cuyo valor p fuera menor a 0.001.
El resultado fue integer(0), lo que indica que NO hayobservaciones extremas bajo este criterio. No es necesario eliminar ni corregir observaciones extremas
#————————————————————————————————————————————————————-# 2) Realiza la prueba de hipótesis de Bartlett y concluye si es factible realizar un análisis de componentes principales #————————————————————————————————————————————————————-#
# Volver a filtrar solo por las variables explicativas
D1 <- D1_limpia[, c("PIB", "Empleo", "Educación", "Razón", "Salud", "Esperanza", "Doctores")]
# Validar que haya suficiente correlación para aplicar el análisis de factores
# 1. Determinante de la matriz de correlación
R <- cor(D1)
det(R)
## [1] 0.1424828
El determinante de la matriz de correlación fue de 0.1424828. Este valor no es cercano a 1, por lo que la matriz de correlaciones no se comporta como una matriz identidad perfecta Existe cierto grado de correlación entre las variables y tiene sentido continuar con la prueba de Bartlett para confirmar formalmente si el análisis de componentes principales es factible
# 2. La prueba de contraste de esfericidad de Bartlett
# FORMULARIO: Prueba de contraste de esfericidad de Bartlett
# H0: R = I (no se debe de utilizar la técnica de análisis de factores)
# Ha: R diferente I (sí se puede aplicar análisis de factores)
# R = Matriz de correlación
# I = Es la matriz identidad
library(psych)
cortest.bartlett(R,n=38) # R = matriz de correlación, cambiar # de observaciones
## $chisq
## [1] 65.92541
##
## $p.value
## [1] 1.557078e-06
##
## $df
## [1] 21
Rechazar H0, a favor de Ha si alfa >= valor P.
Si p-value < 0.05, se rechaza H0. Si p-value >= 0.05, no se rechaza H0.
Como el valor p es menor a 0.05, se rechaza la hipótesis nula de que la matriz de correlaciones es igual a la matriz identidad. Existe suficiente correlación entre las variables y es factible aplicar el análisis de componentes
#————————————————————————————————————————————————————- # 3) Realiza el análisis de suficiencia de Kaiser-Meyer-Olkin #————————————————————————————————————————————————————- a. Evalúa la calidad del análisis resultante. b. Indica si se requiere o no quitar variable para mejorar el análisis, si la respuesta es sí elimina las variables justificando por qué.
# 1. Determinante de la matriz de correlación
R <- cor(D1)
det(R) #Cuenta con un determinante muy cercano a 0, por lo que existe una alta correlación. Comprobemoslo con KMO
## [1] 0.1424828
(Ya explicado)
KMO(R)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = R)
## Overall MSA = 0.59
## MSA for each item =
## PIB Empleo Educación Razón Salud Esperanza Doctores
## 0.70 0.63 0.54 0.54 0.57 0.65 0.50
|Criterio |Evaluación | |MSA ≥ 0.9 |Excelente | |0.8 ≤ MSA < 0.9 |Bueno | |0.7 ≤ MSA < 0.8 |Aceptable | |0.6 ≤ MSA < 0.7. |Regular | |0.5 ≤ MSA < 0.6 |Bajo | |MSA < 0.5 |Inaceptable|
El resultado global del análisis fue un Overall MSA = 0.59. De acuerdo con los criterios de evaluación (arriba), este valor se ubica en el rango de 0.50 a 0.60, por lo que la calidad del análisis se considera baja, PERO no inaceptable. Por lo tanto, puedo continuar con el análisis de componentes principales (siempre y cuando se tenga cuidado)
También se revisaron los valores MSA individuales para cada variable. - Ninguna variable tiene un MSA menor a 0.50, por lo que no es necesario eliminar variables obligatoriamente - Las variables que tengan un KMO MENOR a 0.50 son candidatas a quitarse, en este caso todas están arriba o son iguales a 0.50 - Como comentario, “Doctores” es la variable más débil, ya que se encuentra exactamente en el umbral mínimo recomendado
#————————————————————————————————————————————————————- # 4) Realiza el análisis de alfa de Cronbach #————————————————————————————————————————————————————- b. Indica si se requiere o no quitar variables para mejorar el análisis, si la respuesta es sí elimina las variables justificando por qué. c. Indica si se requiere corregir variables en orden inverso, corrige de ser necesario.
# Alfa de Cronbach inicial
library(psych)
alpha(D1, check.keys=TRUE)
## Warning in response.frequencies(x, max = max): response.frequency has been
## deprecated and replaced with responseFrequecy. Please fix your call
## Number of categories should be increased in order to count frequencies.
## Warning in alpha(D1, check.keys = TRUE): Some items were negatively correlated with the first principal component and were automatically reversed.
## This is indicated by a negative sign for the variable name.
##
## Reliability analysis
## Call: alpha(x = D1, check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 9e-04 0.74 0.78 0.29 2.8 0.00023 31580 3863 0.31
##
## 95% confidence boundaries
## lower alpha upper
## Feldt -0.57 0 0.42
## Duhachek 0.00 0 0.00
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## PIB 0.49520 0.68 0.72 0.26 2.1 0.07697 0.025 0.26
## Empleo 0.00068 0.69 0.73 0.27 2.3 0.00019 0.026 0.31
## Educación- 0.00047 0.71 0.73 0.29 2.4 0.00012 0.024 0.26
## Razón 0.00085 0.69 0.70 0.27 2.3 0.00023 0.019 0.26
## Salud 0.00089 0.74 0.77 0.32 2.8 0.00022 0.022 0.33
## Esperanza 0.00082 0.71 0.75 0.29 2.5 0.00023 0.027 0.33
## Doctores 0.00090 0.71 0.73 0.29 2.5 0.00023 0.019 0.33
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## PIB 38 1.00 0.71 0.66 0.54 6.5e+04 27027.8
## Empleo 38 0.43 0.66 0.59 0.43 7.2e+01 6.4
## Educación- 38 0.40 0.62 0.55 0.40 1.6e+05 12.8
## Razón 38 0.39 0.66 0.62 0.39 8.6e+00 2.1
## Salud 38 0.16 0.51 0.39 0.16 9.3e+00 2.3
## Esperanza 38 0.47 0.60 0.51 0.47 8.1e+01 2.4
## Doctores 38 0.26 0.59 0.53 0.26 3.8e+00 1.0
Realicé el análisis de alfa de Cronbach con la opción check.keys=TRUE para evaluar la consistencia interna de las variables y detectar si alguna se encontraba en sentido inverso. El resultado mostró que la variable Educación estaba en sentido contrario al resto (Educación-), lo cual tiene sentido porque mide el porcentaje de personas de 25 a 65 años con educación menor a secundaria; por lo tanto, un valor más alto representa una condición menos favorable
-> El output de alpha(D1, check.keys=TRUE) marcó Educación con signo negativo -> Por lo tanto, corregí Educación para que todas las variables estén en el mismo sentido
Corregí la variable Educación mediante la transformación max(Educación) - Educación, para que todas las variables quedaran en el mismo sentido: valores más altos representan mejores condiciones
# Revisión de variables en orden inverso
D1$Educación_Corregida <- with(D1, max(Educación) - Educación)
# Base corregida con las variables en el mismo sentido
D2 <- D1[, c("PIB", "Empleo", "Educación_Corregida", "Razón","Salud", "Esperanza", "Doctores")]
D1 <- D2
# Alfa de Cronbach (después de corregir Educación)
library(psych)
alpha(D1)
## Warning in response.frequencies(x, max = max): response.frequency has been
## deprecated and replaced with responseFrequecy. Please fix your call
## Number of categories should be increased in order to count frequencies.
##
## Reliability analysis
## Call: alpha(x = D1)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 9e-04 0.74 0.78 0.29 2.8 0.00023 9337 3863 0.31
##
## 95% confidence boundaries
## lower alpha upper
## Feldt -0.57 0 0.42
## Duhachek 0.00 0 0.00
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## PIB 0.49520 0.68 0.72 0.26 2.1 0.07697 0.025
## Empleo 0.00068 0.69 0.73 0.27 2.3 0.00019 0.026
## Educación_Corregida 0.00047 0.71 0.73 0.29 2.4 0.00012 0.024
## Razón 0.00085 0.69 0.70 0.27 2.3 0.00023 0.019
## Salud 0.00089 0.74 0.77 0.32 2.8 0.00022 0.022
## Esperanza 0.00082 0.71 0.75 0.29 2.5 0.00023 0.027
## Doctores 0.00090 0.71 0.73 0.29 2.5 0.00023 0.019
## med.r
## PIB 0.26
## Empleo 0.31
## Educación_Corregida 0.26
## Razón 0.26
## Salud 0.33
## Esperanza 0.33
## Doctores 0.33
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## PIB 38 1.00 0.71 0.66 0.54 65148.9 27027.8
## Empleo 38 0.43 0.66 0.59 0.43 72.0 6.4
## Educación_Corregida 38 0.40 0.62 0.55 0.40 37.6 12.8
## Razón 38 0.39 0.66 0.62 0.39 8.6 2.1
## Salud 38 0.16 0.51 0.39 0.16 9.3 2.3
## Esperanza 38 0.47 0.60 0.51 0.47 81.2 2.4
## Doctores 38 0.26 0.59 0.53 0.26 3.8 1.0
Después de corregir la variable, volví a estimar el alfa de Cronbach. Debido a que las variables están medidas en escalas distintas, interpreté el alfa estandarizado. El resultado fue std.alpha = 0.7364, lo cual indica una consistencia aceptable
También revisé la tabla de confiabilidad si se elimina cada variable. Ninguna eliminación mejora sustancialmente el alfa estandarizado general, por lo que no se requiere quitar variables para mejorar el análisis. Conservaré todas las variables
#————————————————————————————————————————————————————- # 5. Determina cuántos componentes se requiere estimar utiliza uno de los métodos vistos en clase (raíz unitaria, porcentaje explicado de la varianza e índice de complejidad) #————————————————————————————————————————————————————-
Para determinar el número de componentes, estimé primero el modelo con las siete variables estandarizadas y sin rotación
# Estandarización de variables
Dz <- data.frame(scale(D1))
Los resultados muestran que los SS loadings fueron 2.75 para PC1, 1.33 para PC2, 0.87 para PC3, 0.82 para PC4, 0.63 para PC5, 0.35 para PC6 y 0.24 para PC7
# FORMULARIO: Estimar el modelo de análisis de componentes principales con k variables sin rotar
library(psych)
modelo1 <- principal(Dz,nfactors = 7, rotate = "none") # Cambiar el # de componentes, podemos basarnos en el # de variables de Dz
modelo1
## Principal Components Analysis
## Call: principal(r = Dz, nfactors = 7, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PC1 PC2 PC3 PC4 PC5 PC6 PC7 h2 u2 com
## PIB 0.75 -0.01 0.07 -0.46 -0.29 -0.37 0.04 1 1.1e-16 2.6
## Empleo 0.66 0.44 -0.14 0.20 -0.49 0.25 -0.14 1 -8.9e-16 3.5
## Educación_Corregida 0.62 0.44 -0.42 -0.24 0.35 0.13 0.22 1 5.6e-16 4.2
## Razón 0.68 -0.50 -0.34 0.04 0.27 -0.03 -0.31 1 -4.4e-16 3.3
## Salud 0.46 0.57 0.37 0.44 0.28 -0.22 -0.06 1 1.1e-15 4.6
## Esperanza 0.60 -0.24 0.64 -0.26 0.13 0.29 0.00 1 1.2e-15 3.2
## Doctores 0.59 -0.56 -0.04 0.50 -0.12 -0.03 0.28 1 8.9e-16 3.5
##
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## SS loadings 2.75 1.33 0.87 0.82 0.63 0.35 0.24
## Proportion Var 0.39 0.19 0.12 0.12 0.09 0.05 0.03
## Cumulative Var 0.39 0.58 0.71 0.82 0.91 0.97 1.00
## Proportion Explained 0.39 0.19 0.12 0.12 0.09 0.05 0.03
## Cumulative Proportion 0.39 0.58 0.71 0.82 0.91 0.97 1.00
##
## Mean item complexity = 3.6
## Test of the hypothesis that 7 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0
## with the empirical chi square 0 with prob < NA
##
## Fit based upon off diagonal values = 1
Los siguientes criterios permiten determinar el número de factores como posible solución inicial:
En este caso voy a usar: Criterio de la raíz latente (autovalores): SS loadings = autovalores (Pestaña 1) Solo hay dos componentes con una raíz > 1, lo que me indica que debo… Me sugiere quedarme con 2 componentes para explicar la información total de mis variables
Criterio del porcentaje de la variación explicada acumulada: PC1 PC2 PC3 Proportion Var 0.39 0.19 0.12 Cumulative Var 0.39 0.58 0.71 Llegamos a >0.60 con 3 componentes
Criterio del índice de complejidad: Mean item complexity = 3.6 Me sugiere quedarme con 4 componentes para explicar la información total de mis variables
Aunque los criterios no coinciden completamente, decidí conservar 3 COMPONENTES, ya que con ellos se supera el umbral de 60% de varianza explicada acumulada y se resume 71% de la información contenida en las variables originales -> Hay buen balance entre capacidad explicativa y simplicidad del modelo
#————————————————————————————————————————————————————- # 6) Estima los componentes determinados en el inciso anterior y con los componentes rotados #————————————————————————————————————————————————————- a. Indica qué tanto explican los componentes a la información de las variables, b. Cuál variable se explica más y cuál menos con los componentes, c. Interpreta los componentes rotados
# FORMULARIO: Estimar el modelo de análisis de componentes principales con k variables sin rotar
library(psych)
modelo2 <- principal(Dz,nfactors = 3, rotate = "none") # Cambiar el # de componentes
modelo2
## Principal Components Analysis
## Call: principal(r = Dz, nfactors = 3, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PC1 PC2 PC3 h2 u2 com
## PIB 0.75 -0.01 0.07 0.56 0.44 1.0
## Empleo 0.66 0.44 -0.14 0.64 0.36 1.9
## Educación_Corregida 0.62 0.44 -0.42 0.76 0.24 2.6
## Razón 0.68 -0.50 -0.34 0.83 0.17 2.4
## Salud 0.46 0.57 0.37 0.67 0.33 2.7
## Esperanza 0.60 -0.24 0.64 0.83 0.17 2.3
## Doctores 0.59 -0.56 -0.04 0.66 0.34 2.0
##
## PC1 PC2 PC3
## SS loadings 2.75 1.33 0.87
## Proportion Var 0.39 0.19 0.12
## Cumulative Var 0.39 0.58 0.71
## Proportion Explained 0.55 0.27 0.18
## Cumulative Proportion 0.55 0.82 1.00
##
## Mean item complexity = 2.1
## Test of the hypothesis that 3 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.08
## with the empirical chi square 11.37 with prob < 0.0099
##
## Fit based upon off diagonal values = 0.93
Se hace una rotación de los ejes para pronunciar cargas e identificar mejor con cuál componente se define más una variable
Las cargas de la matriz rotada cambian (aumentan) porque se movieron los ejes y ahora hay otras coordenadas
Existen los siguientes métodos de rotación ▪ Varimax: Es el método más utilizado, minimiza el número de variables que tienen saturaciones altas en cada factor/componente ▪ Quartimax: Minimiza el número de factores necesarios para explicar cada variable ▪ Equamax: Minimiza tanto el número de variables que saturan alto en cada factor como el número de factores necesarios para explicar cada variable ▪ Promax y Oblimin Métodos que permiten que los factores estén correlacionados
library(psych)
modelo3 <- principal(Dz,nfactors = 3, rotate = "varimax") # Cambiar el # de componentes
modelo3
## Principal Components Analysis
## Call: principal(r = Dz, nfactors = 3, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 RC3 h2 u2 com
## PIB 0.45 0.43 0.41 0.56 0.44 3.0
## Empleo 0.77 0.12 0.18 0.64 0.36 1.2
## Educación_Corregida 0.85 0.18 -0.08 0.76 0.24 1.1
## Razón 0.22 0.88 0.02 0.83 0.17 1.1
## Salud 0.55 -0.26 0.55 0.67 0.33 2.4
## Esperanza 0.00 0.34 0.85 0.83 0.17 1.3
## Doctores 0.02 0.78 0.24 0.66 0.34 1.2
##
## RC1 RC2 RC3
## SS loadings 1.87 1.80 1.28
## Proportion Var 0.27 0.26 0.18
## Cumulative Var 0.27 0.52 0.71
## Proportion Explained 0.38 0.36 0.26
## Cumulative Proportion 0.38 0.74 1.00
##
## Mean item complexity = 1.6
## Test of the hypothesis that 3 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.08
## with the empirical chi square 11.37 with prob < 0.0099
##
## Fit based upon off diagonal values = 0.93
# FORMULARIO: Criterios para determinar qué variables definen al componente
# Prioridad 1.
print(modelo3$loadings,cut=0.5, sort=TRUE)
##
## Loadings:
## RC1 RC2 RC3
## Empleo 0.770
## Educación_Corregida 0.847
## Salud 0.553 0.546
## Razón 0.883
## Doctores 0.777
## Esperanza 0.846
## PIB
##
## RC1 RC2 RC3
## SS loadings 1.868 1.798 1.283
## Proportion Var 0.267 0.257 0.183
## Cumulative Var 0.267 0.524 0.707
Criterios para identificar cargas significativas
Una carga es significativa en función del tamaño de la muestra y del nivel de significancia utilizado, entre mayor sea la muestra más credibilidad hay en la información.
Criterios con alfa igual a 0.05 (cargas en valor absoluto): | | 50 ≤ n < 100 | 100 ≤ n < 200 | 200 ≤ n < 300 | n ≥ 300 | | Prioridad 1 | |Carga| ≥ 0.5 | |Carga| ≥ 0.5 | |Carga| ≥ 0.5 | |Carga| ≥ 0.5 | | Prioridad 2 | 0.4 ≤ |Carga| < 0.5 | 0.4 ≤ |Carga| < 0.5 | 0.4 ≤ |Carga| < 0.5 | 0.4 ≤ |Carga| < 0.5 | | Prioridad 3 | 0.3 ≤ |Carga| < 0.4 | 0.3 ≤ |Carga| < 0.4 | 0.3 ≤ |Carga| < 0.4 | 0.3 ≤ |Carga| < 0.4 | | Prioridad 4 | No aplica | 0.19 ≤ |Carga| < 0.3 | 0.19 ≤ |Carga| < 0.3 | 0.19 ≤ |Carga| < 0.3 | | Prioridad 5 | No aplica | No aplica | 0.14 ≤ |Carga| < 0.19 | 0.14 ≤ |Carga| < 0.19 | | Prioridad 6 | No aplica | No aplica | No aplica | 0.11 ≤ |Carga| < 0.14 | | Carga no significativa | 0 ≤ |Carga| < 0.3 | 0 ≤ |Carga| < 0.19 | 0 ≤ |Carga| < 0.14 | 0 ≤ |Carga| < 0.11 |
RC1 concentra principalmente Empleo, Educación_Corregida y Salud - Empleo tiene carga de 0.77 - Educación_Corregida tiene carga de 0.85 - Salud tiene carga de 0.55 Este componente puede interpretarse como un componente de desarrollo social y capital humano
RC2 concentra principalmente Razón y Doctores - Razón tiene carga de 0.88 - Doctores tiene carga de 0.78 Este componente puede interpretarse como un componente de capacidad educativa y médica
RC3 concentra principalmente Esperanza y Salud - Esperanza tiene carga de 0.85 - Salud tiene carga de 0.55 Este componente puede interpretarse como un componente de resultados en salud
Ojo: 1. Salud presenta carga significativa tanto en RC1 como en RC3, por lo que contribuye a más de un componente. Sin embargo, su relación con RC3 ayuda a reforzar la interpretación de este componente como resultados en salud
#————————————————————————————————————————————————————-# 7. Estima los puntajes de los componentes para cada país: #————————————————————————————————————————————————————-
# Obtener los puntajes de los componentes para cada observación
# FORMULARIO: Código para obtener los puntajes de los componentes
library(psych)
modelo4 <- principal(Dz,nfactors = 3, rotate="varimax", scores=TRUE,method="regression")
modelo4
## Principal Components Analysis
## Call: principal(r = Dz, nfactors = 3, rotate = "varimax", scores = TRUE,
## method = "regression")
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 RC3 h2 u2 com
## PIB 0.45 0.43 0.41 0.56 0.44 3.0
## Empleo 0.77 0.12 0.18 0.64 0.36 1.2
## Educación_Corregida 0.85 0.18 -0.08 0.76 0.24 1.1
## Razón 0.22 0.88 0.02 0.83 0.17 1.1
## Salud 0.55 -0.26 0.55 0.67 0.33 2.4
## Esperanza 0.00 0.34 0.85 0.83 0.17 1.3
## Doctores 0.02 0.78 0.24 0.66 0.34 1.2
##
## RC1 RC2 RC3
## SS loadings 1.87 1.80 1.28
## Proportion Var 0.27 0.26 0.18
## Cumulative Var 0.27 0.52 0.71
## Proportion Explained 0.38 0.36 0.26
## Cumulative Proportion 0.38 0.74 1.00
##
## Mean item complexity = 1.6
## Test of the hypothesis that 3 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.08
## with the empirical chi square 11.37 with prob < 0.0099
##
## Fit based upon off diagonal values = 0.93
# FORMULARIO: Código para obtener los puntajes de los componentes.
Datos$PC1 <- modelo4$scores[,1]
Datos$PC2 <- modelo4$scores[,2]
Datos$PC3 <- modelo4$scores[,3]
Estimé los puntajes de los tres componentes para cada país utilizando el modelo final con rotación varimax y el método de regresión Transformé estos puntajes a una escala de 0 a 100 mediante un reescalamiento min-max, donde el valor mínimo de cada componente toma 0 y el valor máximo toma 100
# FORMULARIO: Rescalamiento de variables
# Para que el valor más alto sea el máximo y el valor más bajo el mínimo en todas las variables
Datos$Indice1 <- with(Datos,100*(PC1-min(PC1))/(max(PC1)-min(PC1)))
Datos$Indice2 <- with(Datos,100*(PC2-min(PC2))/(max(PC2)-min(PC2)))
Datos$Indice3 <- with(Datos,100*(PC3-min(PC3))/(max(PC3)-min(PC3)))
Después construí el índice global como un promedio ponderado de los tres índices parciales. Los ponderadores se calcularon con base en los SS loadings de los componentes rotados: RC1 RC2 RC3 SS loadings 1.87 1.80 1.28
# Ponderadores con SS loadings del modelo rotado
Ponderador1 <- 1.87/(1.87+1.80+1.28)
Ponderador2 <- 1.80/(1.87+1.80+1.28)
Ponderador3 <- 1.28/(1.87+1.80+1.28)
Datos$Indice_Global <- (Ponderador1*Datos$Indice1) +
(Ponderador2*Datos$Indice2) +
(Ponderador3*Datos$Indice3)
Datos[which.min(Datos$Indice_Global), c("País", "Indice_Global")]
## # A tibble: 1 × 2
## País Indice_Global
## <chr> <dbl>
## 1 Mexico 16.6
# Ranking completo de menor a mayor
Datos[order(Datos$Indice_Global), c("País", "Indice_Global")]
## # A tibble: 38 × 2
## País Indice_Global
## <chr> <dbl>
## 1 Mexico 16.6
## 2 Colombia 22.9
## 3 Costa Rica 33.8
## 4 Türkiye 36.5
## 5 Chile 41.8
## 6 Latvia 47.7
## 7 Slovak Republic 48.7
## 8 Hungary 49.2
## 9 Czechia 50.9
## 10 Korea 53.9
## # ℹ 28 more rows
# Base final con índices
Datos[, c("País", "Indice1", "Indice2", "Indice3", "Indice_Global")]
## # A tibble: 38 × 5
## País Indice1 Indice2 Indice3 Indice_Global
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Australia 66.8 53.8 84.6 66.7
## 2 Austria 70.5 77.0 75.4 74.1
## 3 Belgium 58.0 56.0 77.9 62.4
## 4 Canada 78.4 35.9 70.5 60.9
## 5 Chile 35.8 18.5 83.5 41.8
## 6 Colombia 30.9 0 43.4 22.9
## 7 Costa Rica 0 43.6 69.5 33.8
## 8 Czechia 42.0 49.5 65.7 50.9
## 9 Denmark 67.7 60.6 71.3 66.0
## 10 Estonia 68.6 56.2 31.8 54.6
## # ℹ 28 more rows