Se carga la tabla para desarrollar el ejercicio.
library(readxl)
datos <- read_excel("~/R/proyectos/ACAACA02/DATOS.xlsx")
datos = data.frame(datos)
#Se muestran los datos
head (datos)
| N | EDAD | HIJOS | PESO_ANTES_DIETA | PESO_DESPUES_DIETA | INGRESO | GASTOS | TIEMPO_RECORRIDO | GASTO_DIARIO_TRANSPORTE | PERSONAS_HOGAR | PERSONAS_EDAD_TRABAJAR | NUMERO_PERSONAS_EDAD_TRABAJAR |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 32 | 3 | 79 | 67 | 3400 | 2000 | 20 | 6 | 5 | 4 | 2 |
| 2 | 33 | 2 | 58 | 55 | 4000 | 3100 | 25 | 10 | 5 | 5 | 3 |
| 3 | 35 | 0 | 70 | 65 | 1100 | 800 | 40 | 6 | 3 | 2 | 1 |
| 4 | 60 | 1 | 59 | 58 | 1600 | 1550 | 30 | 10 | 2 | 2 | 1 |
| 5 | 19 | 0 | 62 | 60 | 1650 | 1300 | 38 | 3 | 5 | 3 | 1 |
| 6 | 20 | 0 | 75 | 77 | 600 | 600 | 10 | 3 | 1 | 1 | 1 |
Para realizar el analisis exploratorio multivariado vamos a realizar los siguientes pasos:
A partir de la base de datos denominda datos.xls, se realizará un análisis exploratorio multivariado que nos permitiran describir el comportamiento de las personas con respecto a las variables ingresos y gastos.
library(dplyr)
library(ggplot2)
# Resumen estadístico de las variables
summary(datos)
## N EDAD HIJOS PESO_ANTES_DIETA
## Min. : 1.00 Min. :19.00 Min. :0.00 Min. :40.00
## 1st Qu.:22.75 1st Qu.:29.00 1st Qu.:1.00 1st Qu.:59.00
## Median :44.50 Median :38.00 Median :1.00 Median :70.00
## Mean :44.50 Mean :37.44 Mean :1.58 Mean :67.56
## 3rd Qu.:66.25 3rd Qu.:45.00 3rd Qu.:2.00 3rd Qu.:75.00
## Max. :88.00 Max. :60.00 Max. :5.00 Max. :94.00
## PESO_DESPUES_DIETA INGRESO GASTOS TIEMPO_RECORRIDO
## Min. :38.00 Min. : 500 Min. : 400 Min. :10.0
## 1st Qu.:58.00 1st Qu.: 750 1st Qu.: 700 1st Qu.:20.0
## Median :65.00 Median :1200 Median :1050 Median :30.0
## Mean :65.57 Mean :1705 Mean :1448 Mean :29.9
## 3rd Qu.:71.00 3rd Qu.:2325 3rd Qu.:1925 3rd Qu.:40.0
## Max. :90.00 Max. :6000 Max. :5500 Max. :55.0
## GASTO_DIARIO_TRANSPORTE PERSONAS_HOGAR PERSONAS_EDAD_TRABAJAR
## Min. : 3.00 Min. :1.000 Min. :1.000
## 1st Qu.: 4.75 1st Qu.:3.000 1st Qu.:2.000
## Median : 5.50 Median :3.000 Median :2.000
## Mean : 9.17 Mean :3.534 Mean :2.443
## 3rd Qu.: 8.00 3rd Qu.:5.000 3rd Qu.:3.000
## Max. :240.00 Max. :5.000 Max. :5.000
## NUMERO_PERSONAS_EDAD_TRABAJAR
## Min. :1.00
## 1st Qu.:1.00
## Median :2.00
## Mean :1.83
## 3rd Qu.:2.00
## Max. :3.00
# Mostramos los nombres de variables
names(datos)
## [1] "N" "EDAD"
## [3] "HIJOS" "PESO_ANTES_DIETA"
## [5] "PESO_DESPUES_DIETA" "INGRESO"
## [7] "GASTOS" "TIEMPO_RECORRIDO"
## [9] "GASTO_DIARIO_TRANSPORTE" "PERSONAS_HOGAR"
## [11] "PERSONAS_EDAD_TRABAJAR" "NUMERO_PERSONAS_EDAD_TRABAJAR"
# Histogramas de cada variable
hist(datos$EDAD, main = "Histograma de EDAD", xlab = "EDAD")
hist(datos$HIJOS, main = "Histograma de HIJOS", xlab = "HIJOS")
hist(datos$PESO_ANTES_DIETA, main = "Histograma de PESO_A_DIETA", xlab = "PESO_ANTES_DIETA")
hist(datos$PESO_DESPUES_DIETA, main = "Histograma de PESO_D_DIETA", xlab = "PESO_DESPUES_DIETA")
hist(datos$INGRESO, main = "Histograma de INGRESO", xlab = "INGRESO")
hist(datos$GASTOS, main = "Histograma de GASTOS", xlab = "GASTOS")
hist(datos$TIEMPO_RECORRIDO, main = "Histograma de TIEMPO_RECORRIDO", xlab = "TIEMPO_RECORRIDO")
hist(datos$GASTO_DIARIO_TRANSPORTE, main = "Histograma de GASTO_D_TRANSPORTE", xlab = "GASTO_DIARIO_TRANSPORTE")
hist(datos$PERSONAS_HOGAR, main = "Histograma de PERSONAS_HOGAR", xlab = "PERSONAS_HOGAR")
hist(datos$PERSONAS_EDAD_TRABAJAR, main = "Histograma de P_EDAD_TRABAJAR", xlab = "PERSONAS_EDAD_TRABAJAR")
hist(datos$NUMERO_PERSONAS_EDAD_TRABAJAR, main = "Histograma de N_P_EDAD_TRABAJAR", xlab = "NUMERO_PERSONAS_EDAD_TRABAJAR")
# Diagramas de caja
#par(mfrow=c(2,1))
boxplot(datos$EDAD, main = "Boxplot de EDAD")
boxplot(datos$HIJOS, main = "Boxplot de HIJOS")
boxplot(datos$PESO_ANTES_DIETA, main = "Boxplot de PESO_A_DIETA")
boxplot(datos$PESO_DESPUES_DIETA, main = "Boxplot de PESO_D_DIETA")
boxplot(datos$INGRESO, main = "Boxplot de INGRESO")
boxplot(datos$GASTOS, main = "Boxplot de GASTOS")
boxplot(datos$TIEMPO_RECORRIDO, main = "Boxplot de TIEMPO_RECORRIDO")
boxplot(datos$GASTO_DIARIO_TRANSPORTE, main = "Boxplot de GASTO_D_TRANSPORTE")
boxplot(datos$PERSONAS_HOGAR, main = "Boxplot de PERSONAS_HOGAR")
boxplot(datos$PERSONAS_EDAD_TRABAJAR, main = "Boxplot de P_EDAD_TRABAJAR")
boxplot(datos$NUMERO_PERSONAS_EDAD_TRABAJAR, main = "Boxplot de N_P_EDAD_TRABAJAR")
# Diagrama de dispersión
pairs(datos)
library(Rcmdr)
library(abind, pos=20)
library(e1071, pos=21)
numSummary(datos[,c("EDAD", "GASTO_DIARIO_TRANSPORTE", "GASTOS", "HIJOS",
"INGRESO", "NUMERO_PERSONAS_EDAD_TRABAJAR", "PERSONAS_EDAD_TRABAJAR",
"PERSONAS_HOGAR", "PESO_ANTES_DIETA", "PESO_DESPUES_DIETA",
"TIEMPO_RECORRIDO"), drop=FALSE], statistics=c("mean", "se(mean)", "var",
"quantiles", "CV"), quantiles=c(0,.25,.5,.75,1))
## mean se(mean) var CV
## EDAD 37.443182 1.22355602 1.317439e+02 0.3065437
## GASTO_DIARIO_TRANSPORTE 9.170455 2.67170150 6.281430e+02 2.7329923
## GASTOS 1448.295455 114.38596481 1.151405e+06 0.7408954
## HIJOS 1.579545 0.14064487 1.740726e+00 0.8352820
## INGRESO 1705.340909 131.07653974 1.511933e+06 0.7210329
## NUMERO_PERSONAS_EDAD_TRABAJAR 1.829545 0.07788611 5.338297e-01 0.3993541
## PERSONAS_EDAD_TRABAJAR 2.443182 0.09944721 8.702978e-01 0.3818371
## PERSONAS_HOGAR 3.534091 0.12409428 1.355146e+00 0.3293938
## PESO_ANTES_DIETA 67.556818 1.20895064 1.286174e+02 0.1678729
## PESO_DESPUES_DIETA 65.568182 1.11812692 1.100183e+02 0.1599703
## TIEMPO_RECORRIDO 29.897727 1.21371471 1.296331e+02 0.3808200
## 0% 25% 50% 75% 100% n
## EDAD 19 29.00 38.0 45 60 88
## GASTO_DIARIO_TRANSPORTE 3 4.75 5.5 8 240 88
## GASTOS 400 700.00 1050.0 1925 5500 88
## HIJOS 0 1.00 1.0 2 5 88
## INGRESO 500 750.00 1200.0 2325 6000 88
## NUMERO_PERSONAS_EDAD_TRABAJAR 1 1.00 2.0 2 3 88
## PERSONAS_EDAD_TRABAJAR 1 2.00 2.0 3 5 88
## PERSONAS_HOGAR 1 3.00 3.0 5 5 88
## PESO_ANTES_DIETA 40 59.00 70.0 75 94 88
## PESO_DESPUES_DIETA 38 58.00 65.0 71 90 88
## TIEMPO_RECORRIDO 10 20.00 30.0 40 55 88
scatterplotMatrix(~EDAD+GASTO_DIARIO_TRANSPORTE+GASTOS+HIJOS+INGRESO+NUMERO_PERSONAS_EDAD_TRABAJAR+PERSONAS_EDAD_TRABAJAR+PERSONAS_HOGAR+PESO_ANTES_DIETA+PESO_DESPUES_DIETA+TIEMPO_RECORRIDO,
regLine=FALSE, smooth=FALSE, diagonal=list(method="density"), data=datos)
Con la anterior información se puede analizar lo siguiente:
La edad de los pertenecientes en la base de datos se encuentra entre los 19 y los 60 años de los cuales la edad promedio es 37 años.
Por el histigrama y el diagrama de caja el numero de hijos disminuye a medida que aumenta el item de cantidad de numeros de hijos y existen datos atipicos (4 y 5 hijos) que se escapa del tercer cuartil ( 2 hijos)
En comparacion de los promedios de pesos antes de la dieta que estaba en 67,56 kg paso a ser despues de la dieta de 65 kg y dejando de ser el dato maximo de kilogramos de 94 kg a 90 kg respectivamente po rlo cual se puede deducir que la dieta funcionó
en comparación con los datos de gastos e ingresos la diferencia entre los datos es muy pequeña, es decir que explica que el restante de los ingresos y los gatos es reducido, comportandose con una igualdad promedio visualizada entre el histograma y la diagrama de caja
El tiempo minimo de recorrido de las personas esta entre 10 minutos minimo y 55 minutos maximo, con un promedio de 30 minutos por recorrido
En los gastos diario de tranposte volvemos encontrar datos atipicos (por encima de los 200 pesos) quedando muy por encima del tercer cuartil (8 pesos) y el promedio (9,17 pesos)
el promedio de personas que viven en el hogar es de 3 personas, de las cuales una persona tiene edad para laborar
## Matriz de correlacion 1
library(corrplot)
matr_corr = cor(datos)
matr_corr
## N EDAD HIJOS
## N 1.000000000 0.35366878 0.15260292
## EDAD 0.353668783 1.00000000 0.56880406
## HIJOS 0.152602917 0.56880406 1.00000000
## PESO_ANTES_DIETA -0.034137837 -0.22116893 -0.24689279
## PESO_DESPUES_DIETA -0.009393917 -0.18599768 -0.23420555
## INGRESO 0.092477082 0.11178889 0.15642326
## GASTOS 0.141355241 0.16697514 0.13304516
## TIEMPO_RECORRIDO -0.074152475 -0.03623822 -0.20796085
## GASTO_DIARIO_TRANSPORTE 0.062965614 -0.03294995 -0.01588319
## PERSONAS_HOGAR 0.005217659 -0.13749266 0.20027681
## PERSONAS_EDAD_TRABAJAR -0.169039854 -0.30301771 -0.24842787
## NUMERO_PERSONAS_EDAD_TRABAJAR -0.023092180 -0.10601987 -0.03942979
## PESO_ANTES_DIETA PESO_DESPUES_DIETA INGRESO
## N -0.03413784 -0.009393917 0.09247708
## EDAD -0.22116893 -0.185997683 0.11178889
## HIJOS -0.24689279 -0.234205548 0.15642326
## PESO_ANTES_DIETA 1.00000000 0.968894099 0.29131702
## PESO_DESPUES_DIETA 0.96889410 1.000000000 0.24972971
## INGRESO 0.29131702 0.249729711 1.00000000
## GASTOS 0.25793618 0.237477784 0.96515750
## TIEMPO_RECORRIDO 0.14536575 0.111850764 0.14008995
## GASTO_DIARIO_TRANSPORTE 0.05801588 0.055419068 0.37027554
## PERSONAS_HOGAR -0.20823095 -0.242592460 0.32866408
## PERSONAS_EDAD_TRABAJAR -0.21154284 -0.206928079 0.04510841
## NUMERO_PERSONAS_EDAD_TRABAJAR -0.10493621 -0.092206502 0.11502130
## GASTOS TIEMPO_RECORRIDO
## N 0.14135524 -0.07415247
## EDAD 0.16697514 -0.03623822
## HIJOS 0.13304516 -0.20796085
## PESO_ANTES_DIETA 0.25793618 0.14536575
## PESO_DESPUES_DIETA 0.23747778 0.11185076
## INGRESO 0.96515750 0.14008995
## GASTOS 1.00000000 0.15715034
## TIEMPO_RECORRIDO 0.15715034 1.00000000
## GASTO_DIARIO_TRANSPORTE 0.39437553 0.03103740
## PERSONAS_HOGAR 0.28783387 0.07094458
## PERSONAS_EDAD_TRABAJAR 0.03119168 -0.08658457
## NUMERO_PERSONAS_EDAD_TRABAJAR 0.10371866 -0.23424940
## GASTO_DIARIO_TRANSPORTE PERSONAS_HOGAR
## N 0.06296561 0.005217659
## EDAD -0.03294995 -0.137492664
## HIJOS -0.01588319 0.200276807
## PESO_ANTES_DIETA 0.05801588 -0.208230951
## PESO_DESPUES_DIETA 0.05541907 -0.242592460
## INGRESO 0.37027554 0.328664083
## GASTOS 0.39437553 0.287833874
## TIEMPO_RECORRIDO 0.03103740 0.070944578
## GASTO_DIARIO_TRANSPORTE 1.00000000 0.018117944
## PERSONAS_HOGAR 0.01811794 1.000000000
## PERSONAS_EDAD_TRABAJAR 0.15207956 0.562761121
## NUMERO_PERSONAS_EDAD_TRABAJAR 0.15099682 0.405575796
## PERSONAS_EDAD_TRABAJAR
## N -0.16903985
## EDAD -0.30301771
## HIJOS -0.24842787
## PESO_ANTES_DIETA -0.21154284
## PESO_DESPUES_DIETA -0.20692808
## INGRESO 0.04510841
## GASTOS 0.03119168
## TIEMPO_RECORRIDO -0.08658457
## GASTO_DIARIO_TRANSPORTE 0.15207956
## PERSONAS_HOGAR 0.56276112
## PERSONAS_EDAD_TRABAJAR 1.00000000
## NUMERO_PERSONAS_EDAD_TRABAJAR 0.70232278
## NUMERO_PERSONAS_EDAD_TRABAJAR
## N -0.02309218
## EDAD -0.10601987
## HIJOS -0.03942979
## PESO_ANTES_DIETA -0.10493621
## PESO_DESPUES_DIETA -0.09220650
## INGRESO 0.11502130
## GASTOS 0.10371866
## TIEMPO_RECORRIDO -0.23424940
## GASTO_DIARIO_TRANSPORTE 0.15099682
## PERSONAS_HOGAR 0.40557580
## PERSONAS_EDAD_TRABAJAR 0.70232278
## NUMERO_PERSONAS_EDAD_TRABAJAR 1.00000000
png("corrplot.png", width = 800, height = 800)
corrplot(matr_corr, method = "color",addCoef.col = "black")
dev.off()
## png
## 2
knitr::include_graphics("corrplot.png")
Segun los datos de correlacion y el el mapa de calor podemos verificar quienes tienen:
Correlacion positiva:
HIJOS - EDAD = 0.57
PESO_ANTES_DIETA - PESO_DESPUES_DIETA = 0.97
GASTOS - INGRESO = 0.97
PERSONAS_EDAD_TRABAJAR - PERSONAS_HOGAR = 0.56
NUMERO_PERSONAS_EDAD_TRABAJAR - PERSONAS_EDAD_TRABAJAR = 0.7
Correlacion negativa
EDAD - PERSONAS_EDAD_TRABAJAR = -0.3
Como los datos no son categoricos no se requier hacer una tabla de contingencia
.cluster <- KMeans(model.matrix(~-1 + EDAD + GASTO_DIARIO_TRANSPORTE +
GASTOS + HIJOS + INGRESO + NUMERO_PERSONAS_EDAD_TRABAJAR +
PERSONAS_EDAD_TRABAJAR + PERSONAS_HOGAR + PESO_ANTES_DIETA +
PESO_DESPUES_DIETA + TIEMPO_RECORRIDO, datos), centers = 4, iter.max = 10,
num.seeds = 10)
.cluster$size # Cluster Sizes
## [1] 18 22 1 47
.cluster$centers # Cluster Centroids
## new.x.EDAD new.x.GASTO_DIARIO_TRANSPORTE new.x.GASTOS new.x.HIJOS
## 1 40.61111 6.055556 3116.6667 2.055556
## 2 40.09091 7.000000 1456.8182 1.318182
## 3 29.00000 240.000000 5500.0000 1.000000
## 4 35.17021 6.468085 719.1489 1.531915
## new.x.INGRESO new.x.NUMERO_PERSONAS_EDAD_TRABAJAR
## 1 3622.2222 1.944444
## 2 1863.6364 1.727273
## 3 6000.0000 3.000000
## 4 805.7447 1.808511
## new.x.PERSONAS_EDAD_TRABAJAR new.x.PERSONAS_HOGAR new.x.PESO_ANTES_DIETA
## 1 2.500000 4.111111 71.27778
## 2 2.318182 3.681818 68.63636
## 3 4.000000 4.000000 76.00000
## 4 2.446809 3.234043 65.44681
## new.x.PESO_DESPUES_DIETA new.x.TIEMPO_RECORRIDO
## 1 69.16667 32.88889
## 2 65.27273 30.90909
## 3 73.00000 35.00000
## 4 64.17021 28.17021
.cluster$withinss # Within Cluster Sum of Squares
## [1] 8866102 4649286 0 3558703
.cluster$tot.withinss # Total Within Sum of Squares
## [1] 17074092
.cluster$betweenss # Between Cluster Sum of Squares
## [1] 214734883
biplot(princomp(model.matrix(~-1 + EDAD + GASTO_DIARIO_TRANSPORTE + GASTOS
+ HIJOS + INGRESO + NUMERO_PERSONAS_EDAD_TRABAJAR + PERSONAS_EDAD_TRABAJAR
+ PERSONAS_HOGAR + PESO_ANTES_DIETA + PESO_DESPUES_DIETA + TIEMPO_RECORRIDO,
datos)), xlabs = as.character(.cluster$cluster))
remove(.cluster)
Un Ingeniero quiere establecer una relación lineal, en la que el valor del metro cuadrado de unos inmuebles sea explicado por las variables distancia (en metros) al centro comercial cercano y valor comercial del inmueble, con un 95% de confianza
Se carga la tabla para desarrollar el ejercicio.
columnas = c("N", "valor metro cuadrado", "distancia centro comercial", "valor comercial inmueble")
df = data.frame(matrix(ncol=length(columnas),nrow = 0))
colnames(df) = columnas
df [1,] = c(1,101423,96,49429499)
df [2,] = c(2,115277,94,51305103)
df [3,] = c(3,122570,102,51099623)
df [4,] = c(4,125809,106,50772703)
df
| N | valor metro cuadrado | distancia centro comercial | valor comercial inmueble |
|---|---|---|---|
| 1 | 101423 | 96 | 49429499 |
| 2 | 115277 | 94 | 51305103 |
| 3 | 122570 | 102 | 51099623 |
| 4 | 125809 | 106 | 50772703 |