Caso: Marketing Directo

Un vendedor 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. Para el estudio se presenta muestras independientes (por edades) de los clientes con sus características y variables. El conjunto de datos incluye n = 1000 clientes y las variables son:

  • Edad: Edad del cliente (Adulta/Media/Joven).

  • Género: Género del cliente (Masculino/Femenino).

  • Vivienda: Si el cliente es dueño de su casa (Propia/Alquilada).

  • Ecivil: Estado civil (Soltero/Casado).

  • Ubicación: 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.

  • Catálogos: Número de catálogos enviados.

  • Monto: Gasto en dólares

Lectura de los Datos

DMark <- read.csv("MarketingDirecto (1).csv", stringsAsFactors=TRUE)
head(DMark)
DMark |> View()

Considerando solo a los clientes de edad joven y las variables correspondientes:

Filtrando los Datos en otra Variable

  • Para llamar un de los tres valores de una variable
EJoven <- DMark[DMark$Edad == "Joven",] 
head(EJoven)
View(EJoven)

a) Halle el vector de medias

colMeans(EJoven[,c(6,7,9,10)]) 
##      Salario        Hijos    Catalogos        Monto 
## 27715.679443     1.055749    13.024390   558.623693

Solo seleccionamos esas columnas porque son variables cuantitativas, de las cuales obtenemos sus medias de cadaa una de esas columnas.

b) Halle el vector de medias según la Ubicación del negocio

Ulejos <- EJoven[EJoven$Ubicacion == "Lejos",] 
colMeans(Ulejos[,c(6,7,9,10)])
##      Salario        Hijos    Catalogos        Monto 
## 26487.777778     1.055556    14.200000   688.988889

Aca se esta extrayendo del dataframe EdadJoven, que contine tambien a la varaible ubicacion , pero de esa variable queremos la caracteristica lejos.

UCerca <- EJoven[EJoven$Ubicacion == "Cerca",] 
colMeans(UCerca[,c(6,7,9,10)])
##      Salario        Hijos    Catalogos        Monto 
## 28276.649746     1.055838    12.487310   499.065990

Aca se esta extrayendo del dataframe EdadMedia, que contine tambien a la varaible ubicacion , pero de esa variable queremos las que contengan la caracteristica cerca.

c) Estandarice las variables

EstEjoven<-scale(EJoven[,c(6,7,9,10)])
head(EstEjoven)
##       Salario       Hijos  Catalogos      Monto
## 3  -0.8512697 -0.99948181  0.7689439 -0.5834190
## 6   0.1607437 -0.99948181 -1.0855679 -0.1413401
## 11  0.9571802 -0.05277792 -0.1583120  0.8183486
## 21 -0.8033637  0.89392597 -1.0855679 -0.8100122
## 22  1.3224632 -0.99948181 -0.1583120  0.5961984
## 24  0.9452037 -0.05277792 -0.1583120  0.5539899

El objetivo de estandarizar las variables en un análisis multivariante es principalmente homogeneizar la escala de las variables para que cada una contribuya equitativamente al análisis. Esto es importante porque en muchos conjuntos de datos, las variables pueden estar en diferentes escalas o unidades de medida, y si no se estandarizan, las variables con mayor varianza o en escalas más grandes podrían dominar el análisis y sesgar los resultados

d) Halle la matriz de varianza- covarianza, su traza y determinante

Matriz de covarianza

options(scipen=999)
S<-round(cov(EJoven[,c(6,7,9,10)]),3)
S
##                 Salario    Hijos Catalogos       Monto
## Salario   278869438.610 -962.765  2738.427 5072347.529
## Hijos          -962.765    1.116    -0.834    -112.108
## Catalogos      2738.427   -0.834    41.870    1197.093
## Monto       5072347.529 -112.108  1197.093  202631.375

La diagonal principal de la matriz muestra las varianzas de cada variable, mientras que los elementos fuera de la diagonal principal muestran las covarianzas entre las variables. Las covarianzas indican la relación lineal entre las variables; si son positivas, indica una relación positiva entre las variables, mientras que si son negativas, indica una relación negativa.

La covarianza positiva entre Salario y Monto indica que a medida que el salario aumenta, es probable que el monto también aumente. Por otro lado, una covarianza negativa entre Hijos y Monto indica que a medida que el número de hijos aumenta, es probable que el monto disminuya.

Traza

trS<-sum(diag(S))
trS
## [1] 279072113

La traza de la matriz de covarianza S, que es 279072113, indica la suma de las varianzas de las variables Salario, Hijos, Catalogos y Monto en el conjunto de datos EJoven. Cuanto mayor sea la traza, mayor será la dispersión de los datos en el conjunto de variables consideradas

Determinante

det(S)
## [1] 949145735501744

El valor del determinante es bastante grande (949145735501744), lo que sugiere que las variables Salario, Hijos, Catalogos y Monto tienen una relación considerablemente independiente entre sí en el conjunto de datos EJoven

e) Halle los autovalores y autovectores para la matriz hallada en la parte d

Autovalores

eigenvalues <- eigen(S)
eigenvalues$values
## [1] 278961735.929004    110346.096341        29.914929         1.030726
sum(eigenvalues$values)  
## [1] 279072113
prod(eigenvalues$values) 
## [1] 949145735534725

Autovectores

autovectors <- eigenvalues$vectors
autovectors
##                 [,1]          [,2]          [,3]           [,4]
## [1,]  0.999834490776 -0.0181922720 -0.0001792236 -0.00001312221
## [2,] -0.000003457984 -0.0008571041 -0.0055056749  0.99998447633
## [3,]  0.000009892945  0.0103986244 -0.9999308263 -0.00549646665
## [4,]  0.018193156521  0.9997800634  0.0103922113  0.00091420881

traza

sum(eigenvalues$values) 
## [1] 279072113

Determinante

prod(eigenvalues$values)
## [1] 949145735534725

f) Realice los gráficos de matriz de dispersión, correlación, caras de Chernoff y de estrellas y brinde la interpretación necesaria.

Gráfico de dispersión

pairs(EJoven[,c(6,7,9,10)])

En este grafico podemos apreciar que cada una de las variables que estan relacionadas por pares, en un diagrama de dispersion, como por ejemplo las variables Salario y Monto.

Gráfico de Correlación

library(PerformanceAnalytics)
## Warning: package 'PerformanceAnalytics' was built under R version 4.2.3
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
library(corrplot) 
## corrplot 0.92 loaded
corr<-cor(EJoven[,c(6,7,9,10)]) 
corrplot(corr,method="circle")

  • Círculos grandes y de color intenso: Indican una correlación fuerte. Si el color es positivo (por ejemplo, azul), significa que hay una correlación positiva; si es negativo (por ejemplo, rojo), la correlación es negativa.

  • Círculos pequeños y de color claro: Sugieren una correlación débil o inexistente entre las variables.

Mapa de Calor

library(psych)
## Warning: package 'psych' was built under R version 4.2.3
cor.plot(corr,  main="Mapa de Calor", diag=TRUE,  
         show.legend = TRUE) 

Caras de Chernoff

library(aplpack)
## Warning: package 'aplpack' was built under R version 4.2.2
faces(EJoven[1:20,c(6,7,9,10)])
## effect of variables:
##  modified item       Var        
##  "height of face   " "Salario"  
##  "width of face    " "Hijos"    
##  "structure of face" "Catalogos"
##  "height of mouth  " "Monto"    
##  "width of mouth   " "Salario"  
##  "smiling          " "Hijos"    
##  "height of eyes   " "Catalogos"
##  "width of eyes    " "Monto"    
##  "height of hair   " "Salario"  
##  "width of hair   "  "Hijos"    
##  "style of hair   "  "Catalogos"
##  "height of nose  "  "Monto"    
##  "width of nose   "  "Salario"  
##  "width of ear    "  "Hijos"    
##  "height of ear   "  "Catalogos"
faces(EJoven[1:20,c(6,7,9,10)], face.type = 1, main = "Caras de Chernoff", 
      print.info = 0, nrow.plot = 4, ncol.plot = 5)

Como podemos ver la mayoria de las caras son pequeñas y anaranjadas, que puede significar un salario ,monto, numero de hijos y catalogos minimos, mientras que hay una cara que es grande y de un amarillo claro, por lo que puede significar que tiene un salario y monto alto como un mayor numero de hijos y catalogos.

Al observar las caras, podrías identificar patrones o tendencias, como si las caras con bocas anchas tienden a tener también narices grandes, lo que podría sugerir una relación entre el salario y el monto.

Gráfico de Estrellas

stars(EJoven[1:20,c(6,7,9,10)], key.loc=c(-2,12), lwd=1)

Como podemos apreciar en los graficos de estrella, la observacion 77 es la mas grande y tiene las 4 variables, con la variable hijos y salario siendo las mas altas mientras que las variables catalogos y monto son las mas bajas. Aparte podemos apreciar que muy pocas de las observaciones tienes las cuatro variables, siendo generalmente que contienen 2 variables.

Al observar los gráficos de estrellas, puedes identificar patrones o anomalías entre los individuos, como aquellos con altos salarios que también tienen un gran número de catálogos enviados, lo que podría sugerir una relación entre estas variables.