library("tidyverse")
library("gtools")
library("gdata")
library("gmodels")
library("ggplot2")
library("vcd")
library("agricolae")
library("psych")
library("fBasics")
library("Hmisc")Laboratorio N°2: Análisis Exploratorio de Datos
Marketing Directo
El archivo MarketingDirecto.csv contiene datos de un vendedor de marketing directo el cuál vende sus productos sólo a través de correos electrónicos personalizados. El vendedor envía catálogos a los clientes con las características de los productos, y estos ordenan directamente de los catálogos.
El responsable de marketing ha desarrollado registros de clientes para aprender qué hace que algunos clientes gasten más que otros. El conjunto de datos incluye \(n = 1000\) clientes y las siguientes variables:
Edad: Grupo etario del cliente (Adulta/Media/Joven).
Genero: Género del cliente (Masculino/Femenino).
Vivienda: Si el cliente es dueño de su casa (Propia/Alquilada)
Ecivil: Estado civil (Soltero/Casado).
Ubicacion: Ubicación de un negocio que vende productos similares en términos de distancia (Lejos/Cerca).
Salario: Sueldo anual de los clientes (en dólares)
Hijos: Número de hijos (0-3).
Historial: Historial del volumen de compra anterior (Bajo/Medio/Alto/NA). NA significa que este cliente aún no ha adquirido ningún producto.
Catalogos: Número de catálogos enviados.
Monto: Gasto en dólares
Preparando el entorno:
Primero cargamos las librerías de R que usaremos en este laboratorio:
Ahora importamos la base de datos y realizamos un preprocesamiento básico para poder realizar el análisis exploratorio de los datos.
# Lectura de datos
DMark <- read.csv("MarketingDirecto.csv")
# Remover valores distintos
DMark <- distinct(DMark)
# Remover valores perdidos
DMark <- na.omit(DMark)
# Inspeccionar el contenido y estructura de los datos importados
head(DMark) Edad Genero Vivienda Ecivil Ubicacion Salario Hijos Historial
1 Adulta Femenino Propia Soltero Lejos 47500 0 Alto
2 Media Masculino Alquilada Soltero Cerca 63600 0 Alto
3 Joven Femenino Alquilada Soltero Cerca 13500 0 Bajo
4 Media Masculino Propia Casado Cerca 85600 1 Alto
5 Media Femenino Propia Soltero Cerca 68400 0 Alto
6 Joven Masculino Propia Casado Cerca 30400 0 Bajo
Catalogos Monto
1 6 755
2 6 1318
3 18 296
4 18 2436
5 12 1304
6 6 495
str(DMark)'data.frame': 1000 obs. of 10 variables:
$ Edad : chr "Adulta" "Media" "Joven" "Media" ...
$ Genero : chr "Femenino" "Masculino" "Femenino" "Masculino" ...
$ Vivienda : chr "Propia" "Alquilada" "Alquilada" "Propia" ...
$ Ecivil : chr "Soltero" "Soltero" "Soltero" "Casado" ...
$ Ubicacion: chr "Lejos" "Cerca" "Cerca" "Cerca" ...
$ Salario : int 47500 63600 13500 85600 68400 30400 48100 68400 51900 80700 ...
$ Hijos : int 0 0 0 1 0 0 0 0 3 0 ...
$ Historial: chr "Alto" "Alto" "Bajo" "Alto" ...
$ Catalogos: int 6 6 18 18 12 6 12 18 6 18 ...
$ Monto : int 755 1318 296 2436 1304 495 782 1155 158 3034 ...
#Ordenar niveles de variables categóricas ordinales
DMark$Edad = factor(DMark$Edad,levels = c("Joven","Media","Adulta"),ordered=TRUE)
DMark$Historial = factor(DMark$Historial,levels = c("Bajo","Medio","Alto"),ordered=TRUE)
str(DMark)'data.frame': 1000 obs. of 10 variables:
$ Edad : Ord.factor w/ 3 levels "Joven"<"Media"<..: 3 2 1 2 2 1 2 2 2 3 ...
$ Genero : chr "Femenino" "Masculino" "Femenino" "Masculino" ...
$ Vivienda : chr "Propia" "Alquilada" "Alquilada" "Propia" ...
$ Ecivil : chr "Soltero" "Soltero" "Soltero" "Casado" ...
$ Ubicacion: chr "Lejos" "Cerca" "Cerca" "Cerca" ...
$ Salario : int 47500 63600 13500 85600 68400 30400 48100 68400 51900 80700 ...
$ Hijos : int 0 0 0 1 0 0 0 0 3 0 ...
$ Historial: Ord.factor w/ 3 levels "Bajo"<"Medio"<..: 3 3 1 3 3 1 2 3 1 NA ...
$ Catalogos: int 6 6 18 18 12 6 12 18 6 18 ...
$ Monto : int 755 1318 296 2436 1304 495 782 1155 158 3034 ...
Análisis Exploratorio de Datos
- Presente una tabla de distribución de frecuencias para el grupo etario del cliente. Construya una gráfica adecuada y analice los resultados.
freq_table <- DMark %>%
count(Edad) %>%
rename(Frecuencia = n)
freq_table Edad Frecuencia
1 Joven 287
2 Media 508
3 Adulta 205
Otras formas de obtener la tabla de frecuencia
# Tabla de Frecuencia
# -------------------
ni<-table(DMark$Edad)
fi<-prop.table(table(DMark$Edad))
pi<-prop.table(table(DMark$Edad))*100
edad.tabla<-t(rbind(ni,fi,pi))
edad.tabla ni fi pi
Joven 287 0.287 28.7
Media 508 0.508 50.8
Adulta 205 0.205 20.5
# Frecuencias absolutas
table(DMark$Edad)
Joven Media Adulta
287 508 205
#Frecuencias relativas
prop.table(table(DMark$Edad)) %>% round(digits = 2)
Joven Media Adulta
0.29 0.51 0.20
## Usando funciones de librerías
library(gmodels)
CrossTable(DMark$Edad, format="SAS")
Cell Contents
|-------------------------|
| N |
| N / Table Total |
|-------------------------|
Total Observations in Table: 1000
| Joven | Media | Adulta |
|-----------|-----------|-----------|
| 287 | 508 | 205 |
| 0.287 | 0.508 | 0.205 |
|-----------|-----------|-----------|
CrossTable(DMark$Edad, format="SPSS")
Cell Contents
|-------------------------|
| Count |
| Row Percent |
|-------------------------|
Total Observations in Table: 1000
| Joven | Media | Adulta |
|-----------|-----------|-----------|
| 287 | 508 | 205 |
| 28.700% | 50.800% | 20.500% |
|-----------|-----------|-----------|
Visualicemos ahora la distribución de frecuencias obtenida usando gráficas adecuadas. Por ejemplo, podemos usar una gráfica de barra obtenida con las funciones básicas que nos brinda R:
barplot(pi, main="Distribución de las edades de los clientes",
xlab="Grupo Etario", col = 1,
ylab="Porcentaje de Clientes")Es recomendable usar la librería ggplot2 para obtener visualizaciones con mejor presentación:
ggplot(freq_table, aes(x = Edad, y = Frecuencia)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Distribución de frecuencia de cliente por grupo etario",
x = "Grupo Etario", y = "Número de Clientes") +
theme_bw()También se puede usar una gráfica de barras agrupadas:
# Gráfico de Sectores Circulares
# ------------------------------
## Colocar porcentajes
lbls1 <- paste(names(table(DMark$Edad)), "\n",
prop.table(table(DMark$Edad))*100,"%", sep="")
pie(pi, labels = lbls1,
main="Distribución de la Edad de los Clientes")Comentarios:
Del gráfico se desprende que el grupo de edad con mayor frecuencia de clientes es el de “Edad Media”, seguido del de “Jóvenes” y del de “Adulta”. Esta información podría ser útil para orientar las campañas de marketing hacia estos grupos de edad.
- Analice la asociación entre el grupo etario del cliente y el historial del volumen de compra anterior.
Presentemos primero la tabla de contingencia:
tabla1=table(DMark$Edad,DMark$Historial)
tabla1
Bajo Medio Alto
Joven 123 35 7
Media 69 127 167
Adulta 38 50 81
# Usando librerías
CrossTable(x = DMark$Edad,y = DMark$Historial)
Cell Contents
|-------------------------|
| N |
| Chi-square contribution |
| N / Row Total |
| N / Col Total |
| N / Table Total |
|-------------------------|
Total Observations in Table: 697
| DMark$Historial
DMark$Edad | Bajo | Medio | Alto | Row Total |
-------------|-----------|-----------|-----------|-----------|
Joven | 123 | 35 | 7 | 165 |
| 86.311 | 4.595 | 47.178 | |
| 0.745 | 0.212 | 0.042 | 0.237 |
| 0.535 | 0.165 | 0.027 | |
| 0.176 | 0.050 | 0.010 | |
-------------|-----------|-----------|-----------|-----------|
Media | 69 | 127 | 167 | 363 |
| 21.531 | 2.493 | 8.805 | |
| 0.190 | 0.350 | 0.460 | 0.521 |
| 0.300 | 0.599 | 0.655 | |
| 0.099 | 0.182 | 0.240 | |
-------------|-----------|-----------|-----------|-----------|
Adulta | 38 | 50 | 81 | 169 |
| 5.661 | 0.038 | 5.944 | |
| 0.225 | 0.296 | 0.479 | 0.242 |
| 0.165 | 0.236 | 0.318 | |
| 0.055 | 0.072 | 0.116 | |
-------------|-----------|-----------|-----------|-----------|
Column Total | 230 | 212 | 255 | 697 |
| 0.330 | 0.304 | 0.366 | |
-------------|-----------|-----------|-----------|-----------|
La tabla de contingencia muestra la distribución de frecuencias del grupo de edad del cliente y el historial de volumen de compras anteriores. Cada fila representa un grupo de edad diferente y cada columna representa un grupo diferente del historial de volumen de compras anteriores. Los números de las celdas representan la frecuencia de clientes de cada grupo de edad que entran en cada clase de historial de volumen de compra anterior. Esta información podría ser útil para comprender el comportamiento de compra de los clientes de diferentes grupos de edad y dirigir las campañas de marketing a clientes con patrones de compra específicos.
Para poder estudiar una posible asociación entre las variables en estudio es necesario obtener la distribución condicional del historial de compra dado el grupo etario.
tabla2=prop.table(tabla1,margin=1)
tabla2
Bajo Medio Alto
Joven 0.74545455 0.21212121 0.04242424
Media 0.19008264 0.34986226 0.46005510
Adulta 0.22485207 0.29585799 0.47928994
A partir de esta distribución, podemos utilizar una gráfica de barras componentes para visualizar la información obtenida:
# Barras Componentes
par(mar=c(5.1, 4.1, 4.1, 8.1), xpd=TRUE) #Adicionar espacio extra
barplot(t(tabla2),col=2:4,
xlab="Grupo Etario",
ylab="Proporción de Clientes",
main="Distribución del historial de compra según grupo etario")
legend("topright", inset=c(-0.27,0),legend=levels(DMark$Historial),col=2:4,
pch=15,title="Historial de Compra")#Usando ggplot2
ggplot(data = na.omit(DMark), aes(x = Edad, y = ..count.., fill = Historial)) +
geom_bar(position = "fill") +
labs(y = "% de clientes", title = "Distribución del historial de compra según grupo etario") +
theme_bw() +
theme(legend.position = "bottom")Otra gráfica interesante que permite estudiar la asociación y al mismo tiempo presentar la distribución marginal de la variable condicional es la gráfica de mosaico:
library(vcd)
mosaicplot(~ Edad+Historial, data = DMark, color = 2:4,
main="Distribución del historial de compra según grupo etario")Si bien es posible sospechar que existe asociación entre las variables estudiadas, es recomendable complementar el análisis con una medida estadística que cuantifique el grado de asociación entre las variables (y como estudiaremos más adelante realizar un prueba estadística de independencia \(\chi2\)).
#Coeficiente Tau-b de Kendall
library(DescTools)
KendallTauB(tabla1)[1] 0.3546042
- Presente una tabla de distribución de frecuencias para el número de hijos. Construya una gráfica adecuada.
# Representación de Datos Cuantitativos Discretos
# Tabla de Frecuencias
ni<-table(DMark$Hijos)
fi<-prop.table(table(DMark$Hijos))
pi<-prop.table(table(DMark$Hijos))*100
hijos.tabla<-t(rbind(ni,fi,pi))
hijos.tabla ni fi pi
0 462 0.462 46.2
1 267 0.267 26.7
2 146 0.146 14.6
3 125 0.125 12.5
# Visualización de la Distribución de la Variable
# ------------------------------------------------
#Gráfico de líneas verticales
plot(pi, type="h", lwd=2,
xlab="Número de hijos",
ylab="Porcentaje de clientes",
main="Distribución del número de hijos por cliente")
points(x =as.numeric(row.names(pi)),
y =as.numeric(pi),
pch=19,cex=1.5)- Presente la tabla de distribución de frecuencias para el gasto y represente visualmente la distribución para las frecuencias acumuladas y sin acumular. Interprete sus resultados.
# Representación de Datos Cuantitativos Continuos
#------------------------------------------------------------------
# Tabla de Frecuencias (usando la regla de Sturges)
library(DescTools)
Freq(DMark$Monto, breaks = nclass.Sturges(DMark$Monto), right = FALSE) level freq perc cumfreq cumperc
1 [31.8,600) 322 32.2% 322 32.2%
2 [600,1.16e+03) 255 25.5% 577 57.7%
3 [1.16e+03,1.72e+03) 186 18.6% 763 76.3%
4 [1.72e+03,2.28e+03) 101 10.1% 864 86.4%
5 [2.28e+03,2.85e+03) 74 7.4% 938 93.8%
6 [2.85e+03,3.41e+03) 34 3.4% 972 97.2%
7 [3.41e+03,3.97e+03) 14 1.4% 986 98.6%
8 [3.97e+03,4.53e+03) 4 0.4% 990 99.0%
9 [4.53e+03,5.09e+03) 3 0.3% 993 99.3%
10 [5.09e+03,5.66e+03) 4 0.4% 997 99.7%
11 [5.66e+03,6.22e+03] 3 0.3% 1'000 100.0%
# Visualización de la Distribución de la Variable
# ------------------------------------------------
# Histograma y polígono de frecuencia
h1<-hist(DMark$Monto,breaks = "Sturges",
xlab="Monto",
ylab="Número de clientes", main = "Histograma var. Monto")
polygon.freq(h1,frequency=1,col="red")# Polígono de Frecuencias (solo)
h1<-hist(DMark$Monto,border=FALSE,col = "white")
polygon.freq(h1,frequency=1,col="red")# Usando ggplot2
ggplot(data=DMark, aes(Monto)) +
geom_histogram(aes(y =..count..),
#col="blue",
fill="black",
alpha = .75) +
geom_density(col=2) +
labs(title="Monto de Crédito") +
labs(x="Monto", y="# de clientes")+
xlim(c(0, 6300)) #Histograma y Densidad
hist(DMark$Monto,prob=TRUE)
lines(density(DMark$Monto))#Gráfico de Densidad
plot(density(DMark$Monto))# Usando ggplot2
ggplot(data = DMark, aes(x = Monto),fill = Monto) +
geom_density(color="darkblue", fill="lightblue") +
geom_rug() +
theme_bw()#Boxplots
boxplot(DMark$Monto)# Usando ggplot2
ggplot(data = DMark, aes(y = Monto)) +
geom_boxplot(fill="lightblue")+
theme_bw()#Ojiva
h<-graph.freq(DMark$Monto,plot=FALSE)
points<-ogive.freq(h,col="red",frame=FALSE)print(points) x RCF
1 30 0.000
2 593 0.322
3 1156 0.574
4 1719 0.761
5 2282 0.864
6 2845 0.938
7 3408 0.972
8 3971 0.986
9 4534 0.990
10 5097 0.993
11 5660 0.997
12 6223 1.000
13 6786 1.000
- Realice un análisis descriptivo completo para el gasto (tendencia, variabilidad y asimetría).
# Análisis descriptivo
# Resumen básico
summary(DMark) Edad Genero Vivienda Ecivil
Joven :287 Length:1000 Length:1000 Length:1000
Media :508 Class :character Class :character Class :character
Adulta:205 Mode :character Mode :character Mode :character
Ubicacion Salario Hijos Historial
Length:1000 Min. : 10100 Min. :0.000 Bajo :230
Class :character 1st Qu.: 29975 1st Qu.:0.000 Medio:212
Mode :character Median : 53700 Median :1.000 Alto :255
Mean : 56104 Mean :0.934 NA's :303
3rd Qu.: 77025 3rd Qu.:2.000
Max. :168800 Max. :3.000
Catalogos Monto
Min. : 6.00 Min. : 38.0
1st Qu.: 6.00 1st Qu.: 488.2
Median :12.00 Median : 962.0
Mean :14.68 Mean :1216.8
3rd Qu.:18.00 3rd Qu.:1688.5
Max. :24.00 Max. :6217.0
summary(DMark$Monto) Min. 1st Qu. Median Mean 3rd Qu. Max.
38.0 488.2 962.0 1216.8 1688.5 6217.0
# Definir funciones con medidas estadísticas
# Función para calcular CV
CV <- function(x){
(sd(x)/mean(x))*100
}
# Función para calcular asimetria (Pearson)
A3 <- function(x){
3*(mean(x)-median(x))/sd(x)
}
# Función para calcular el rango
rango <- function(x){
diff(range(x))
}
# Función para calcular el rango intercuartílico
RIC <- function(x){
quantile(x,probs = 0.75,type = 6)-quantile(x,probs = 0.25,type = 6)
}
me<-mean(DMark$Monto)
med<-median(DMark$Monto)
q1<-quantile(x = DMark$Monto,probs = 0.25,type = 6)
q3<-quantile(x = DMark$Monto,probs = 0.75,type = 6)
r<-rango(DMark$Monto)
ric<-RIC(DMark$Monto)
s<-sd(DMark$Monto)
cv<-CV(DMark$Monto)
as3<-A3(DMark$Monto)
resumen<-as.matrix(rbind(me,med,q1,q3,r,ric,s,cv,as3))
colnames(resumen)<-c("Valor")
resumen Valor
me 1216.770000
med 962.000000
q1 486.750000
q3 1689.500000
r 6179.000000
ric 1202.750000
s 961.068613
cv 78.985232
as3 0.795271
# Usando tidyverse
library(tidyverse)
DMark %>% summarise(Media = mean(Monto),
Mediana = median(Monto),
Q1 = quantile(Monto,probs = 0.25),
Q3 = quantile(Monto,probs = 0.75),
Min = min(Monto),
Max = max(Monto),
Rango = rango(Monto),
RIC = RIC(Monto),
S = sd(Monto),
CV = CV(Monto),
Asimetria = A3(Monto)
) Media Mediana Q1 Q3 Min Max Rango RIC S CV
1 1216.77 962 488.25 1688.5 38 6217 6179 1202.75 961.0686 78.98523
Asimetria
1 0.795271
# Funciones de resumen de datos disponibles en otras librerías
Hmisc::describe(DMark$Monto)DMark$Monto
n missing distinct Info Mean Gmd .05 .10
1000 0 852 1 1217 1014 187.9 242.9
.25 .50 .75 .90 .95
488.2 962.0 1688.5 2551.4 3052.5
lowest : 38 43 47 62 65, highest: 5503 5564 5830 5878 6217
library(psych)
psych::describe(DMark$Monto) vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 1000 1216.77 961.07 962 1085.41 827.29 38 6217 6179 1.46 2.94
se
X1 30.39
library(fBasics)
basicStats(DMark$Monto) X..DMark.Monto
nobs 1.000000e+03
NAs 0.000000e+00
Minimum 3.800000e+01
Maximum 6.217000e+03
1. Quartile 4.882500e+02
3. Quartile 1.688500e+03
Mean 1.216770e+03
Median 9.620000e+02
Sum 1.216770e+06
SE Mean 3.039166e+01
LCL Mean 1.157131e+03
UCL Mean 1.276409e+03
Variance 9.236529e+05
Stdev 9.610686e+02
Skewness 1.464872e+00
Kurtosis 2.941372e+00
skewness(DMark$Monto)[1] 1.464872
attr(,"method")
[1] "moment"
kurtosis(DMark$Monto)[1] 2.941372
attr(,"method")
[1] "excess"
Para la variable gasto, el valor de curtosis es de 2,941372. Se trata de un valor positivo muy alto, que indica que la distribución del gasto tiene mayor apuntalamiento y colas gruesas en comparación con la distribución normal. Esto significa que hay muchos valores atípicos de gasto elevado en los datos, que pueden sesgar la media y la desviación típica. Es importante tener esto en cuenta a la hora de interpretar los resultados de cualquier análisis que utilice el gasto como variable.
Para la variable gasto, el valor de asimetría es 1.464872, que es positivo, lo que indica que la distribución está sesgada a la derecha. Esto no es inusual en un contexto empresarial, ya que a menudo ocurre que unos pocos clientes que gastan mucho representan una gran proporción del gasto total. En este caso, es importante identificar y dirigirse a estos clientes que gastan mucho en campañas de marketing o programas de fidelización, ya que pueden tener un impacto significativo en los ingresos generales y la rentabilidad de la empresa.
- Realice una análisis descriptivo comparativo completo para el gasto por estado civil.
# Análisis descriptivo comparativo
#Usando funciones apply
me<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=mean)
med<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=median)
q1<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=quantile,probs = 0.25,type = 6)
q3<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=quantile,probs = 0.75,type = 6)
r<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=rango)
ric<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=RIC)
s<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=sd)
cv<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=CV)
as3<-tapply(X = DMark$Monto,INDEX = DMark$Ecivil,FUN=A3)
resumen<-as.matrix(rbind(me,med,q1,q3,r,ric,s,cv,as3))
resumen Casado Soltero
me 1672.0697211 757.8132530
med 1515.0000000 576.0000000
q1 862.0000000 321.7500000
q3 2249.7500000 1014.2500000
r 6124.0000000 4144.0000000
ric 1387.7500000 692.5000000
s 1037.6808575 592.2007919
cv 62.0596644 78.1460062
as3 0.4540983 0.9210386
#Usando tidyverse
DMark %>%
group_by(Ecivil) %>%
summarise(Media = mean(Monto),
Mediana = median(Monto),
Q1 = quantile(Monto,probs = 0.25),
Q3 = quantile(Monto,probs = 0.75),
Min = min(Monto),
Max = max(Monto),
Rango = rango(Monto),
RIC = RIC(Monto),
S = sd(Monto),
CV = CV(Monto),
Asimetria = A3(Monto)
)# A tibble: 2 × 12
Ecivil Media Mediana Q1 Q3 Min Max Rango RIC S CV Asimetria
<chr> <dbl> <dbl> <dbl> <dbl> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
1 Casado 1672. 1515 865. 2246 93 6217 6124 1388. 1038. 62.1 0.454
2 Solte… 758. 576 322. 1011. 38 4182 4144 692. 592. 78.1 0.921
# Usando librerías
psych::describeBy(x = DMark$Monto, group = DMark$Ecivil)
Descriptive statistics by group
group: Casado
vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 502 1672.07 1037.68 1515 1570.4 1008.91 93 6217 6124 1.13 1.93
se
X1 46.31
------------------------------------------------------------
group: Soltero
vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 498 757.81 592.2 576 672.3 471.47 38 4182 4144 1.64 3.82
se
X1 26.54
- Construya un diagrama de cajas para el gasto por estado civil del cliente. Realice un análisis comparativo.
# Análisis comparativo usando visualización de datos
# ---------------------------------------------------
boxplot(DMark$Monto ~ DMark$Ecivil,
xlab="Estado Civil",ylab="Gasto",
main="Comparacion del gasto por estado civil")# Usando ggplot2
ggplot(data = DMark, aes(x = Ecivil, y = Monto, color = Ecivil)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(alpha = 0.3, width = 0.15) +
theme_bw()ggplot(data = DMark, aes(x = Monto, fill = Ecivil)) +
geom_density(alpha = 0.5) +
geom_rug(aes(color = Ecivil), alpha = 0.5) +
theme_bw()- Presente un diagrama de dispersión entre el gasto del cliente y el sueldo anual. Calcule la correlación entre ambas variables.
plot(DMark$Salario,DMark$Monto)cor(DMark$Salario,DMark$Monto)[1] 0.6995957
# Matriz de Diagramas de dispersión
pairs(~Salario + Monto + Hijos + Catalogos,data=DMark)cor(DMark[,c(6,7,9,10)]) Salario Hijos Catalogos Monto
Salario 1.00000000 0.04966316 0.1835509 0.6995957
Hijos 0.04966316 1.00000000 -0.1134554 -0.2223082
Catalogos 0.18355086 -0.11345543 1.0000000 0.4726499
Monto 0.69959571 -0.22230817 0.4726499 1.0000000
corr.test(DMark[,c(6,7,9,10)])Call:corr.test(x = DMark[, c(6, 7, 9, 10)])
Correlation matrix
Salario Hijos Catalogos Monto
Salario 1.00 0.05 0.18 0.70
Hijos 0.05 1.00 -0.11 -0.22
Catalogos 0.18 -0.11 1.00 0.47
Monto 0.70 -0.22 0.47 1.00
Sample Size
[1] 1000
Probability values (Entries above the diagonal are adjusted for multiple tests.)
Salario Hijos Catalogos Monto
Salario 0.00 0.12 0 0
Hijos 0.12 0.00 0 0
Catalogos 0.00 0.00 0 0
Monto 0.00 0.00 0 0
To see confidence intervals of the correlations, print with the short=FALSE option
cor.plot(cor(DMark[,c(6,7,9,10)]))Preguntas de Discusión
Considerando el análisis descriptivo realizado:
- Si tuvieramos que determinar cuál es la principal variable asociadda con el historial del volumen de compra anterior, ¿qué pasos se pueden seguir?
- Si tuviera que elegir una medida de tendencia central para representar el gasto que realiza un cliente. ¿Cuál elegiría? Justifique su respuesta e interprete el valor elegido.
En general:
- ¿Cómo se empieza a explorar un conjunto de datos?
- ¿Qué pasos se pueden seguir para analizar las posibles relaciones entre las características de interés?