Análisis de datos con R. Una aplicación a la Investigación de Mercados
Madrid 2018
Mariano Méndez Suárez
Análisis de datos con R. Una aplicación a la Investigación de Mercados Técnicas descriptivas, bivariantes y multivariantes básicas 2.a Edición Corregida y ampliada
Primera edición: enero 2018
© ESIC EDITORIAL Avda. de Valdenigrales, s/n. 28223 Pozuelo de Alarcón (Madrid) Tel. 91 452 41 00 www.esic.edu/editorial © Mariano Méndez Suárez ISBN: 978-84-17129-36-1 Depósito Legal: M-128-2018 Cubierta: Gerardo Domínguez Fotocomposición y Fotomecánica: Nueva Maqueta Doña Mencía, 39 28011 Madrid Imprime: Gráficas Dehon La Morera, 23-25 28850 Torrejón de Ardoz (Madrid) Impreso en España Queda prohibida toda reproducción de la obra o partes de la misma por cualquier medio sin la preceptiva autorización previa.
Índice
PRÓLOGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cuestionario y datos empleados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sobre R y RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sobre la curva de aprendizaje de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaciones académicas y profesionales . . . . . . . . . . . . . . . . . . . . . . . . . Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11 11 12 12 13 14 14
Capítulo 1. Objetivos de la investigación y pasos iniciales . . . . . . . . . . . . .
15
1.1. Objetivos de la investigación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. Estructura del cuestionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1.1. Bloque 1: percepción sobre el supermercado . . . . . . . 1.1.1.2. Bloque 2: variables de clasificación . . . . . . . . . . . . . . . 1.2. Antes de empezar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4. Preparación de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5. Representación gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 18 18 21 22 25 26 35
Capítulo 2. Top Two Box y Net Promoter Score . . . . . . . . . . . . . . . . . . . . . . .
41
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Top Two Box (T2B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Net Promoter Score (NPS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43 43 57
Capítulo 3. Análisis bivariante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Cálculo de las medias de las respuestas . . . . . . . . . . . . . . . . . . . . . . 3.3. Comparación similitud de las respuestas por grupos . . . . . . . . . . . .
67 68 76
8
Índice
3.3.1. ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Análisis Tukey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Chi cuadrado, x2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Boxplot (gráfico de caja) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5. Ejemplo comparación similitud de respuestas . . . . . . . . . . . . 3.4. Correlación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76 78 80 83 84 88
Capítulo 4. Análisis factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Análisis factorial, análisis de componentes principales . . . . . . . . . . 4.2.1. Análisis factorial y correlación . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Realización del análisis factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Análisis factorial rotado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. Representación gráfica del análisis factorial . . . . . . . . . . . . . . . . . . . 4.6. Análisis individual de cada centro . . . . . . . . . . . . . . . . . . . . . . . . . . .
95 95 95 97 100 105 108
Capítulo 5. Análisis cluster o de conglomerado . . . . . . . . . . . . . . . . . . . . . .
119
5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Análisis cluster o de conglomerado . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1. Cluster jerárquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2. K means cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Análisis exploratorio, cluster jerárquico . . . . . . . . . . . . . . . . . . . . . . . 5.4. Análisis con K means cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5. Perfil en base a las medias de los resultados . . . . . . . . . . . . . . . . . . 5.6. Análisis gráfico de los resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7. Mapa factorial con los grupos de cada cluster . . . . . . . . . . . . . . . . .
121 121 122 122 122 124 125 130 135
Capítulo 6. Análisis de regresión lineal múltiple . . . . . . . . . . . . . . . . . . . . .
139
6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Regresión lineal múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Satisfacción global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1. Análisis exploratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2. Análisis por pasos usando el criterio de Akaike . . . . . . . . . . . 6.3.3. Importancia relativa de cada variable . . . . . . . . . . . . . . . . . . . 6.3.4. Regresión con los factores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. Importe medio de la compra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1. Análisis exploratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.2. Importancia relativa de cada variable . . . . . . . . . . . . . . . . . . .
141 142 142 142 145 148 150 153 153 155
BIBLIOGRAFÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
157
A Pilar
Prólogo
Introducción
D
espués de varios años impartiendo la asignatura de Investigación de Mercados en ESIC Business & Marketing School utilizando el software SPSS1 surgió la idea de traspasar todo el curso al software R, la estructura del curso estaba creada y la dinámica de clase también. Este proceso ha sido enriquecedor a nivel personal y académico, dado que planteaba nuevos retos y nuevas formas de afrontar las técnicas más comunes usadas en Investigación de Mercados, las cuales han conducido a nuevas formas de exponer los resultados y que permiten centrar un mayor esfuerzo en el análisis y menor en la herramienta, dada la capacidad de automatización de R. Este libro no es un libro de investigación de mercados al uso, dado que en la mayor parte de los casos solo ilustra el cómo aplicar las técnicas y no profundiza en sus fundamentos, para lo cual recomendamos las excelentes aportaciones de Grande & Abascal (2014) o Malhotra (2004). Tampoco es un libro específicamente creado para aprender R desde el principio, para lo cual recomendamos los numerosos recursos, tanto documentales como audiovisuales, que se pueden encontrar en Internet; no obstante, se ha intentado que el código que aparece en el libro se pueda entender de la forma más clara posible, aun a costa de ser redundante en algunos casos.
1
IBM Corp. IBM SPSS Statistics for Windows, Armonk, NY: IBM Corp.
12
Análisis de datos con R. Una aplicación a la Investigación de Mercados
Cuestionario y datos empleados La aplicación de las técnicas descritas en el texto se apoya en los resultados de un cuestionario diseñado y aplicado por el profesor Juan Antonio Márquez en su actividad profesional y que tan generosamente compartió y tiene como objetivo la medición de la percepción de calidad en grandes supermercados. Durante varios cursos, nuestros alumnos (a los que queremos agradecer su contribución) que cursaban la asignatura de Investigación de Mercados en ESIC Business & Marketing School, fueron los encargados de realizar la encuesta en los supermercados de tres de las grandes cadenas que operan en España. Este trabajo permitió disponer de una base de datos de 2.040 registros: Supermercado Carrefour Dia Mercadona ——————— Total
Encuestas 617 719 704 ———— 2.040
El hecho de que los alumnos realizaran la encuesta in situ tenía varios objetivos: El primero, que pudieran experimentar y conocer cómo se realiza el trabajo de campo. Por otro lado, que se familiarizaran con las preguntas del cuestionario y lo conocieran en profundidad, para que posteriormente pudieran realizar un mejor análisis. Y por último, que se sintieran partícipes de poder contribuir a crear una base de datos, con una muestra suficientemente grande, que se pudiera usar en clase para comprender las diversas técnicas cuantitativas usadas en Investigación de Mercados.
Sobre R y RStudio El programa R2 contiene por sí mismo todas capacidades de análisis estadístico y la mayoría de los métodos estadísticos más comunes, sin embargo es un entorno de trabajo poco amigable; por consiguiente, recomendamos instalar primero R y una vez instalado instalar el programa RStudio,3 que proporciona tanto un entorno de trabajo más amigable como algunos menús y capacidades y mejoras visuales que facilitan mucho el uso de R. Estos dos programas tienen una ventaja fundamental, tanto para el usuario particular como para las empresas o universidades, y es la completa gratuidad del software, 2 3
https://cran.r-project.org/ https://www.rstudio.com/
Prólogo
13
que es libre y de código abierto. Este hecho es clave especialmente en entornos universitarios (donde cada vez su penetración es mayor), dado que es un software que, aparte del ahorro económico, permite evitar la dependencia por parte del alumnado de lugares físicos, como salas de ordenadores, para poder realizar sus tareas y prácticas académicas. Aparte de la gratuidad, algunas de las principales ventajas de R son: • Es una herramienta de análisis estadístico permanentemente actualizada gracias a la contribución de una comunidad de desarrolladores a nivel mundial, mediante la incorporación de las últimas técnicas estadísticas a través de la creación de librerías, o pequeños programas que se pueden instalar dentro del entorno. • Es un software de automatización más que de programación; este hecho es clave para el avance científico dado que permite obtener resultados reproducibles y a nivel de eficacia en tiempos, puesto que una vez escrito el código se puede reutilizar. Esta capacidad de automatización permite optimizar el trabajo ya que no es necesario guardar los resultados de los análisis cada vez que los realizamos y simplemente los repetimos. • Está disponible para los tres principales sistemas operativos: Windows, (Mac) OS X y Linux, siendo totalmente compatible el intercambio de archivos. • Tiene el soporte de una gran comunidad científica a nivel internacional que comparte de una forma generosa y altruista a través de manuales, vídeos, foros, blogs, Twitter, entre otros medios, su conocimiento para aquellos que están interesados. • A un nivel más avanzado, es una especie de piedra Rosetta que traduce la formulación matemática de los artículos publicados con mayor impacto al lenguaje de la programación y que permite comprender desarrollos matemáticos complejos estudiando su código y recrearlos mediante métodos numéricos. Este hecho significa una ayuda fundamental en estudios de posgrado, especialmente los de doctorado.
Sobre la curva de aprendizaje de R El entorno R al principio puede resultar intimidante y se suele tener cierta reticencia a entrar, especialmente cuando estamos habituados y tenemos acceso a otros programas estadísticos. Es cierto, que la curva de aprendizaje es especialmente pronunciada cuando empezamos y podemos llegar a preguntarnos: ¿Por que estoy usando R?, pero pasado un tiempo el esfuerzo realizado recibe su recompensa y es cuando surge la pregunta: ¿Por qué habré estado tanto tiempo usando otras herramientas?...
14
Análisis de datos con R. Una aplicación a la Investigación de Mercados
Aplicaciones académicas y profesionales Consideramos que el manual tiene aplicación académica en cursos de grado o posgrado en asignaturas que apliquen técnicas cuantitativas a la Investigación de Mercados y donde los docentes responsables complementen el material aportado con la documentación teórica que ha de acompañar a este tipo de cursos. En este caso, la dinámica recomendada es usar toda la base de datos para explicación de cada técnica en clase y que posteriormente a los alumnos por grupos se les asigne un determinado supermercado para que repliquen la técnica específicamente para ese centro. De forma que, después de la presentación de los resultados, se consiga tener una perspectiva global sobre la percepción de los supermercados y se pueda comparar esta de forma individual para cada uno de los centros. A nivel profesional animamos a los expertos en Investigación de Mercados que quieran «dar el salto» a probar una herramienta más versátil, con una mayor capacidad gráfica y de presentación de resultados, un mayor control sobre estos y una mayor capacidad de automatización.
Agradecimientos Queremos aprovechar estas lineas para mostrar nuestro agradecimiento a la profesora M.ª Jesús Merino, por su confianza y apoyo durante estos años; a Macarena Estevez, por su generosidad y paciencia a la hora de responder algunas de mis preguntas, y al profesor Ildefonso Grande, por sus valiosas opiniones sobre el manuscrito inicial. Por otro lado, también queremos agradecer a la comunidad de usuarios de R por los fantásticos recursos disponibles en Internet, especialmente a los miembros de Stackoverflow,4 sin los que la realización de este texto habría sido imposible, y a los creadores de la librería de R: bookdown [Yihui Xie (2016)], que ha sido utilizada para poder realizar íntegramente este texto en RStudio.
Nota del autor: En los nombres de las variables y sus etiquetas de texto hemos omitido las tildes, y sustituido la ñ por la n en la base de datos proporcionada para evitar posibles conflictos con los idiomas de los sistemas operativos.
4
https://stackoverflow.com/
Capítulo 1 Objetivos de la investigación y pasos iniciales 1.1. 1.2. 1.3. 1.4. 1.5.
Objetivos de la investigación. Antes de empezar. Carga de datos. Preparación de los datos. Representación gráfica.
1.1. Objetivos de la investigación El objetivo principal de la investigación era conocer la percepción de calidad de los clientes sobre una de las grandes compañías de distribución. Este objetivo se pretendía alcanzar a partir del establecimiento de 4 subobjetivos, cada uno de ellos en base a distintas técnicas de análisis estadístico: • Conocer el perfil de los clientes en función de sus opiniones sobre el centro, que se alcanzaría a través de métodos descriptivos, tanto univariantes como bivariantes, y que serán cubiertos en los capítulos 2 y 3. • Extraer los factores más importantes para los clientes y elaborar un ranking de importancia tanto para cada factor, como para las variables clave de cada uno de ellos. Estas técnicas conocidas como análisis factorial se estudian en el capítulo 4. • Clasificar a los clientes en función de sus opiniones sobre los centros, está técnica conocida como análisis de conglomerados o cluster se estudia en el capítulo 5. • El cuarto subojetivo trataba de explicar las variables clave que afectan tanto al nivel de satisfacción con el centro como a la compra media realizada, y se tratarán a través de métodos de regresión múltiple en el capítulo 6. El hecho de comparar a tres de las grandes cadenas de distribución que operan en España: Dia, Carrefour y Mercadona, ha enriquecido enormemente estos objetivos dado que no solo se puede analizar a cada una de las cadenas individualmente, sino que, además, se pueden analizar en su conjunto obteniendo de esta forma información sobre las diferencias y similitudes de cada una de ellas.
18
Análisis de Datos con R. Una aplicación a la Investigación de Mercados
1.1.1. Estructura del cuestionario El cuestionario 5 fue diseñado para poder alcanzar los objetivos comentados mediante la creación de dos grandes bloques de preguntas: • El bloque 1 recoge varios subgrupos y se incluyen preguntas de las que se espera que las respuestas estén bien correlacionadas entre ellas (teniendo en mente el análisis factorial y de regresión). Este bloque incluye preguntas que usan una escala Likert de 1 a 10, donde 1 representa totalmente insatisfecho y 10 totalmente satisfecho, y aunque la escala es cualitativa, dado que se asocia la percepción a un valor numérico, podrá ser tratado como tal en el análisis estadístico. • En el bloque 2 se recoge información que será útil para la clasificación y comparación entre los distintos grupos. Incluye variables por intervalos, como puede ser la edad, que dado que tienen una base numérica se podrá transformar en cuantitativa mediante el cálculo de la media de los valores máximo y mínimo del intervalo. Y variables puramente cualitativas como es el género, o el estado civil. A continuación, usando como ejemplo la encuesta de Carrefour pasamos a ilustrar el cuestionario. La codificación dada a cada una de las variables se puede observar más adelante en el punto: «Preparación de los datos».
1.1.1.1. Bloque I: percepción sobre el supermercado El primer bloque, cuya codificación empieza con la letra «P», tiene que ver con la percepción sobre el supermercado y se centra en los siguientes aspectos: 1. Necesidades de comprensión. Con preguntas relacionadas con la actitud del personal del supermercado ante los clientes. P.C.1: POR FAVOR, ME GUSTARÍA QUE ME INDICASE SU NIVEL DE SATISFACCIÓN CON CARREFOUR PARA CADA UNO DE LOS SIGUIENTES ELEMENTOS RELACIONADOS CON EL SERVICIO, UTILIZANDO UNA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE INSATISFECHO Y 10 TOTALMENTE SATISFECHO. INDIQUE SU NIVEL DE SATISFACCIÓN CON CARREFOUR RESPECTO A: La actitud educada y amable del personal de Carrefour. El nivel de atención prestado al cliente. Los empleados se muestran pendientes e interesados. 5
Para obtener más información sobre diseño de cuestionarios y escalas de medida, recomendamos Grande & Abascal (2014), pp. 191-251.
Objetivos de la investigación y pasos iniciales
19
La atención inmediata, sin hacer esperar al cliente por estar haciendo otras cosas. El reconocimiento como cliente habitual en el establecimiento al que acude normalmente. La actitud de servicio al cliente que muestran.
2. Necesidades de información y asesoramiento. Las preguntas se relacionan con el asesoramiento sobre la oferta y la información sobre la misma. P.D.1: POR FAVOR, ME GUSTARÍA QUE ME INDICASE SU NIVEL DE SATISFACCIÓN CON CARREFOUR PARA CADA UNO DE ESTOS OTROS ELEMENTOS RELACIONADOS CON EL SERVICIO, UTILIZANDO LA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE INSATISFECHO Y 10 ES TOTALMENTE SATISFECHO. INDIQUE SU NIVEL DE SATISFACCIÓN CON CARREFOUR RESPECTO A: El asesoramiento y la oferta de productos adecuados a las necesidades e intereses del cliente. La información completa, correcta y suficiente, que le permita a usted tomar sus decisiones. Que Carrefour informa tanto de los aspectos positivos como negativos de cualquier producto, sin ocultar información relevante para el cliente.
3. Necesidades operativas. Preguntas relacionadas con la capacidad de los empleados para resolver consultas. Sobre los tiempos de espera para ser atendido, colas en las cajas o tiempos en la solución de reclamaciones. P.E.1: POR FAVOR, ME GUSTARÍA QUE ME INDICASE SU NIVEL DE SATISFACCIÓN CON CARREFOUR PARA CADA UNO DE ESTOS OTROS ELEMENTOS DEL SERVICIO, UTILIZANDO LA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE INSATISFECHO Y 10 ES TOTALMENTE SATISFECHO. INDIQUE SU NIVEL DE SATISFACCIÓN RESPECTO A: La competencia y experiencia de los empleados. La capacidad de los empleados para resolver adecuadamente las consultas que usted plantee. El conocimiento de los productos ofrecidos. El conocimiento y dominio en la consulta o gestión planteada. El interés por resolver el problema planteado por el cliente, que se preocupe por buscar una solución. El tiempo de espera para ser atendido. La duración de las filas en las cajas. La rapidez con la que se realizan las gestiones o consultas solicitadas. El número de empleados y cajas disponibles en los establecimientos.
20
Análisis de Datos con R. Una aplicación a la Investigación de Mercados
El tiempo requerido para todo el proceso de reclamación. La solución obtenida ante sus quejas y reclamaciones. La sencillez de los trámites requeridos para la reclamación.
4. Oferta de productos y servicios. Con preguntas sobre la competitividad de la oferta y la amplitud de la gama. P.F.1: POR FAVOR, ME GUSTARÍA QUE ME INDICASE SU NIVEL DE SATISFACCIÓN CON CARREFOUR PARA CADA UNO DE ESTOS OTROS ELEMENTOS DEL SERVICIO, UTILIZANDO LA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE INSATISFECHO Y 10 ES TOTALMENTE SATISFECHO. INDIQUE SU NIVEL DE SATISFACCIÓN RESPECTO A: La competitividad y atractivo de la oferta de productos respecto a otros supermercados. La amplitud/gama de la oferta de productos. Los beneficios asociados a la compra habitual/frecuente de productos de Carrefour.
5. Centros. En este caso las preguntas se relacionan con el acondicionamiento de los centros, si la estructura de personal es adecuada, la decoración y señalización o la adecuación del número de cajas. P.G.1: POR FAVOR, ME GUSTARÍA QUE ME INDICASE SU NIVEL DE SATISFACCIÓN CON CARREFOUR PARA CADA UNO DE ESTOS OTROS ELEMENTOS DEL SERVICIO, UTILIZANDO LA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE INSATISFECHO Y 10 ES TOTALMENTE SATISFECHO. INDIQUE SU NIVEL DE SATISFACCIÓN RESPECTO A: El número de empleados adecuado al volumen de clientes del establecimiento. Que no haya cajas cerradas por falta de personal suficiente. Decoración/Ambiente del establecimiento. La iluminación del establecimiento. La climatización del establecimiento. La sensación de orden y limpieza. La amplitud del establecimiento. La señalización de las distintas áreas para saber fácilmente dónde debe dirigirse. La facilidad para ver e identificar los establecimientos de la cadena.
6. Valoración racional (satisfacción). Donde se pregunta sobre la relación calidad-precio y el nivel de satisfacción global con el centro. P.H.1: POR FAVOR, UTILIZANDO UNA ESCALA DE 1 A 10, DONDE 1 ES TOTALMENTE EN DESACUERDO Y 10 ES TOTALMENTE DE ACUERDO, INDIQUE EN QUÉ GRADO ESTÁ USTED DE ACUERDO CON LAS SIGUIENTES AFIRMACIONES SOBRE CARREFOUR:
Objetivos de la investigación y pasos iniciales
21
Globalmente le parece adecuada la relación calidad-precio que tiene Carrefour. Globalmente está muy satisfecho con Carrefour.
1.1.1.2. Bloque 2: variables de clasificación Estas preguntas recopilan información sobre las personas encuestadas; en este caso, las variables son codificadas comenzando con la letra «C» y son las siguientes: 1. Edad, esta variable es una pregunta filtro, es decir, si los encuestados son menores se finaliza la encuesta de acuerdo al código ético de la asociación que agrupa a nivel internacional a las compañías de estudios de mercado: ESOMAR.6 La variable se codifica de la siguiente forma: C.1. EDAD – 17 años o menos – 18-24 años – 25-34 años – 35-44 años – 45-54 años – 55-64 años – Más de 64
Fin de la encuesta 1 2 3 4 5 6
2. Sexo C.2. SEXO – Hombre – Mujer
1 2
3. Estado civil C.3. ¿SERÍA TAN AMABLE DE INDICARME SU ESTADO CIVIL? – Soltero/a – Casado/a – Unido/a – Separado/a – Viudo/a
1 2 3 4 5
6 Para más información, visitar la página de la asociación en España, AEDEMO: http://www.aedemo.es/aedemo/ otros-c%C3%B3digos-y-gu%C3%ADas-esomar
22
Análisis de Datos con R. Una aplicación a la Investigación de Mercados
4. Importe medio de la compra en el supermercado: C.4. ¿NOS PODRÍA INDICAR EL IMPORTE MEDIO DE SU COMPRA? Menos de 15 € De 15 a 30 € De 31 a 45 € De 46 a 60 € De 61 a 75 € De 76 a 90 € De 91 a 120 € Más de 120 €
1 2 3 4 5 6 7 8
5. Ingresos mensuales totales de la unidad familiar. En este caso, dado lo delicado de la pregunta se espera que una parte de la muestra no la responda y se proporciona una casilla con Ns/Nc, que para R será un NA (Not Available, no disponible): C.5. ¿NOS PODRÍA INDICAR SUS INGRESOS TOTALES MENSUALES? Menos de 600 € De 601 a 1.000 € De 1.001 a 1.500 € De 1.501 a 2.000 € De 2.001 a 3.000 € De 3.001 a 4.500 € Más de 4.500 € Ns/Nc
1 2 3 4 5 6 7 NA
1.2. Antes de empezar Como primer paso para empezar nuestro trabajo abriremos Rstudio y crearemos un proyecto. Para ello hemos de clicar en la esquina superior derecha en Project y nos aparecerá un desplegable donde hemos de indicar New Project...:
Objetivos de la investigación y pasos iniciales
23
Una vez clicado, nos aparece una nueva pantalla, donde elegiremos New Directory:
Al clicar, pasamos a una nueva pantalla donde hemos de clicar Empty Project:
Esta pantalla nos conduce a una nueva que nos permitirá crear el nombre del proyecto indicándolo en Directory name: y la carpeta de nuestro ordenador donde queremos que se cree, Create project as subdirectory of:. Una vez realizado este paso, el siguiente es clicar en Create Project:
24
Análisis de Datos con R. Una aplicación a la Investigación de Mercados
En este punto RStudio habrá creado el proyecto en el directorio solicitado. A través de nuestro sistema operativo, colocaremos en este directorio los datos que usaremos en nuestro trabajo: survey_base.csv y survey.csv. Aunque este último lo crearemos en este primer capítulo, caso de que se quiera empezar con otro capítulo será necesario que esté en el proyecto, por lo cual es recomendable ponerlo desde el principio. En este directorio también habremos de poner los archivos descargados .R http://editorial.esic.edu/contenidos/9788417129361/ con el código para ejecutar durante la lectura:
Capítulo 5 Análisis cluster o de conglomerado 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7.
Introducción. Análisis cluster o de conglomerado. Análisis exploratorio, cluster jerárquico. Análisis con K means cluster. Perfil en base a las medias de los resultados. Análisis gráfico de los resultados. Mapa factorial con los grupos de cada cluster.
5.1. Introducción En principio, como es usual, cargaremos las librerías necesarias y los datos. library(dplyr) library(ggplot2) library(scales) library(reshape2) library(stringr) library(psych) survey <- read.delim(“survey.csv”,sep = ‘;’) dia <- filter(survey, Establecimiento == ‘dia’) carrefour <- filter(survey, Establecimiento == ‘carrefour’) mercadona <- filter(survey, Establecimiento == ‘mercadona’)
5.2. Análisis cluster o de conglomerado A continuación ilustraremos el análisis cluster; la palabra cluster la podemos traducir como agrupación o conglomerado. Incluye una serie de técnicas que buscan clasificar individuos en grupos homogéneos pero lo más heterogéneos entre sí. En Investigación de Mercados esta técnica es especialmente útil a la hora de realizar la segmentación del mercado. Utilizaremos dos técnicas distintas, pero complementarias, para realizar nuestro análisis:
122
Análisis de datos con R. Una aplicación a la Investigación de Mercados
5.2.1. Cluster jerárquico Cluster jerárquico: se basa en el cálculo de la distancia euclidiana entre cada uno de los casos. Su ventaja es que nos permite realizar un gráfico llamado dendrograma en el cual estas distancias se pueden visualizar y nos puede ayudar a decidir el número de grupos a crear. Su inconveniente es que genera una matriz de distancias que es directamente proporcional al número de casos, de forma que para grandes conjuntos de datos el cálculo puede ser muy intensivo en computación.
5.2.2. K means cluster K means cluster o cluster basado en medias. En este caso hemos de indicar el número de clusters a crear. Esta técnica se clasifica como un algoritmo de aprendizaje no supervisado.13 El término no supervisado significa que no hay ningún resultado que predecir y que el propio algoritmo intenta buscar patrones en los datos. El método asigna aleatoriamente un individuo a cada grupo y mide la distancia de cada individuo al centroide de cada cluster, podemos entender centroide como la media de la posición de cada uno de los individuos. A partir de aquí se establece un mecanismo de iteración en el que se reclasifican los individuos al grupo en el que están más cerca de su centroide y se vuelven a recalcular los nuevos centroides. Estos pasos se repiten hasta que no hay disminución entre la distancia de cada individuo a su centroide.
5.3. Análisis exploratorio, cluster jerárquico Como es usual, comenzaremos trabajando con todos los supermercados, para después hacer un análisis individualizado. Como primer paso realizaremos el cluster jerárquico con el objetivo de obtener el dendrograma y decidir el número de grupos a crear para su posterior análisis mediante K means. Empezaremos calculando la matriz de distancias de las respuestas de valoración del cuestionario mediante el comando de R base dist(). Con esta información de distancias realizaremos el análisis cluster mediante hclust() y usando el algoritmo de Ward propuesto por Murtagh & Legendre (2011), dado que es el que ofrece una representación más clara de los resultados en el dendrograma. Las distancias se representan a través del comando plot() de R base. Donde survey_segment es la fuente de datos main = es el título, sub = NA indica que no queremos subtítulo, xlab y ylab los títulos de los ejes, labels = FALSE indica que no queremos que figuren los números de cada caso en el eje X y hang = -1 permite alinear las ramas del dendrograma. 13
https://www.r-bloggers.com/k-means-clustering-in-r/
Análisis cluster o de conglomerado
123
Adicionalmente a través de rect.hclust() y con k = 2 indicamos que nos muestre un rectángulo en color rojo, border=”red” que agrupe en 2 posibles cluster. Modificando este parámetro, podemos probar diferentes agrupaciones. survey_dist <- dist(dplyr::select(survey, starts_with(‘P’))) survey_segment <- hclust(survey_dist, method = ‘ward.D2’) plot(survey_segment, main = ‘Dendrograma todos los establecimientos’, sub = NA, xlab = ‘Individuos’, ylab = ‘Distancia’, labels = FALSE, hang = -1) rect.hclust(survey_segment, k = 2, border=”red”)
A la luz del gráfico podríamos plantearnos establecer solo dos posibles grupos o racimos; si embargo, si continuamos bajando por el eje vertical, podemos ver que a su vez estos dos grupos se podrían descomponer en otros dos, que serían similares, pero únicos, dado que todavía conservan cierta distancia entre ellos. Para comprobarlo repetiremos el gráfico, pero esta vez cambiando el valor del parámetro a k = 4: plot(survey_segment, main = ‘Dendrograma todos los establecimientos’, sub = NA, xlab = ‘Individuos’, ylab = ‘Distancia’, labels = FALSE, hang = -1) rect.hclust(survey_segment, k = 4, border=”red”)
124
Análisis de datos con R. Una aplicación a la Investigación de Mercados
Viendo el resultado del gráfico, parece satisfactorio el usar 4 clusters; si miramos la distancia que tienen los dos grupos iniciales entre ellos, esta estaría aproximadamente entre 125 y 150, y entre los nuevos 4 grupos la distancia máxima no llegaría a 100. De esta forma podremos captar diferencias entre estos dos bloques de grupos similares. El procedimiento que usaremos será el de K means.
5.4. Análisis con K means cluster Una vez decidido el número adecuado de grupos, pasaremos a utilizar la técnica de K means cluster para clasificar a cada individuo en uno de los grupos y poder estudiar sus características en función de su opinión sobre los supermercados y también en función de las variables de clasificación, como edad, ingresos, etc. Dado que el algoritmo que usa K means comienza eligiendo un centro y asignando individuos a ese centro de una forma aleatoria, fijaremos una semilla a la hora de generar los números aleatorios a través de set.seed(1234) con el objetivo de poder obtener un resultado idéntico en cada análisis basado en los mismos números aleatorios. A partir de aquí aplicamos el comando kmeans() a las variables de valoración de la encuesta y le indicamos que queremos 4 grupos. Para comprobar el número de individuos por grupo usamos el comando table() y lo aplicamos a la columna survey_kmeans$cluster, que es la que almacena la información de pertenencia a cada grupo. Para calcular los valores relativos usaremos prop.table(), en este caso sin especificar fila ni columna, dado que survey_kmeans es un vector y no una matriz: set.seed(1234) survey_kmeans <- kmeans(dplyr::select(survey, starts_with(‘P’)), 4) table(survey_kmeans$cluster)
Análisis cluster o de conglomerado
1
2
3
125
4
550 735 539 216 print(prop.table(table(survey_kmeans$cluster)), digits = 2)
1
2
3
4
0.27 0.36 0.26 0.11
Vemos que el grupo más abundante es el 2, seguido del 1 y del 3; el grupo 4 consta solo de 216 individuos. Pero para poder crear un perfil de cada grupo hallaremos los valores medios tanto de las preguntas de valoración como las de clasificación:
5.5. Perfil en base a las medias de los resultados Como primer paso para crear el perfil en función de las respuestas medias, usaremos la función aggregate() de R base. Los datos necesarios son un data.frame que creamos con dplyr::select(), pero excluyendo -Establecimiento y las variables que empiezan por «C», -starts_with(‘C’), la variable que usaremos para realizar la agregación de los datos es la asignada a cada caso mediante el cluster: by = list(survey_kmeans$cluster) y por fin introducimos la función que queremos usar, en nuestro caso la media, usando FUN = mean. Dado que el resultado nos devuelve una fila para cada cluster, transponemos mediante t() y borramos la primera columna que nos indica el grupo al que pertenece cada una de ellas, survey_kmeans_medias[,-1], obteniendo la información en el formato deseado: survey_kmeans_medias <- aggregate(dplyr::select( survey, -Establecimiento, -starts_with(‘C’)), by = list(survey_kmeans$cluster), FUN = mean) survey_kmeans_medias <- data.frame(t(survey_kmeans_medias[,-1])) print(survey_kmeans_medias, digits = 2)
Pc1.Actitud Pc1.Atencion Pc1.AtencRapida Pc1.Servicio Pd1.Asesora Pd1.InfoCompleta Pe1.Experienc Pe1.Consultas Pe1.ConocGama Pe1.ResolConsulta
X1
X2
X3
X4
5.54 5.00 5.07 5.25 5.45 5.37 5.33 5.64 5.71 5.59
6.70 6.11 6.18 6.43 6.65 6.51 6.42 6.68 6.64 6.52
7.87 7.58 7.72 7.88 7.68 7.77 7.69 7.96 8.01 7.88
3.68 3.27 3.24 3.50 3.73 3.75 3.72 3.94 4.17 4.09
126
Análisis de datos con R. Una aplicación a la Investigación de Mercados
Pe1.Interes 5.55 6.55 Pe1.EsperaAtenc 4.95 6.02 Pe1.EsperaCaja 4.63 5.97 Pe1.ResolucRapida 5.00 6.26 Pe1.EmpleadCaja 4.45 6.25 Pf1.Competitivid 5.55 7.02 Pf1.Variedad 5.39 7.00 Pg1.NumEmplead 4.85 6.35 Pg1.Decoracion 5.04 6.39 Pg1.Iluminacion 5.67 6.98 Pg1.Climatizacion 5.60 6.96 Pg1.OrdenLimpieza 5.52 6.95 Pg1.Amplitud 5.61 7.20 Pg1.Señalizacion 5.34 6.62 Pg1.IdentCadena 5.94 7.31 Ph1.CalidadPrecio 5.99 7.16 Ph1.Satisfaccion 5.53 6.95 RC1.Edad 39.88 41.59 RC2.Sexo 0.57 0.57 RC4.CompraMedia 47.60 57.53 RC5.IngMes 1611.18 1655.31
8.11 7.60 7.28 7.69 7.83 7.97 7.86 7.55 7.47 7.93 7.96 8.11 8.29 7.69 8.28 8.30 8.22 43.38 0.61 61.42 1545.92
3.78 3.55 3.35 3.49 2.75 3.85 3.76 3.35 2.73 3.89 3.80 3.12 3.70 3.37 4.81 4.65 3.90 41.48 0.58 39.96 1582.64
Cada columna representa la media de las respuestas de un cluster distinto. Podemos ver que la columna 4 es la que muestra una valoración media consistentemente inferior. En contraste, el grupo de la columna 3 es el que muestra un mejor resultado. El grupo 2 tiene valoraciones inferiores pero no alejadas mucho del grupo 3. Por otro lado, el grupo 1 podría ser el que más se parece al grupo 4. Si recordamos el dendrograma, obtuvimos 2 grupos bastante distintos entre ellos, en nuestro caso los 3 y 2 en comparación con los 1 y 4, y que a su vez se podrían dividir en otros dos más parecidos, pero con diferencias. Este primer análisis sugiere una serie de nombres para cada uno de los grupos, que en nuestro caso serán: • Columna 3: «Fans». • Columna 2: «Contentos». • Columna 1: «Descontentos». • Columna 4: «Detractores». Para poder visualizar gráficamente la respuesta media de cada grupo a las preguntas de valoración del supermercado crearemos una nueva variable, que contendrá las columnas de nuestro data.frame, mediante dplyr::select, pero a la que hemos puesto sus nuevos nombres; por ejemplo, Detractores = X4. A continuación, los
Análisis cluster o de conglomerado
127
nombres de las filas los añadimos a una nueva variable: $variables y mediante filter() seleccionaremos los datos de interés; para realizar el filtro usaremos stringr::str_detect(variables, ‘P’) , es decir, busca en la columna $variables solo las filas que contienen P, que son las de percepción sobre el supermercado. Una vez creada esta nueva variable, la ordenaremos de mayor o menor en función de las medias dadas por los «Fans»: survey_kmeans_medias_grafico <- survey_kmeans_medias %>% dplyr::select(Detractores = X4, Descontentos = X1, Contentos = X2, Fans = X3) survey_kmeans_medias_grafico$variables <- row.names(survey_kmeans_medias) row.names(survey_kmeans_medias_grafico) <- NULL survey_kmeans_medias_grafico <- survey_kmeans_medias_grafico %>% filter(stringr::str_detect(variables, ‘P’)) dplyr::arrange(survey_kmeans_medias_grafico, desc(Fans))
Detractores
Descontentos
Contentos
Fans
variables
4.652778 3.703704 4.814815 3.898148 3.125000 3.777778 4.166667 3.851852 3.800926 3.935185 3.888889 3.495370 4.092593 3.675926 3.759259 2.750000 3.750000 3.236111 3.717593 3.490741 3.365741 3.731481 3.550926 3.273148 3.347222
5.990909 5.605455 5.941818 5.529091 5.516364 5.547273 5.707273 5.550909 5.596364 5.636364 5.672727 5.245455 5.590909 5.536364 5.392727 4.445455 5.374545 5.074545 5.332727 4.998182 5.343636 5.454545 4.945455 5.001818 4.849091
7.161905 7.201361 7.312925 6.949660 6.952381 6.551020 6.638095 7.021769 6.960544 6.680272 6.975510 6.428571 6.522449 6.699320 7.004082 6.248980 6.507483 6.180952 6.423129 6.257143 6.619048 6.648980 6.023129 6.114286 6.351020
8.296846 8.294991 8.276438 8.224490 8.107607 8.105751 8.005566 7.970315 7.964750 7.955473 7.933210 7.877551 7.877551 7.868275 7.864564 7.829314 7.773655 7.721707 7.693878 7.693878 7.690167 7.680891 7.599258 7.582560 7.549165
Ph1.CalidadPrecio Pg1.Amplitud Pg1.IdentCadena Ph1.Satisfaccion Pg1.OrdenLimpieza Pe1.Interes Pe1.ConocGama Pf1.Competitivid Pg1.Climatizacion Pe1.Consultas Pg1.Iluminacion Pc1.Servicio Pe1.ResolConsulta Pc1.Actitud Pf1.Variedad Pe1.EmpleadCaja Pd1.InfoCompleta Pc1.AtencRapida Pe1.Experienc Pe1.ResolucRapida Pg1.Señalizacion Pd1.Asesora Pe1.EsperaAtenc Pc1.Atencion Pg1.NumEmplead
128
Análisis de datos con R. Una aplicación a la Investigación de Mercados
2.726852 3.347222
5.043636 4.632727
6.393197 5.965986
7.471243 7.278293
Pg1.Decoracion Pe1.EsperaCaja
Para realizar el gráfico de las medias para cada tipo de cliente hemos de volver a usar reshape2::melt: survey_kmeans_medias_grafico_melt
variables
variable
Pc1.Actitud Pc1.Atencion Pc1.AtencRapida Pc1.Servicio Pd1.Asesora Pd1.InfoCompleta
Detractores Detractores Detractores Detractores Detractores Detractores
value 3.675926 3.273148 3.236111 3.495370 3.731481 3.750000
Una vez realizada la transformación, pasaremos al gráfico para ver la comparativa de las medias para cada centro. Dentro de aes() usamos reorder(variables, value) para ordenar la media de las respuestas de mayor a menor: ggplot(survey_kmeans_medias_grafico_melt, aes(reorder(variables, value), value, group = variable, color = variable)) + geom_line(size = 0.75) + geom_point(size = 1) + theme(legend.position=”bottom”,legend.title=element_blank()) + theme(panel.grid.major.x = element_line(colour=”grey”, size=0.5)) + ggtitle(‘Comparativa respuestas medias’) + labs(x = ‘’, y = “Medias de las respuestas”) + coord_flip()
Análisis cluster o de conglomerado
129
Una vez revisadas las medias de las respuestas a las preguntas de valoración del supermercado, nos centraremos en las variables de clasificación, para intentar realizar un perfil de cada cliente; ahora, a través de filter(!...), seleccionaremos las variables que no contienen P añadiendo el signo de admiración !: survey_kmeans_medias_clasificacion <- survey_kmeans_medias %>% dplyr::select(Detractores = X4, Descontentos = X1, Contentos = X2, Fans = X3) survey_kmeans_medias_clasificacion$variables <- row.names(survey_kmeans_medias) row.names(survey_kmeans_medias_clasificacion) <- NULL survey_kmeans_medias_clasificacion <- survey_kmeans_medias_clasificacion %>% filter(!stringr::str_detect(variables, ‘P’)) print(dplyr::arrange(survey_kmeans_medias_clasificacion, desc(Fans)), digits = 2)
1 2 3 4
Detractores
Descontentos
Contentos
Fans
variables
1582.64 39.96 41.48 0.58
1611.18 47.60 39.88 0.57
1655.31 57.53 41.59 0.57
1545.92 61.42 43.38 0.61
RC5.IngMes RC4.CompraMedia RC1.Edad RC2.Sexo
130
Análisis de datos con R. Una aplicación a la Investigación de Mercados
A la luz de estos datos podemos ver que los «Fans» son los que tienen unos ingresos inferiores, aunque no hay mucha diferencia entre estos grupos. Destaca que este grupo sí son los que tienen una compra media superior, con un valor de 61,42 € respecto a los «Detractores» que tienen el menor valor de compra media, siendo esta de 39,96 €. Respecto a la edad, son ligeramente más mayores el grupo de los «Fans», siendo para el resto de los grupos la edad media similar. Respecto al sexo, dado que recodificamos esta variable como «0» para los hombres y «1» para las mujeres, la media nos indicará la proporción de mujeres respecto a hombres, dado que la media de la encuesta se sitúa en torno a un 58% de mujeres, en el grupo de los «Fans» hay un número ligeramente superior de mujeres, con un 61%.
5.6. Análisis gráfico de los resultados Pero las medias, al ser una medida tan agregada, pueden ocultar información que intentaremos destapar a través de la representación gráfica de los distintos grupos. Para ello comenzaremos incluyendo la clasificación dada por el cluster en el data.frame survey, que contiene nuestros datos, creando una variable nueva survey$cluster, a la que trataremos como factor manteniendo los nombres dados anteriormente a los cuatro clusters. También reorganizaremos, como es habitual, los niveles de edad, compra media e ingresos: survey$cluster <- factor(survey_kmeans$cluster, labels = c(‘Descontentos’,’Contentos’, ‘Fans’,’Detractores’)) survey$cluster <- factor(survey$cluster, levels = c(‘Fans’,’Contentos’, ‘Descontentos’,’Detractores’)) survey$C1.Edad
Como primer paso realizaremos una tabla en la que colocaremos en filas el cluster de pertenencia y en columnas el supermercado al que se refiere la encuesta:
Análisis cluster o de conglomerado
131
table(survey$cluster, survey$Establecimiento)
carrefour Fans Contentos Descontentos Detractores
164 266 154 33
dia mercadona 71 179 293 176
304 290 103 7
Podemos observar que el centro donde existen más fans es Mercadona, siendo también este grupo el más abundante; para este centro solo constan 7 detractores del total de la muestra. Este hecho contrasta con Dia, donde el grupo más abundante es el de descontentos, seguido de contentos y detractores con un número similar de individuos, respecto a los fans, solo constan 71 del total de la muestra. A la luz de esta información pasaremos a hacer un primer gráfico14 en el que mostraremos a qué centro se refieren las respuestas dadas por cada individuo de cada cluster: ggplot(survey, aes(cluster, fill = cluster)) + geom_bar(aes(y = (..count..)/sum(..count..))) + facet_grid(Establecimiento ~ .) + theme(legend.position=”none”) + labs(x = ‘Cluster’, y = ‘Frecuencia’, title = ‘Cluster de pertenencia’, subtitle = ‘Por establecimiento’) + scale_y_continuous(labels = scales::percent)
14
Para repasar el código de estos gráficos se recomienda revisar el capítulo 1.
132
Análisis de datos con R. Una aplicación a la Investigación de Mercados
Este gráfico refleja claramente la realidad mostrada por la tabla realizada anteriormente. Una de las dudas que surgía en el análisis de las medias de las variables, tanto para el consumo medio como para la edad, era si el hecho de estar en el grupo de los fans redundaba en un consumo medio superior en el supermercado, y por otro lado, si los fans en realidad tenían más edad. Comenzaremos por este último, y para ello realizaremos un boxplot en el que figure la distribución de las edades de cada grupo: ggplot(survey, aes(cluster, RC1.Edad)) + geom_boxplot() + stat_summary(fun.y = mean, position = position_dodge(width = 0.75), colour = “red”, size = 1, geom = “point”) + theme(legend.position = “bottom”, legend.title = element_blank()) + ggtitle(‘Cluster de pertenencia por edades’) + labs(x = ‘Grupo’, y = ‘Edad’)
En el gráfico se puede observar que, en realidad, el perfil de edades es muy parecido para los 4 grupos, con la única salvedad que en el grupo de fans la distribución de edades es más amplia, lo que redunda en un ligero incremento de la media, representada por el punto rojo. Veamos ahora este mismo gráfico, pero con el consumo medio; en este caso mostramos cada supermercado, con fill = Establecimiento y cambiamos el color del punto que representa la media a blanco, colour = “white”. ggplot(survey, aes(cluster, RC4.CompraMedia, fill = Establecimiento)) + geom_boxplot() + stat_summary(fun.y = mean, position=position_dodge(width = 0.75), colour = “white”, size = 1, geom = “point”) +
Análisis cluster o de conglomerado
133
theme(legend.position=”bottom”,legend.title=element_blank()) + ggtitle(‘Consumo medio’) + labs(x = ‘Grupo’, y = ‘Consumo medio (€)’, subtitle = ‘Por Grupo y Establecimiento’)
Podemos observar que la pauta de consumo estaría más relacionada con el supermercado que con el grupo de pertenencia, aunque en algunos casos como en Dia el grupo de contentos tiene un consumo medio superior, curiosamente mayor que el de los fans. Por otro lado, es llamativo que los detractores de Carrefour sean los que tienen un consumo mayor en el supermercado, tanto en rango como en media, representada por el punto blanco. Para tener más información de si variables como satisfacción global o la relación calidad/precio están influidas por el grupo de pertenencia, realizaremos un gráfico de dispersión comparando ambas variables. Para realizar gráficos de dispersión con ggplot usamos la «geometría» geom_point, pero en casos como el nuestro, en el que la variable es discreta, el resultado no es muy clarificador: ggplot(survey, aes(Ph1.Satisfaccion, Ph1.CalidadPrecio, color = factor(survey$cluster))) + geom_point() + theme(legend.position=”bottom”,legend.title=element_blank()) + # cambiamos el orden de la leyenda guides(colour = guide_legend(reverse=T)) + labs(x = ‘Satisfacción global’, y = ‘Relac. calidad precio’, title = ‘Relac. calidad precio/Satisfacción’, subtitle = ‘Por grupos’)
134
Análisis de datos con R. Una aplicación a la Investigación de Mercados
En estos casos es recomendable cambiar el tipo de gráfico y usar la «geometría»: geom_jitter, que lo que hace es incorporar algo de ruido aleatorio a los datos usados: ggplot(survey, aes(Ph1.Satisfaccion, Ph1.CalidadPrecio, color = factor(survey$cluster))) + geom_jitter() + theme(legend.position=»bottom»,legend.title=element_blank()) + guides(colour = guide_legend(reverse=T)) + labs(x = ‘Satisfacción global’, y = ‘Relac. calidad precio’, title = ‘Relac. calidad precio/Satisfacción’, subtitle = ‘Por grupos’)
Análisis cluster o de conglomerado
135
En el gráfico se puede observar claramente cómo estas dos variables correlacionan positivamente y que a mayor nivel de satisfacción y percepción de la relación calidad/precio aumenta la probabilidad de pertenecer al grupo de los fans o contentos. En el caso de los descontentos, el resultado es más dispar y se pueden observar de una forma más común individuos que valoran bien la relación calidad/precio tienen una baja puntuación en satisfacción. En el caso de los detractores suelen coincidir valoraciones bajas en ambas variables, aunque coexisten individuos con valoración alta en la relación calidad/precio, pero con bajos niveles de satisfacción. Para seguir entendiendo cómo afectan las diversas variables a la pertenencia a un grupo u otro, a continuación combinaremos la técnica cluster con el análisis factorial:
5.7. Mapa factorial con los grupos de cada cluster Dado que en el análisis factorial habíamos obtenido el «resumen» de las respuestas al cuestionario a través de los factores: • «Empleados», con 23% de explicación de la varianza. • «Establecimiento», con un 18%. • «Esperas», con un 12%. • «Calidad de la oferta», con un 11%. Podemos ver cómo se relaciona el hecho de pertenecer a un cluster con la puntuación en cada una de estas «variables sintéticas». Como primer paso repetiremos el análisis factorial realizado en el capítulo anterior, usando 4 factores y con rotación varimax, y crearemos la variable survey_principal_scores_rot$cluster, que incorpora la información del cluster de pertenencia a la información de la puntuación factorial. En este caso volvemos a usar el comando unclass(), que nos permite transformar en data.frame una variable list(), que es el formato generado por el análisis factorial. survey_principal_rot <- psych::principal(dplyr::select(survey, starts_with(‘P’)), nfactors = 4, rotate = ‘varimax’) survey_principal_scores_rot <- data.frame(unclass(survey_principal_rot$scores)) survey_principal_scores_rot$cluster <- survey$cluster
Para crear el gráfico donde podemos observar las puntuaciones de cada cluster para cada eje, usando siempre como eje horizontal el factor «Empleados» repetiremos el proceso usado anteriormente en el caso de la división por establecimientos. Dado que en el orden establecido para los cuatro grupos el grupo fans estaba el primero y detractores el último, y en este caso el orden de representación en los fac-
136
Análisis de datos con R. Una aplicación a la Investigación de Mercados
tores será el inverso, es decir, de detractores a fans, modificamos el orden de los niveles con nuestro ya conocido comando factor() y a través de rev() ponemos los niveles en el orden inverso. ## Creamos variables temporales # Agregamos las columnas a la nueva variable, pero dandoles nombre x o y a <- dplyr::select(survey_principal_scores_rot, x = RC1, y = RC2, cluster) a$factor <- ‘Empleados y Establecimiento’ b <- dplyr::select(survey_principal_scores_rot, x = RC1, y = RC3, cluster) b$factor <- ‘Empleados y Tiempos’ c <- dplyr::select(survey_principal_scores_rot, x = RC1, y = RC4, cluster) c$factor <- ‘Empleados y Gama Productos’ d <- dplyr::bind_rows(a, b, c) # Cambiamos el orden de los niveles para una mejor representación gráfica d$cluster <- factor(d$cluster, levels = rev(levels(d$cluster)))
Como novedad, en el gráfico añadiremos el comando stat_ellipse() con el objetivo de agrupar los clusters visualmente en el gráfico; para ello usaremos el comando type = ‘norm’ que basará su agrupación en una distribución normal bivariante; para rellenar la elipse obtenida, le indicamos geom = ‘polygon’ y con una opacidad de solo el 10% a través de alpha = 0.1: ggplot(data = d, aes(x, y)) + geom_point(aes(colour = cluster), alpha = 0.4) + facet_grid(~ factor) + stat_ellipse(aes(color = cluster, fill = cluster), type = ‘norm’, geom = “polygon”, alpha = 0.1, show.legend = FALSE) + theme(legend.position=”bottom”,legend.direction=”horizontal”) + theme(legend.title = element_blank()) + labs(title = “Análisis factorial por grupo de pertenencia”, x = ‘’, y = ‘’) + scale_colour_discrete(name = “Variable”)
Análisis cluster o de conglomerado
137
Podemos observar que los gráficos donde hay más concentración de los fans son los que relacionan Empleados y Establecimiento y los que relacionan Empleados y Tiempos, por lo que podríamos concluir que son los factores que más importancia tendrían a la hora de generar el grupo de fans. En el caso de Empleados y Gama de Productos, podemos observar que la distribución del grupo de fans es mucho más dispersa, lo que minoraría la importancia de este último factor. En todos los casos coincide que el grupo de detractores se sitúa en el eje inferior izquierdo indicando baja puntuación en todos los factores. Dejamos como ejercicio la repetición de este análisis para cada uno de los supermercados.