EJERCICIO APLICADO A LA INVESTIGACIÓN DE MERCADOS

Caso aplicado para la materia de Investigación de mercados II.

Preguntas

  1. Importe un archivo .sav (SPSS) y visualice el data frame
  2. Realice al análisis multivariante de la normalidad, identifique los outliers y elimínelos/corríjalos (o manténgalos - justificando previamente)
  3. Impute los datos perdidos de las variables métricas
  4. Impute los datos perdidos de las variables categóricas
  5. Exporte el data frame “limpio” a un nuevo archivo de SPSS
  6. Obtenga los estadísticos descriptivos básicos unidimensionales para todas las variables

Solución ejercicio 1: Importar un archivo .sav (SPSS) y visualizar el data frame

Al data frame importado se le dará el nombre de “datos”.

library(foreign)
#importar archivo de SPSS
datos<- read.spss("C:/Users/LENOVO/Desktop/INV2/mermeladas.sav")
## re-encoding from UTF-8
datos<- as.data.frame(datos)
View(datos) #permite visualizar el data frame llamado "datos"
attach(datos) #atajo de variables

Solución ejercicio 2: Análisis multivariante de la normalidad

Para poder realizar análisis multivariado, es necesario que exista normalidad multivariante, por eso, es muy importante identificar si las variables métricas siguen o no dicha distribución normal multivariante. En caso de que se detecte outliers, el investigador tiene la tarea de corregirlos (si fuese un error de “dedo” en la base de datos), eliminarlos o mantenerlos en el data frame (si él considera que sí es necesario mantener los outliers en la muestra).

Las hipótesis estadísticas son las siguientes:
H0: Existe normalidad multivariante (no existen outliers multivariantes)
H1: No existe normalidad multivariante (existen outliers multivariantes)

Se trabaja con un nivel de confianza del 95%, lo que implica que alfa es igual al 5% (0,05). Para realizar el test se utilizará la librería “MVN”.

library(MVN)
## Warning: package 'MVN' was built under R version 3.6.3
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
## sROC 0.1-2 loaded
mvn(datos[,(5:7)],multivariateOutlierMethod = "quan") #las variables métricas están desde la columna 5 a la 7 en el data frame, 

## $multivariateNormality
##              Test        Statistic              p value Result
## 1 Mardia Skewness 123.687331260846 9.01873442434219e-22     NO
## 2 Mardia Kurtosis 8.35610841426556                    0     NO
## 3             MVN             <NA>                 <NA>     NO
## 
## $univariateNormality
##           Test           Variable Statistic   p value Normality
## 1 Shapiro-Wilk       precio          0.2546  <0.001      NO    
## 2 Shapiro-Wilk cantidad_consumida    0.4121  <0.001      NO    
## 3 Shapiro-Wilk    calificación       0.8682  0.0135      NO    
## 
## $Descriptives
##                     n      Mean   Std.Dev Median Min Max 25th 75th       Skew
## precio             19 43.289474 98.497224     21  18 450   20 22.0  3.6938224
## cantidad_consumida 19  4.736842  4.507304      4   2  23    3  4.5  3.4670521
## calificación       19  3.736842  1.240166      4   1   5    3  5.0 -0.5186968
##                      Kurtosis
## precio             12.3026941
## cantidad_consumida 11.2022415
## calificación       -0.9169999
datos<- datos[-c(6),]
datos<- datos[-c(13),]

Solución ejercicio 3: Imputar datos perdidos de las variables métricas

Para hacer análisis multivariante es necesario que no existan datos perdidos en el data frame, en caso de que hubiesen, es necesario imputarlos (sustitutirlos). Antes de imputar, es necesario aplicar las “pruebas de normalidad” univariantes, esto con el fin de detectar si una variable métricas sigue o no sigue una distribución normal. Las hipótesis estadísticas son:

H0: variable normal
H1: variable no normal

Se trabaja con 95% de confianza, por lo que alfa es 0,05. Aplique el siguiente comando, donde encontrará un resumen de la normalidad (es el mismo comando aplicado en el ejercicio 2) y de los estadísticos descriptivos:

mvn(datos[,(5:7)])
## $multivariateNormality
##              Test          Statistic           p value Result
## 1 Mardia Skewness   7.75652728893585 0.652605274111758    YES
## 2 Mardia Kurtosis -0.334621000868433 0.737911000919159    YES
## 3             MVN               <NA>              <NA>    YES
## 
## $univariateNormality
##           Test           Variable Statistic   p value Normality
## 1 Shapiro-Wilk       precio          0.9525    0.4969    YES   
## 2 Shapiro-Wilk cantidad_consumida    0.8780    0.0295    NO    
## 3 Shapiro-Wilk    calificación       0.8754    0.0268    NO    
## 
## $Descriptives
##                     n      Mean   Std.Dev Median Min Max 25th 75th        Skew
## precio             17 20.735294 1.3004524     21  18  23   20   22 -0.32956556
## cantidad_consumida 17  3.764706 0.9034249      4   2   5    3    4 -0.04471901
## calificación       17  3.705882 1.2631660      4   1   5    3    5 -0.52655413
##                      Kurtosis
## precio             -0.7056058
## cantidad_consumida -1.1383257
## calificación       -0.9575732

La variable “cantidad_consumida” y “calificacion” no es normal (su p value es menor a alfa) y el “precio” sí son normales (sus p values son mayores a alfa). > Variable normal: imputar con la media aritmética muestral
Variable no normal: imputar con la mediana muestral

Revisando los resultados del comando anterior (el comando donde se midió la normalidad), podemos ver lo siguiente:

Media aritmética del precio es= 20,74 Bs.
Media aritmética de la calificación de mermelada es= 3,71 puntos
Mediana de la cantidad consumida= 4 mermeladas

colSums(is.na(datos))
##                 id               sexo           estudios     promo_favorita 
##                  0                  1                  2                  1 
##             precio cantidad_consumida       calificación 
##                  1                  0                  1

Se aprecia que cada variable métrica, en este caso, tiene 1 dato perdido.

Para imputar los valores perdidos (NA`s) de las variables con distribución normal a través de su media aritmética se procede de la siguiente manera:

#Imputar con la media aritmética
datos$precio[is.na(datos$precio)]<- mean(na.omit(datos$precio))

Para imputar los valores perdidos (NA`s) en variables métricas con distribución no normal a través de su mediana, utilice el comando:

#Imputar con la mediana
datos$cantidad_consumida[is.na(datos$cantidad_consumida)]<- mean(na.omit(datos$cantidad_consumida))
datos$calificación[is.na(datos$calificación)]<- mean(na.omit(datos$calificación))

solucion del ejercicio 4: Imputar datos perdidos en las variables categóricas

colSums(is.na(datos))
##                 id               sexo           estudios     promo_favorita 
##                  0                  1                  2                  1 
##             precio cantidad_consumida       calificación 
##                  0                  0                  0

La variable “sexo” tiene 1 valor perdido, los “estudios” tiene 2 valores perdidos y la “promo_favorita” tiene 1 valor perdido .

summary(sexo)
##  femenino masculino      NA's 
##        12         8         1
summary(estudios)
##    bachiller   licenciado especialista         otro         NA's 
##            9            3            3            4            2
summary(promo_favorita)
##     viajes descuentos        2x1       NA's 
##         11          5          4          1

La moda del sexo es “femenino”; la moda de los estudios es “bachiller” y la moda de la promo_favorita es “viajes”. Por lo que se procederá a imputar los datos perdidos.

imputarmoda<- function(x) {imputarx <- unique(x) 
imputarx[which.max(tabulate(match(x, imputarx)))]} 

Ahora, imputar los datos perdidos en sus variables categóricas de la siguiente manera:

#Imputación de valores perdidos en variables categóricas
datos$sexo[is.na(datos$sexo)]<- imputarmoda(na.omit(datos$sexo))
datos$estudios[is.na(datos$estudios)]<- imputarmoda(na.omit(datos$estudios))
datos$promo_favorita[is.na(datos$promo_favorita)]<- imputarmoda(na.omit(datos$promo_favorita))

Finalizado el proceso de imputación, ejecute nuevamente el siguiente comando:

colSums(is.na(datos))
##                 id               sexo           estudios     promo_favorita 
##                  0                  0                  0                  0 
##             precio cantidad_consumida       calificación 
##                  0                  0                  0

Listo!! Ya no existen datos perdidos. ### Solución ejercicio 5: Exportar el “data frame limpio” en formato SPSS
La nueva base de datos (data frame) que hemos trabajado, es decir, la base de datos sin outliers ni valores perdidos, que ahora llamamos data frame “limpio”, es necesario exportarla en formato SPSS (.sav) para poder hacer análisis multivariantes en futuras oportunidades y tener un archivo con los resultados generados.

#Utilizamos la librería "haven"
library(haven)
## Warning: package 'haven' was built under R version 3.6.3
write_sav(datos, "C:/Users/LENOVO/Desktop/INV2/datos_limpios.sav" )

Solución ejercicio 6: Generación de estadísticas descriptivas univariantes

Puedes obtener todos los estadísticos descriptivos básicos utilizando el siguiente código:

summary(datos)
##        id               sexo            estudios     promo_favorita
##  Min.   : 1.00   femenino :11   bachiller   :11   viajes    :11    
##  1st Qu.: 6.00   masculino: 8   licenciado  : 2   descuentos: 4    
##  Median :11.00                  especialista: 3   2x1       : 4    
##  Mean   :11.11                  otro        : 3                    
##  3rd Qu.:16.50                                                     
##  Max.   :21.00                                                     
##      precio      cantidad_consumida  calificación  
##  Min.   :18.00   Min.   :2.000      Min.   :1.000  
##  1st Qu.:20.00   1st Qu.:3.000      1st Qu.:3.000  
##  Median :21.00   Median :4.000      Median :4.000  
##  Mean   :20.69   Mean   :3.737      Mean   :3.778  
##  3rd Qu.:21.50   3rd Qu.:4.000      3rd Qu.:5.000  
##  Max.   :23.00   Max.   :5.000      Max.   :5.000

Se muestra las frecuencias de las variables categóricas y en el caso de las variables métricas, un resumen de los estadísticos básicos. Se puede mostrar el precio minimo que podrian pagar es de 18 bs. y lo maximo que podrian pagar es de 23 bs., que en promedio los encuestados consumirian por lo menos 4 mermeladas y por lo tanto su calificacion promedio tambien de 4 puntos.