Comenzamos cargando los datos y para este ejericicio usaremos el paquete “factoextra” que se apoya de ggplot2 para realizar los gráficos del modelo.
# Filtrado de Datos
data <- read.csv("respuestas_encuesta.csv", header = T, sep = ",")
Ya que el algoritmo no recibe variables categóricas, estas fueron cambiadas por numéricas; primero pasandolas como factores y asignándoles niveles para finalmente convertir estos a valores numéricos. Con esto no es necesario deshacernos de estas variables y ya es posible incluirlas en el algoritmo. Para el caso de los NA’s, estos fueron removidos por lo que de 1010 observaciones quedaron 686. El proceso de convertir a factores no se muestra sin embargo el conjunto usado es D1.
D1 <- na.omit(data)
Se crean los conjuntos de train y set y se define el algoritmo.
# Random Sampling
set.seed(11)
D1split <- initial_split(D1, prop = .7)
D1train <- training(D1split)
D1test <- testing(D1split)
# Modelo
componentes <- prcomp(D1train, center = TRUE, scale. = T, retx = TRUE)
Los eigenvalores así como la grafica de codos se muestra a continuación.
# Gráficos
fviz_eig(componentes)
# Eigen valores
head(get_eigenvalue(componentes),25)
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 9.728220 6.485480 6.48548
## Dim.2 7.855654 5.237102 11.72258
## Dim.3 7.063101 4.708734 16.43132
## Dim.4 4.500444 3.000296 19.43161
## Dim.5 4.354014 2.902676 22.33429
## Dim.6 3.535321 2.356880 24.69117
## Dim.7 3.042384 2.028256 26.71942
## Dim.8 2.968682 1.979121 28.69855
## Dim.9 2.643313 1.762209 30.46075
## Dim.10 2.469107 1.646071 32.10683
## Dim.11 2.296133 1.530756 33.63758
## Dim.12 2.258780 1.505854 35.14343
## Dim.13 2.152951 1.435301 36.57874
## Dim.14 2.086825 1.391217 37.96995
## Dim.15 1.965611 1.310408 39.28036
## Dim.16 1.955084 1.303390 40.58375
## Dim.17 1.854610 1.236406 41.82016
## Dim.18 1.851467 1.234312 43.05447
## Dim.19 1.791403 1.194268 44.24874
## Dim.20 1.763812 1.175875 45.42461
## Dim.21 1.715695 1.143797 46.56841
## Dim.22 1.669841 1.113228 47.68163
## Dim.23 1.586269 1.057512 48.73915
## Dim.24 1.561907 1.041271 49.78042
## Dim.25 1.534644 1.023096 50.80351
De la gráfica de codos podemos ver que apartir de la dimensión 7 la pendiente comienza a ser muy parecida y con los eigenvalores tomamos la decisión que se tomaran 25 componentes pues con esto tenemos una varianza acumulada de 50% que es un buen nivel.
Lás gráficas de las contribuciones a las varianzas se anexa a continuación aqunque debido a la cantidad de variables en los datos, su interpretación es muy complicada.
# Gráficos
fviz_pca_var(componentes,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE # Avoid text overlapping
)
Para la segunda parte del ejercicio aunque entiendo la construcción apartir del vectores ortogonales y lo que es la rotación, no entiendo como se tiene que hacer la comparación ni como usar los outputs del algoritmo para revisarlos. Me gustaría que pudieramos ahondar mas en esta parte.