# Importación de datos
#install.packages(devtools) # solo una vez
#devtools::install_github("dgonxalex80/paqueteMODELOS", force = TRUE)
#library(paqueteMODELOS)
#data(vivenda)
#str(vivienda)
# Carga los datos
datos <- read.csv("vivienda.csv")
# Crea el objeto "vivienda"
vivienda <- data.frame(datos)
# Verifica si el objeto "vivienda" se ha creado correctamente
str(vivienda)
## 'data.frame': 8322 obs. of 13 variables:
## $ id : int 1147 1169 1350 5992 1212 1724 2326 4386 1209 1592 ...
## $ zona : chr "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : int NA NA NA 2 1 1 1 1 2 2 ...
## $ estrato : int 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : int 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: int 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : int 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: int 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num 3.43 3.43 3.44 3.44 3.46 ...
#write.csv(vivienda, "vivienda.csv", row.names = FALSE)
#Cargamos los datos y paquetes adicionales necesarios
#install.packages("tidyverse")
#install.packages("corrplot")
#install.packages("leaflet")
#install.packages("mapview")
#install.packages("table1")
#install.packages("leaflet.extras")
#install.packages("base")
#install.packages("zoo")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(corrplot)
## corrplot 0.92 loaded
library(leaflet)
library(leaflet.extras)
library(base)
library(zoo)
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
#install.packages("factoextra")
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
#install.packages("missForest")
library(missForest)
#Verificamos la cantidad de filas y columnas que tiene el dataset
str(vivienda)
## 'data.frame': 8322 obs. of 13 variables:
## $ id : int 1147 1169 1350 5992 1212 1724 2326 4386 1209 1592 ...
## $ zona : chr "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : int NA NA NA 2 1 1 1 1 2 2 ...
## $ estrato : int 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : int 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: int 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : int 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: int 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num 3.43 3.43 3.44 3.44 3.46 ...
head(vivienda)
## id zona piso estrato preciom areaconst parqueaderos banios
## 1 1147 Zona Oriente NA 3 250 70 1 3
## 2 1169 Zona Oriente NA 3 320 120 1 2
## 3 1350 Zona Oriente NA 3 350 220 2 2
## 4 5992 Zona Sur 2 4 400 280 3 5
## 5 1212 Zona Norte 1 5 260 90 1 2
## 6 1724 Zona Norte 1 5 240 87 1 3
## habitaciones tipo barrio longitud latitud
## 1 6 Casa 20 de julio -76.51168 3.43382
## 2 3 Casa 20 de julio -76.51237 3.43369
## 3 4 Casa 20 de julio -76.51537 3.43566
## 4 3 Casa 3 de julio -76.54000 3.43500
## 5 3 Apartamento acopi -76.51350 3.45891
## 6 3 Apartamento acopi -76.51700 3.36971
# Realizamos una copia del dataset original
#vivienda_copy <- copy(vivienda)
# Muestra un resumen estadístico de las variables numéricas en el dataset.
summary(vivienda)
## id zona piso estrato
## Min. : 1 Length:8322 Min. : 1.000 Min. :3.000
## 1st Qu.:2080 Class :character 1st Qu.: 2.000 1st Qu.:4.000
## Median :4160 Mode :character Median : 3.000 Median :5.000
## Mean :4160 Mean : 3.771 Mean :4.634
## 3rd Qu.:6240 3rd Qu.: 5.000 3rd Qu.:5.000
## Max. :8319 Max. :12.000 Max. :6.000
## NA's :3 NA's :2638 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
## Median : 3.000 Mode :character Mode :character Median :-76.53
## Mean : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
#Porcentaje de distribución de las zonas
Dist_Zonas = table(vivienda$zona)/length(vivienda$estrato)*100
Dist_Zonas
##
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 1.490026 23.071377 14.395578 4.217736 56.789233
#Gráfico de barras para la zona
ggplot(vivienda, aes(x = zona)) +
geom_bar()
#Histograma de distribución de los estratos
ggplot(vivienda, aes(x = estrato)) +
geom_histogram(bins = 30)
## Warning: Removed 3 rows containing non-finite values (`stat_bin()`).
#Cómo se distribuyen los precios de las viviendas
ggplot(vivienda, aes(x = preciom)) +
geom_histogram(bins = 30)
## Warning: Removed 2 rows containing non-finite values (`stat_bin()`).
vivienda_scale= vivienda[, 3:9]
# Convertimos Piso en numérico (Anteriormente está como categórico)
vivienda_scale$piso <- as.numeric(vivienda_scale$piso)
# Reemplazamos los NA por cero
viviendas_sin_na <- replace(vivienda_scale, is.na(vivienda_scale), 0)
head(viviendas_sin_na)
## piso estrato preciom areaconst parqueaderos banios habitaciones
## 1 0 3 250 70 1 3 6
## 2 0 3 320 120 1 2 3
## 3 0 3 350 220 2 2 4
## 4 2 4 400 280 3 5 3
## 5 1 5 260 90 1 2 3
## 6 1 5 240 87 1 3 3
prcomp(viviendas_sin_na)
## Standard deviations (1, .., p=7):
## [1] 344.4662164 99.0796550 2.7296511 1.3910664 1.0245999 0.7965084
## [7] 0.6374926
##
## Rotation (n x k) = (7 x 7):
## PC1 PC2 PC3 PC4
## piso 0.0004573421 -5.562096e-03 0.997479024 -0.0418302696
## estrato -0.0017621859 -2.648470e-03 0.040422931 0.0728490783
## preciom -0.9499197222 -3.124671e-01 -0.001505748 0.0004024692
## areaconst -0.3124642717 9.498828e-01 0.005789996 0.0073176391
## parqueaderos -0.0023193042 -2.099384e-05 0.032478661 -0.0757735536
## banios -0.0028656735 2.820808e-03 -0.002335654 -0.5436848524
## habitaciones -0.0013017755 6.412748e-03 -0.048015339 -0.8315976673
## PC5 PC6 PC7
## piso 0.0552449364 -0.012628227 0.0065729403
## estrato -0.4738024973 0.508128922 -0.7143983977
## preciom 0.0036011189 -0.001167243 0.0002388284
## areaconst -0.0004606223 0.001080919 -0.0006025970
## parqueaderos -0.7916462095 -0.598084248 0.0937530637
## banios -0.3061823852 0.559546477 0.5454770795
## habitaciones 0.2280233240 -0.266169060 -0.4280845996
res.pca <- prcomp(viviendas_sin_na)
fviz_eig(res.pca, addlabels = TRUE)
fviz_pca_var(res.pca,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#FF7F00", "#034D94"),
repel = TRUE # Avoid text overlapping
)
### Observando el gráfico de los componentes principales, observamos en
este ejercicio que el primer CP está asociado el preciom mientras que el
segundo (aunque muy alejado) es el área construida.
datos<- rbind(vivienda[1762,], # ok
vivienda[2878,],
vivienda[1797,],
vivienda[8000,])
datos <- as.data.frame(datos)
rownames(datos) = c("Inmueble 1762","Inmueble 2878","Inmueble 1797","Inmueble 8000")
datos
## id zona piso estrato preciom areaconst parqueaderos
## Inmueble 1762 5684 Zona Sur NA 6 1800 1586 10
## Inmueble 2878 6472 Zona Sur 3 5 170 605 1
## Inmueble 1797 6136 Zona Sur NA 6 1800 850 6
## Inmueble 8000 3800 Zona Norte 11 5 550 660 1
## banios habitaciones tipo barrio longitud latitud
## Inmueble 1762 4 5 Casa ciudad jardín -76.53798 3.35961
## Inmueble 2878 2 2 Apartamento el limonar -76.54294 3.39992
## Inmueble 1797 6 4 Casa ciudad jardín -76.54098 3.35723
## Inmueble 8000 5 0 Apartamento versalles -76.52862 3.45962
casos1 <- rbind(res.pca$x[8000,1:2],res.pca$x[2878]) # CP1
rownames(casos1) = c("78","5284")
casos1 <- as.data.frame(casos1)
casos2 <- rbind(res.pca$x[1797,1:2], res.pca$x[1762,1:2]) # CP2
rownames(casos2) = c("8236","5865")
casos2 <- as.data.frame(casos2)
fviz_pca_ind(res.pca, col.ind = "#DEDEDE", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
geom_point(data = casos1, aes(x = PC1, y = PC2), color = "red", size = 3) +
geom_point(data = casos2, aes(x = PC1, y = PC2), color = "blue", size = 3)
datos<- rbind(vivienda[1762,], # ok
vivienda[2878,],
vivienda[1797,],
vivienda[8000,])
datos <- as.data.frame(datos)
rownames(datos) = c("Inmueble 1762","Inmueble 2878","Inmueble 1797","Inmueble 8000")
datos
## id zona piso estrato preciom areaconst parqueaderos
## Inmueble 1762 5684 Zona Sur NA 6 1800 1586 10
## Inmueble 2878 6472 Zona Sur 3 5 170 605 1
## Inmueble 1797 6136 Zona Sur NA 6 1800 850 6
## Inmueble 8000 3800 Zona Norte 11 5 550 660 1
## banios habitaciones tipo barrio longitud latitud
## Inmueble 1762 4 5 Casa ciudad jardín -76.53798 3.35961
## Inmueble 2878 2 2 Apartamento el limonar -76.54294 3.39992
## Inmueble 1797 6 4 Casa ciudad jardín -76.54098 3.35723
## Inmueble 8000 5 0 Apartamento versalles -76.52862 3.45962
# Seleccionar variables
variables <- c("zona", "estrato", "preciom", "areaconst", "parqueaderos", "banios", "habitaciones", "tipo")
vivienda_nuevo <- vivienda[, variables]
# Asignamos valores numéricos a las variables categóricas
# Zona: Zona Sur = 1, Zona Norte = 2, Zona Oeste = 3, Zona Centro = 4
# Tipo: Casa = 1, Apartamento = 2
vivienda_nuevo$zona <- ifelse(vivienda_nuevo$zona == "Zona Sur", 1,
ifelse(vivienda_nuevo$zona == "Zona Norte", 2,
ifelse(vivienda_nuevo$zona == "Zona Oeste", 3,
ifelse(vivienda_nuevo$zona == "Zona Centro", 4,NA))))
vivienda_nuevo$tipo <- ifelse(vivienda_nuevo$tipo == "Casa", 1,
ifelse(vivienda_nuevo$tipo == "Apartamento", 2, NA))
# Verificar resultados
summary(vivienda_nuevo)
## zona estrato preciom areaconst
## Min. :1.000 Min. :3.000 Min. : 58.0 Min. : 30.0
## 1st Qu.:1.000 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80.0
## Median :1.000 Median :5.000 Median : 330.0 Median : 123.0
## Mean :1.588 Mean :4.634 Mean : 433.9 Mean : 174.9
## 3rd Qu.:2.000 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 229.0
## Max. :4.000 Max. :6.000 Max. :1999.0 Max. :1745.0
## NA's :354 NA's :3 NA's :2 NA's :3
## parqueaderos banios habitaciones tipo
## Min. : 1.000 Min. : 0.000 Min. : 0.000 Min. :1.000
## 1st Qu.: 1.000 1st Qu.: 2.000 1st Qu.: 3.000 1st Qu.:1.000
## Median : 2.000 Median : 3.000 Median : 3.000 Median :2.000
## Mean : 1.835 Mean : 3.111 Mean : 3.605 Mean :1.613
## 3rd Qu.: 2.000 3rd Qu.: 4.000 3rd Qu.: 4.000 3rd Qu.:2.000
## Max. :10.000 Max. :10.000 Max. :10.000 Max. :2.000
## NA's :1605 NA's :3 NA's :3 NA's :3
head(vivienda_nuevo)
## zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## 1 NA 3 250 70 1 3 6 1
## 2 NA 3 320 120 1 2 3 1
## 3 NA 3 350 220 2 2 4 1
## 4 1 4 400 280 3 5 3 1
## 5 2 5 260 90 1 2 3 2
## 6 2 5 240 87 1 3 3 2
# Muestra un resumen estadístico de las variables numéricas en el dataset.
summary(vivienda_nuevo)
## zona estrato preciom areaconst
## Min. :1.000 Min. :3.000 Min. : 58.0 Min. : 30.0
## 1st Qu.:1.000 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80.0
## Median :1.000 Median :5.000 Median : 330.0 Median : 123.0
## Mean :1.588 Mean :4.634 Mean : 433.9 Mean : 174.9
## 3rd Qu.:2.000 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 229.0
## Max. :4.000 Max. :6.000 Max. :1999.0 Max. :1745.0
## NA's :354 NA's :3 NA's :2 NA's :3
## parqueaderos banios habitaciones tipo
## Min. : 1.000 Min. : 0.000 Min. : 0.000 Min. :1.000
## 1st Qu.: 1.000 1st Qu.: 2.000 1st Qu.: 3.000 1st Qu.:1.000
## Median : 2.000 Median : 3.000 Median : 3.000 Median :2.000
## Mean : 1.835 Mean : 3.111 Mean : 3.605 Mean :1.613
## 3rd Qu.: 2.000 3rd Qu.: 4.000 3rd Qu.: 4.000 3rd Qu.:2.000
## Max. :10.000 Max. :10.000 Max. :10.000 Max. :2.000
## NA's :1605 NA's :3 NA's :3 NA's :3
# Reemplazamos los NA por cero
vivienda_nuevo_sin_na <- replace(vivienda_nuevo, is.na(vivienda_nuevo), 0)
head(vivienda_nuevo_sin_na)
## zona estrato preciom areaconst parqueaderos banios habitaciones tipo
## 1 0 3 250 70 1 3 6 1
## 2 0 3 320 120 1 2 3 1
## 3 0 3 350 220 2 2 4 1
## 4 1 4 400 280 3 5 3 1
## 5 2 5 260 90 1 2 3 2
## 6 2 5 240 87 1 3 3 2
# Para este ejemplo utilizaremos K-means
metodo <- "kmeans"
# Definir un rango de valores para k
k_values <- seq(2, 10)
# Almacenar los resultados de kmeans para cada valor de k
kmeans_results <- lapply(k_values, function(k) kmeans(vivienda_nuevo_sin_na, k))
# Calcular la suma total de cuadrados dentro para cada valor de k
withinss_values <- sapply(kmeans_results, function(res) res$withinss)
# Extraer los valores numéricos (suponiendo que cada sublista contiene un solo valor)
withinss_numeric <- sapply(withinss_values, function(x) x[[1]])
# Crear el gráfico
plot(k_values, withinss_numeric, type = "b",
main = "Grafica del codo", xlab = "Numero de clusters (k)",
ylab = "Suma total de cuadrados dentro (Withinss)")
# Realizar análisis de clusters
clusters <- kmeans(vivienda_nuevo_sin_na, 4)
# Visualizar clusters
fviz_cluster(clusters, data = vivienda_nuevo_sin_na)
# Interpretar resultados
summary(clusters)
## Length Class Mode
## cluster 8322 -none- numeric
## centers 32 -none- numeric
## totss 1 -none- numeric
## withinss 4 -none- numeric
## tot.withinss 1 -none- numeric
## betweenss 1 -none- numeric
## size 4 -none- numeric
## iter 1 -none- numeric
## ifault 1 -none- numeric
#Obtener la media de los Cluster
aggregate(vivienda_nuevo_sin_na,by=list(clusters$cluster),FUN=mean)
## Group.1 zona estrato preciom areaconst parqueaderos banios
## 1 1 1.835271 5.798450 1389.8740 444.22180 3.4864341 5.189922
## 2 2 1.627916 4.852644 434.5793 196.60568 1.6419129 3.505443
## 3 3 1.733844 5.530612 779.9439 306.76613 2.4515306 4.543367
## 4 4 1.351158 4.083292 211.3982 88.62457 0.8432725 2.179892
## habitaciones tipo
## 1 4.315891 1.383721
## 2 4.018274 1.460342
## 3 4.259354 1.414966
## 4 3.061114 1.795219
# Seleccionar variables
variables <- c("zona", "estrato", "preciom", "areaconst", "parqueaderos", "banios", "habitaciones", "tipo")
vivienda_nuevo_2 <- vivienda[, variables]
# Trabajaremos con una copia del dataframe del punto anterior
Vivienda_correspondencia = vivienda_nuevo_2
head(Vivienda_correspondencia)
## zona estrato preciom areaconst parqueaderos banios habitaciones
## 1 Zona Oriente 3 250 70 1 3 6
## 2 Zona Oriente 3 320 120 1 2 3
## 3 Zona Oriente 3 350 220 2 2 4
## 4 Zona Sur 4 400 280 3 5 3
## 5 Zona Norte 5 260 90 1 2 3
## 6 Zona Norte 5 240 87 1 3 3
## tipo
## 1 Casa
## 2 Casa
## 3 Casa
## 4 Casa
## 5 Apartamento
## 6 Apartamento
#Convertimos estrato en factor
Vivienda_correspondencia$estrato <- as.factor(Vivienda_correspondencia$estrato)
#Validamos datos faltantes
summary(Vivienda_correspondencia)
## zona estrato preciom areaconst
## Length:8322 3 :1453 Min. : 58.0 Min. : 30.0
## Class :character 4 :2129 1st Qu.: 220.0 1st Qu.: 80.0
## Mode :character 5 :2750 Median : 330.0 Median : 123.0
## 6 :1987 Mean : 433.9 Mean : 174.9
## NA's: 3 3rd Qu.: 540.0 3rd Qu.: 229.0
## Max. :1999.0 Max. :1745.0
## NA's :2 NA's :3
## parqueaderos banios habitaciones tipo
## Min. : 1.000 Min. : 0.000 Min. : 0.000 Length:8322
## 1st Qu.: 1.000 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 2.000 Median : 3.000 Median : 3.000 Mode :character
## Mean : 1.835 Mean : 3.111 Mean : 3.605
## 3rd Qu.: 2.000 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000 Max. :10.000
## NA's :1605 NA's :3 NA's :3
Vivienda_correspondencia <- na.omit(Vivienda_correspondencia)
summary(Vivienda_correspondencia)
## zona estrato preciom areaconst parqueaderos
## Length:6717 3: 684 Min. : 58.0 Min. : 30.0 Min. : 1.000
## Class :character 4:1641 1st Qu.: 248.0 1st Qu.: 86.0 1st Qu.: 1.000
## Mode :character 5:2522 Median : 355.0 Median : 130.0 Median : 2.000
## 6:1870 Mean : 468.9 Mean : 181.1 Mean : 1.835
## 3rd Qu.: 580.0 3rd Qu.: 233.0 3rd Qu.: 2.000
## Max. :1999.0 Max. :1745.0 Max. :10.000
## banios habitaciones tipo
## Min. : 0.000 Min. : 0.000 Length:6717
## 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 3.000 Median : 3.000 Mode :character
## Mean : 3.255 Mean : 3.611
## 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000
library(FactoMineR)
tabla_1 <- table(Vivienda_correspondencia$zona, Vivienda_correspondencia$estrato)
colnames(tabla_1) <- c("Estrato3", "Estrato4", "Estrato5", "Estrato6" )
tabla_1
##
## Estrato3 Estrato4 Estrato5 Estrato6
## Zona Centro 53 8 3 0
## Zona Norte 237 268 669 113
## Zona Oeste 24 62 265 747
## Zona Oriente 159 2 1 1
## Zona Sur 211 1301 1584 1009
tabla_2 <- table(Vivienda_correspondencia$zona, Vivienda_correspondencia$tipo)
colnames(tabla_2) <- c("Casa", "Apartamento")
tabla_2
##
## Casa Apartamento
## Zona Centro 10 54
## Zona Norte 852 435
## Zona Oeste 966 132
## Zona Oriente 22 141
## Zona Sur 2381 1724
tabla_3 <- table(Vivienda_correspondencia$tipo, Vivienda_correspondencia$estrato)
colnames(tabla_3) <- c("Estrato3", "Estrato4", "Estrato5", "Estrato6" )
tabla_3
##
## Estrato3 Estrato4 Estrato5 Estrato6
## Apartamento 296 1047 1659 1229
## Casa 388 594 863 641
chisq.test(tabla_1)
##
## Pearson's Chi-squared test
##
## data: tabla_1
## X-squared = 3188.9, df = 12, p-value < 2.2e-16
chisq.test(tabla_2)
##
## Pearson's Chi-squared test
##
## data: tabla_2
## X-squared = 576.44, df = 4, p-value < 2.2e-16
chisq.test(tabla_3)
##
## Pearson's Chi-squared test
##
## data: tabla_3
## X-squared = 128.92, df = 3, p-value < 2.2e-16
# Tabla uno
resultados_ac_1 <- CA(tabla_1)
# Tabla dos
resultados_ac_2 <- CA(tabla_2)
# Tabla dos
resultados_ac_3 <- CA(tabla_3)
#Valores propios de la varianza acumulada de la tabla uno
valores_prop_1 <-resultados_ac_1$eig ; valores_prop_1
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.31503422 66.358860 66.35886
## dim 2 0.14320084 30.163848 96.52271
## dim 3 0.01650821 3.477292 100.00000
fviz_screeplot(resultados_ac_1, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
ylab("Porcentaje de varianza explicado") + xlab("Ejes")
#Valores propios de la varianza acumulada de la tabla dos
valores_prop_2 <-resultados_ac_2$eig ; valores_prop_2
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.085818 100 100
fviz_screeplot(resultados_ac_2, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
ylab("Porcentaje de varianza explicado") + xlab("Ejes")
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
#Valores propios de la varianza acumulada de la tabla tres
valores_prop_3 <-resultados_ac_3$eig ; valores_prop_3
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.01919318 100 100
fviz_screeplot(resultados_ac_3, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
ylab("Porcentaje de varianza explicado") + xlab("Ejes")
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?