Ejercicio 1 : ADL

#Importar la BAse de datos

inversion=read.csv("data_inversion.csv")
head(inversion)
##       Edad Tolerancia_Riesgo Ingresos_Anuales Deuda_Actual Gastos_Mensuales
## 1 50.14570          2.308668         57974.85     31234.85         3146.765
## 2 49.57387          1.997729         47856.18     20031.20         2797.868
## 3 44.98772          1.954372         59804.74     28341.78         1909.857
## 4 45.68005          2.199980         52459.66     24367.30         3098.816
## 5 31.02470          3.938720        114334.14     23622.19         3961.259
## 6 36.70232          3.558345         95992.68     20652.05         2535.940
##   Patrimonio_Neto Anos_Experiencia Estado_Civil Nivel_Educativo Tipo_Inversion
## 1        81158.94        12.528961       Casado   Universitario              0
## 2        63793.97         9.538826      Soltero   Universitario              0
## 3        96992.88         7.103887       Casado   Universitario              0
## 4        95705.75         3.827406   Divorciado   Universitario              0
## 5        93574.21        14.725097   Divorciado      Secundaria              1
## 6        94439.25        13.852466      Soltero   Universitario              1

Corriendo el ADL

library(MASS)
modelo_adl = lda(data=inversion,
             Tipo_Inversion ~ Edad +
               Tolerancia_Riesgo+
               Ingresos_Anuales+
               Deuda_Actual+
               Gastos_Mensuales+
               Patrimonio_Neto+
               Anos_Experiencia)
modelo_adl
## Call:
## lda(Tipo_Inversion ~ Edad + Tolerancia_Riesgo + Ingresos_Anuales + 
##     Deuda_Actual + Gastos_Mensuales + Patrimonio_Neto + Anos_Experiencia, 
##     data = inversion)
## 
## Prior probabilities of groups:
##     0     1 
## 0.499 0.501 
## 
## Group means:
##       Edad Tolerancia_Riesgo Ingresos_Anuales Deuda_Actual Gastos_Mensuales
## 0 44.97798          2.010803         60144.16     24775.84         3022.816
## 1 35.41223          3.988785        100965.32     24781.17         2975.854
##   Patrimonio_Neto Anos_Experiencia
## 0        80354.05         9.880917
## 1        79452.05        10.019193
## 
## Coefficients of linear discriminants:
##                             LD1
## Edad              -7.813444e-02
## Tolerancia_Riesgo  1.469395e+00
## Ingresos_Anuales   4.728028e-05
## Deuda_Actual      -6.737156e-06
## Gastos_Mensuales  -4.481774e-05
## Patrimonio_Neto   -4.042968e-06
## Anos_Experiencia  -5.672716e-04
  1. (1.0 punto) Indique cuáles de las variables disponibles tienen mayor influencia en la preferencia deinversión de los clientes (Conservadora o Agresiva). Justifique su selección.

Considerariamos identificar aquellas variables que individualmente aportan de manera + y -

Edad              -7.813444e-02 
Tolerancia_Riesgo  1.469395e+00
  1. (1.0 punto) Realice una prueba estadística para determinar si existen diferencias significativas en lasvariables analizadas entre los clientes con inversión conservadora y los que prefieren una estrategiaagresiva. Interprete los resultados y discuta su relevancia.

H0 : Medias Iguales entre grupos de todas las variables i.e. la función discriminante no posee capacidad discriminante Ha : Las función discriminante permite distinguir las categorias gracias a al menos una variable

Xm = manova(data=inversion,
            cbind(Edad ,Tolerancia_Riesgo ,
               Ingresos_Anuales,Deuda_Actual,
               Gastos_Mensuales,Patrimonio_Neto,
               Anos_Experiencia)~Tipo_Inversion)
final = summary(Xm,test="Wilks")
final
##                 Df  Wilks approx F num Df den Df    Pr(>F)    
## Tipo_Inversion   1 0.1133   1109.1      7    992 < 2.2e-16 ***
## Residuals      998                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Pvalor = 0.000000 …22 < Alfa (0.05) Rechazo Ho

Conclusión : A un nivel de significancia del 5%, Las función discriminante permite distinguir las categorias gracias a al menos una variable.

  1. (1.0 punto) Calcule e interprete la calidad del ajuste del modelo y correlación canónica.
carga=final$Eigenvalues[,1]

calidad_ajuste= carga/(1+carga)

calidad_ajuste
## Tipo_Inversion 
##      0.8867024
correlacion =sqrt(calidad_ajuste)
correlacion
## Tipo_Inversion 
##      0.9416488

Ejercicio 2 : Cluster + ADL

  1. (1.5 puntos) Realice un análisis de clustering utilizando el método k-means con un número fijo de 2 clusters. Una vez obtenidos los grupos, aplique un análisis discriminante lineal (ADL) para construir un modelo que permita clasificar nuevos clientes en uno de los dos conglomerados. Evalúe la precisión del modelo mediante una matriz de confusión y calcule el porcentaje de clasificación correcta.
gimnasio =read.csv("clientesGimnasio.csv")
head(gimnasio)
##   Horas_entrenamiento Frecuencia_semanal Consumo_mensual
## 1            2.719762                  2        59.93504
## 2            2.884911                  1        55.48397
## 3            3.779354                  1        52.38732
## 4            3.035254                  1        43.72094
## 5            3.064644                  1        63.60652
## 6            3.857532                  6        43.99740

Realizando el cluster No Jerárquico

#Parte 1: cluster
gimnasio_scale=scale(gimnasio)
kmeans_2 = kmeans(gimnasio_scale, centers = 2, nstart=20)
clusters=kmeans_2$cluster

#Parte 2: ADL
modelo_adl_2 = lda(
             clusters ~ gimnasio$Horas_entrenamiento+
               gimnasio$Frecuencia_semanal+
               gimnasio$Consumo_mensual)
modelo_adl_2
## Call:
## lda(clusters ~ gimnasio$Horas_entrenamiento + gimnasio$Frecuencia_semanal + 
##     gimnasio$Consumo_mensual)
## 
## Prior probabilities of groups:
##         1         2 
## 0.3666667 0.6333333 
## 
## Group means:
##   gimnasio$Horas_entrenamiento gimnasio$Frecuencia_semanal
## 1                     8.771162                    6.090909
## 2                     4.447446                    2.473684
##   gimnasio$Consumo_mensual
## 1                143.74274
## 2                 72.48471
## 
## Coefficients of linear discriminants:
##                                      LD1
## gimnasio$Horas_entrenamiento -0.08260667
## gimnasio$Frecuencia_semanal  -0.43864891
## gimnasio$Consumo_mensual     -0.02866714
# calidad de la clasificación
pro = predict(modelo_adl_2)
Tabla = table(clusters,pro$class)
Tabla
##         
## clusters  1  2
##        1 22  0
##        2  0 38

100% de clasificación correcta.

b) (1.5 puntos) Aplique un análisis de clustering jerárquico y justifique la necesidad de estandarizar las variables antes del análisis. Seleccione 3 clusters a partir del dendrograma obtenido y calcule el porcentaje de observaciones que pertenece a cada cluster.

set.seed(123)
md.e<-dist(gimnasio_scale, method="euclidean", diag=T)
clust.h<-hclust(md.e,method="ward.D2")
res.hc=cutree(clust.h, k=3)
table(res.hc)
## res.hc
##  1  2  3 
## 17 23 20

PRegunta 3: AFE

a) (1.5 puntos) En el contexto del análisis factorial exploratorio (AFE) aplicado a la encuesta de satisfacción de los usuarios de aplicaciones móviles de bienestar, se deben evaluar las pruebas de adecuación vistas en clase para determinar si es factible proceder con el análisis. Para ello, se considerará un nivel de significancia de 0.01, de ser necesario.

encuesta=read.csv("preg_afe.csv")
head(encuesta)
##   y1 y2 y3 y4 y5 y6
## 1  3  4  4  3  3  4
## 2  4  4  4  3  4  4
## 3  5  6  5  5  5  5
## 4  5  4  5  4  4  2
## 5  5  4  4  4  3  4
## 6  6  5  4  5  6  5
#Premiliminar 1
library(rela)
descri=paf(as.matrix(encuesta))
descri$KMO
## [1] 0.79606

Prueba de Esfericidad de Barlett H0: Las variables son no correlacionadas H1: Las variables son correlacionadas

#preliminar 2
library(psych)
cortest.bartlett(cor(encuesta),n=300)
## $chisq
## [1] 639.78
## 
## $p.value
## [1] 1.2383e-126
## 
## $df
## [1] 15

P-valor = 0.0000…. 123 < alfa 0.01 Rechazo Ho.

#Preliminar 3
# Medidas de adecuación muestral (MSA)
descri$MSA
##        MSA
## y1 0.82471
## y2 0.80271
## y3 0.75590
## y4 0.77093
## y5 0.80610
## y6 0.83454

b) (1.5 puntos) Determine el número adecuado de factores a extraer del análisis factorial utilizando el método paralelo. Además, evalúe si es necesario aplicar una rotación para mejorar la interpretabilidad de los factores. Finalmente, identifique qué variables están más correlacionadas con cada factor, justificando su respuesta con base en las cargas factoriales.

# Análisis Paralelo
fa.parallel(encuesta, fm = "ml", fa="fa")

## Parallel analysis suggests that the number of factors =  2  and the number of components =  NA
#2 factores
#Si se considera hacer una rotación por la variable "y4"
factanal(encuesta,factors=2,rotation="varimax")
## 
## Call:
## factanal(x = encuesta, factors = 2, rotation = "varimax")
## 
## Uniquenesses:
##    y1    y2    y3    y4    y5    y6 
## 0.474 0.421 0.230 0.414 0.496 0.538 
## 
## Loadings:
##    Factor1 Factor2
## y1 0.688   0.229  
## y2 0.722   0.240  
## y3 0.837   0.265  
## y4 0.156   0.749  
## y5 0.227   0.673  
## y6 0.273   0.622  
## 
##                Factor1 Factor2
## SS loadings      1.845   1.581
## Proportion Var   0.308   0.263
## Cumulative Var   0.308   0.571
## 
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 4.42 on 4 degrees of freedom.
## The p-value is 0.352

Factor 1: y1 + y2 + y3

Factor 2: y4 + y5 + y6