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.