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)
##     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
DMark |> View()

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

Filtrando los Datos en otra Variable

  • Para llamar un de los tres valores de una variable
EMedia <- DMark[DMark$Edad == "Media",] 
head(EMedia)
##    Edad    Genero  Vivienda  Ecivil Ubicacion Salario Hijos Historial Catalogos
## 2 Media Masculino Alquilada Soltero     Cerca   63600     0      Alto         6
## 4 Media Masculino    Propia  Casado     Cerca   85600     1      Alto        18
## 5 Media  Femenino    Propia Soltero     Cerca   68400     0      Alto        12
## 7 Media  Femenino Alquilada Soltero     Cerca   48100     0     Medio        12
## 8 Media Masculino    Propia Soltero     Cerca   68400     0      Alto        18
## 9 Media  Femenino    Propia  Casado     Cerca   51900     3      Bajo         6
##   Monto
## 2  1318
## 4  2436
## 5  1304
## 7   782
## 8  1155
## 9   158
View(EMedia)

a) Halle el vector de medias

colMeans(EMedia[,c(6,7,9,10)]) 
##      Salario        Hijos    Catalogos        Monto 
## 72036.417323     1.187008    15.425197  1501.690945

Solo seleccionamos esas columnas porque son variables cuantitativas

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

Ulejos <- EMedia[EMedia$Ubicacion == "Lejos",] 

colMeans(Ulejos[,c(6,7,9,10)])
##      Salario        Hijos    Catalogos        Monto 
## 72597.101449     1.217391    17.130435  2081.311594

Aca se esta extrayendo del dataframe, EdadMedia, que contine tamb a la varaible ubicacion , pero de esa variable quermos la caracteristca lejos.

UCerca <- EMedia[EMedia$Ubicacion == "Cerca",] 
colMeans(UCerca[,c(6,7,9,10)])
##      Salario        Hijos    Catalogos        Monto 
## 71827.297297     1.175676    14.789189  1285.508108

Aca se esta extrayendo del dataframe,EdadMedia, que contine tamb a la varaible ubicacion , pero de esa variable quermos la caracteristca cerca

c) Estandarice las variables

EstEMedia<-scale(EMedia[,c(6,7,9,10)])
head(EstEMedia)
##      Salario      Hijos  Catalogos      Monto
## 2 -0.3408239 -1.1202426 -1.4410634 -0.1914897
## 4  0.5479569 -0.1764893  0.3936740  0.9739761
## 5 -0.1469081 -1.1202426 -0.5236947 -0.2060841
## 7 -0.9670103 -1.1202426 -0.5236947 -0.7502461
## 8 -0.1469081 -1.1202426  0.3936740 -0.3614100
## 9 -0.8134936  1.7110172 -1.4410634 -1.4007387

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(EMedia[,c(6,7,9,10)]),3)
S
##                 Salario    Hijos Catalogos        Monto
## Salario   612711590.295 2201.855 12377.976 12876323.309
## Hijos          2201.855    1.123    -0.819     -303.851
## Catalogos     12377.976   -0.819    42.777     2836.777
## Monto      12876323.309 -303.851  2836.777   920204.928

Traza

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

Determinante

det(S)
## [1] 11802219225088752

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

### Autovalores

eigenvalues <- eigen(S)
eigenvalues$values
## [1] 612982477.5374480    649328.3529891        32.3149754         0.9175874
sum(eigenvalues$values)  
## [1] 613631839
prod(eigenvalues$values) 
## [1] 11802219225760792

Autovectores

autovectors <- eigenvalues$vectors
autovectors
##                [,1]          [,2]           [,3]           [,4]
## [1,] 0.999778782836  0.0210328595 -0.00006290011  0.00001597509
## [2,] 0.000003580815  0.0005391671 -0.01673443789 -0.99985982411
## [3,] 0.000020285905 -0.0039671033 -0.99985213715  0.01673217008
## [4,] 0.021032949551 -0.9997707688  0.00395707814 -0.00060527255

traza

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

Determinante

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

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(EMedia[,c(6,7,9,10)])

Gráfico de Correlación

library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## 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(EMedia[,c(6,7,9,10)]) 
corrplot(corr,method="circle")

library(psych)
cor.plot(corr,  main="Mapa de Calor", diag=TRUE,  
         show.legend = TRUE) 

Caras de Chernoff

library(aplpack)
faces(EMedia[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(EMedia[1:20,c(6,7,9,10)], face.type = 1, main = "Caras de Chernoff", 
      print.info = 0, nrow.plot = 4, ncol.plot = 5)

Gráfico de Estrellas

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