Técnicas multivariantes de investigación en marketing
  • Presentación
  • Sesiones
    • Parte 1
    • Parte 2
    • Parte 3
    • Parte 4
    • Parte 5
    • Parte 6
  • Otros
    • Citar en Quarto
    • Acerca de …

Contenidos

  • Parte 1 - Arrancando motores !!!
    • Introducción a la exploración de datos
      • Contexto
      • Proceso
      • Escalas de medida
      • Relación instrumento de medida y base de datos
        • Múltiple en binario frente a menciones
    • Herramientas de exploración
      • Frecuencias
      • Histogramas, importancia de la visualización
      • Resumen estadístico
      • Medidas de tendencia central, ¿dónde está el “centro”?
      • Medidas de dispersión, ¿cómo son los datos de variados?
      • La distribución normal, concepto de normalidad y relación con la muestra
        • Asimetría (Skewness)
        • Curtosis (Kurtosis)
        • Importancia en IM
    • Preocupaciones del analista de datos
      • Valores perdidos
        • ¿Por qué faltan los datos?
        • Métodos de corrección
      • Valores atípicos (outliers)
        • Identificación visual
        • Detección
        • Estandarización o tipificación

Parte 1 - Arrancando motores !!!

Introducción a la exploración de datos

Con los rudimentos del trabajo en R ya cubiertos, comienzan los contenidos propios de la asignatura, dedicada en primer término a una introducción a los procedimientos básicos de trabajo con datos provenientes de recogidas estructuradas o de investigaciones de mercado, predominantemente de encuesta, también llamado EDA (exploratory data analysis). Conviene recordar que esta no es una asignatura de R, sino una asignatura que explota datos estadísticos y que utilizará técnicas univariantes, bivariantes y multivariantes para obtener esa información.

Los siguientes pasos permiten avanzar en los cálculos estadísticos y en la obtención de información significativa. Este documento pretende ser una guía ilustrativa y demostrativa de cómo se trabaja.

Antes de explorar las posibilidades del software con el que se va a trabajar, conviene situar los datos en Mis Documentos y crear ahí el proyecto de trabajo. Un proyecto permite que la organización del trabajo sea más sencilla, por lo que la primera tarea consiste en:

  1. En RStudio, hacer clic en File → New project.
  2. Dar nombre al proyecto y elegir su ubicación. El asistente permite seleccionar la carpeta; lo recomendable es el equivalente a Mis Documentos en el equipo (PC o Mac), con un nombre sencillo, por ejemplo My first project.
  3. Hacer clic en Open in new session.

Se despliega una nueva ventana de RStudio con el proyecto vacío, que pasa a ser el punto de partida. Estar dentro de un proyecto significa que todo el trabajo se desarrolla dentro de él.

Se crea una carpeta con New folder llamada data, y dentro de ella se descomprimen todos los archivos de datos que se van a manejar. El fichero data.zip está disponible en el Aula Virtual. Úsese el descompresor habitual de cada uno o el por defecto en el Explorador de Windows o Mac.

Una vez hecho esto, los ficheros pueden cargarse con una ruta relativa data/..., ya que estarán todos allí. Puede comprobarse desde el panel de Files.

A continuación, un vídeo con el proceso descrito.

Tu navegador no soporta la reproducción de vídeo.

Comienza así el contenido específico de la asignatura.

Contexto

Para realizar una investigación sólida es necesario dominar cinco pilares fundamentales:

  1. El contexto de la explotación de datos: ¿por qué se analiza? Los datos tienen vida y propósito; no son meros números, sino la voz de quien los proporciona.
  2. El proceso de análisis: se sigue un flujo lógico: desde la recolección y limpieza hasta la transformación y, finalmente, la interpretación estratégica.
  3. Escalas de medida: se aprende a distinguir entre variables nominales, ordinales y de razón. En R, saber clasificar correctamente una variable es el paso previo obligatorio para elegir la técnica de análisis adecuada.
  4. Relación entre instrumento y base de datos: se explora cómo el diseño de la encuesta (el instrumento) se traduce en la estructura del dataframe. Un buen diseño de cuestionario ahorra horas de trabajo en R.
  5. La exploración (EDA - Exploratory Data Analysis): esta es la etapa más crítica. Antes de construir modelos complejos, es necesario “mirar” los datos, identificar patrones, detectar valores perdidos y entender las distribuciones.

Conviene dejar de ver una hoja de cálculo como una tabla inerte y empezar a verla como un conjunto de información esperando ser interpretada. Se trata de aprender a hacerle las preguntas correctas a los datos. Una buena exploración no busca probar hipótesis, busca descubrir qué dicen los datos antes de forzarlos a decir lo que se quiere.

La explotación de datos no comienza frente a la pantalla de R o RStudio, sino en la definición previa de la investigación. Este esquema refleja las etapas necesarias para garantizar que los datos obtenidos sean útiles para el análisis:

  1. Definición metodológica: El primer paso es determinar si el enfoque será cualitativo, para comprender fenómenos, o cuantitativo, para medir variables. Esta decisión condiciona toda la estrategia posterior.
  2. Selección de la técnica: La elección entre observación directa, encuestas o registros automáticos depende del objetivo de estudio y de la fuente de información disponible.
  3. Diseño del instrumento: Consiste en estructurar el soporte de recogida (cuestionarios, formularios o sistemas de registro). Un diseño preciso es fundamental para minimizar errores durante la captura de datos.
  4. Estrategia de análisis: Una vez obtenidos los datos, se aplica la metodología de tratamiento estadístico. El éxito de esta etapa final depende directamente de la coherencia con la que se hayan ejecutado los tres pasos anteriores.

La calidad de los resultados en R está intrínsecamente ligada al rigor aplicado en cada una de estas fases previas.

Proceso

Una vez que los datos han sido recolectados y estructurados, el investigador debe iniciar una fase de análisis descriptivo que permita sintetizar la información. Las tareas fundamentales en esta etapa son:

  1. Exploración de datos: Consiste en el examen preliminar de las variables para detectar anomalías, valores perdidos o comportamientos inusuales antes de iniciar el análisis estadístico.
  2. Recuentos: Es la tarea básica de contabilización de frecuencias, esencial para entender el tamaño de cada categoría en la muestra.
  3. Tablas marginales: Permiten obtener una visión general de la distribución de una variable por sí misma, independientemente de las demás.
  4. Tablas cruzadas: Es el método principal para analizar la relación entre dos variables, permitiendo identificar patrones o asociaciones entre ellas.
  5. Inferencia sobre tablas de contingencia: Finalmente, se aplican pruebas estadísticas (como el test de Chi-cuadrado) para determinar si las asociaciones observadas en las tablas cruzadas son estadísticamente significativas o fruto del azar.

Este flujo de trabajo permite pasar de una base de datos bruta a un conocimiento consolidado, sirviendo como base necesaria para cualquier análisis de mayor complejidad.

La profundidad del proceso de análisis varía según la complejidad de la técnica seleccionada. Aunque todo proyecto parte de una definición clara del problema, el flujo operativo se expande a medida que aumenta la sofisticación de las herramientas utilizadas:

  • Técnicas univariantes: El proceso es directo. Tras la definición y el plan de análisis, se evalúa la aplicabilidad (comprobación de supuestos básicos) para proceder a la interpretación de los estadísticos descriptivos (medias, frecuencias, dispersión).
  • Técnicas bivariantes y multivariantes: Este flujo es más exigente. Además de las etapas iniciales, requiere una fase central de estimación y ajuste del modelo, donde se cuantifican las relaciones o estructuras subyacentes. Tras la interpretación, se añade un paso crítico: la validación del modelo, que garantiza que los resultados obtenidos son robustos, fiables y generalizables.

Mientras que en el análisis univariante se busca describir el comportamiento de una variable, en el análisis multivariante el objetivo es reducir la incertidumbre mediante la confirmación de modelos que expliquen la estructura de los datos con rigor estadístico.

Para operar con eficacia es necesario conectar los conceptos teóricos de la investigación con la arquitectura técnica de los bancos de datos. Esta fase se divide en dos ejes:

Consideraciones sobre las variables: el análisis estadístico comienza con la correcta definición de la variable. Es necesario comprender qué constituye un instrumento de medición, cómo se desglosa en preguntas y respuestas, y la distinción vital entre el valor (el dato numérico o texto) y su etiqueta (el significado que se le asigna). La codificación correcta es lo que permite que una variable pase de ser una respuesta en un cuestionario a un factor analizable en el software.

Consideraciones sobre los datos: aquí se aborda la naturaleza del archivo. No basta con disponer de información; es preciso entender cómo se estructura en filas (observaciones) y columnas (variables), qué formatos son óptimos para el intercambio entre plataformas y cómo gestionar los metadatos. La correcta diferenciación entre el dato bruto y el etiquetado de variables es lo que garantiza la transparencia y la calidad del informe final.

Dominar estos fundamentos permite evitar errores comunes en la importación y manipulación de datasets, asegurando que el análisis realizado en R sea preciso desde el primer momento.

Escalas de medida

El primer paso para analizar un dato es definir su naturaleza. El software necesita saber qué tipo de información está procesando para aplicar la prueba estadística correcta. Las variables se clasifican bajo dos criterios:

  • 1. Según el tipo de métrica (Nivel de medición):
    • Cualitativas (No métricas): Se centran en atributos.
      • Las variables nominales actúan como etiquetas de clasificación (ej. género).
      • Las variables ordinales incorporan además un sentido de jerarquía u orden (ej. nivel de satisfacción).
    • Cuantitativas (Métricas): Permiten operaciones matemáticas precisas. Las variables de intervalo poseen un orden y una magnitud de diferencia constante (ej. temperatura en grados Celsius), mientras que las de razón incluyen un cero absoluto que permite cuantificar proporciones (ej. ingresos o edad).
  • 2. Según la continuidad de valores:
    • Discretas: Representan valores contables que no admiten decimales intermedios (ej. número de hijos).
    • Continuas: Pueden asumir cualquier valor dentro de un rango determinado, lo que permite una medición de alta precisión (ej. tiempo de respuesta o peso).

La identificación correcta de estas escalas es el paso crítico que determina la capacidad de ejecutar modelos estadísticos. En R, esta clasificación es la que guía la elección entre utilizar un gráfico de barras, un histograma, un test no paramétrico o una regresión lineal.

Relación instrumento de medida y base de datos

La traducción de un cuestionario a una base de datos no siempre es lineal. La estructura final del dataframe depende directamente del diseño de la pregunta.

Por ejemplo en este extracto de cuestionario simulado …

  1. Preguntas simples (P1, P2): Son las más directas. Una pregunta se traduce habitualmente en una sola columna con el valor registrado (ej. el código de respuesta o el número de años).
  2. Preguntas de respuesta múltiple (P3): Estas preguntas (como la de “averías sufridas”) requieren una atención especial. Aunque en el cuestionario aparecen bajo un mismo enunciado, en la base de datos se transforman en tantas columnas como opciones de respuesta existan (P3_1, P3_2, etc.). Cada columna funciona como una variable binaria (0/1 o Sí/No), lo que permite al encuestado seleccionar varias opciones simultáneamente.
  3. Baterías o escalas (P4): Aunque visualmente ocupan varias columnas (P4_1, P4_2…), su naturaleza es distinta a la multirespuesta. Aquí, cada columna representa el mismo concepto medido bajo la misma escala (ej. escala Likert). A diferencia de la multirespuesta, estas columnas son intrínsecamente comparables entre sí y suelen analizarse conjuntamente como una unidad de medida. Una escala es un conjunto de ítems que tienen el msimo conjunto des respuestas posibles y que se consideran en conjunto. Si se trata de ítesm de actitudes y el protoclo verbal es el grado de acuerdo, estamos ante una escala de tipo Likert, y su consdideración o puntuación es agregada.

Entender esta distinción es vital para el analista: mientras que en una escala (P4) el objetivo es analizar la consistencia interna entre los ítems, en una multirespuesta (P3) el objetivo es contabilizar la incidencia de cada una de las opciones por separado.

Múltiple en binario frente a menciones

La forma en que se registran los datos no es neutral; determina qué se puede —y qué no se puede— analizar después. Las dos tablas de la diapositiva muestran la diferencia crítica al tratar una pregunta de respuesta múltiple (P3):

  1. La tabla superior (Variables binarias): Es la forma estándar de codificar “presencia o ausencia”. Cada opción de respuesta se convierte en una columna (0 = no marcado, 1 = marcado). Es ideal para contabilizar cuántos encuestados eligieron cada elemento, pero se pierde el orden en el que fueron seleccionados.
  2. La tabla inferior (Sistema de menciones): Aquí, el valor registrado corresponde al orden de elección (1ª mención, 2ª mención, etc.). Esta estructura es mucho más rica y potente:
    • Conserva la jerarquía: Permite identificar qué avería fue la más crítica o la que primero vino a la mente del usuario.
    • Análisis de Top of Mind (TOM): Es la única forma de aislar la primera respuesta para medir el recuerdo espontáneo o la prioridad máxima del consumidor.
NoteEjercicio práctico

Para operar con datos, la teoría debe transformarse en una acción inmediata: clasificar. A continuación se analiza un banco de datos de hábitos digitales. El objetivo es identificar la escala de medida real de cada variable, superando la apariencia superficial de los datos.

  • age (Edad en años): Escala de razón. Tiene un cero absoluto y permite medir cuántas veces es mayor una edad que otra.
  • educ (Años de estudios): Escala de razón o intervalo (según el contexto), pero en investigación de mercados suele tratarse como métrica para promedios.
  • usecomp, usenet, usemail (Binarias 1/0): Escala nominal. Aunque los valores sean numéricos (0 o 1), estos números son meras etiquetas que indican presencia o ausencia.
  • emailhrs, webhrs, nethrs (Horas): Escala de razón. Son variables continuas que permiten realizar cálculos aritméticos directos.
  • netcat (Categorizada 1-4): Escala ordinal. Aunque derivan de una variable continua, al agruparlas en rangos, se pierde la precisión exacta y solo se conserva el orden o jerarquía.
  • region (A=1, B=2…): Escala nominal. Los números asignados a las regiones no representan cantidad ni orden; solo sirven para diferenciar grupos.

El reto del analista: la presencia de números puede engañar. En R, si una escala nominal (como region) se clasifica erróneamente como de razón (numérica), el software intentará calcular una “media de regiones”, lo cual carece de sentido lógico. Clasificar correctamente es el primer paso hacia un análisis válido.

Herramientas de exploración

Para realizar una inferencia válida es necesario dominar primero la descripción básica de los datos; en R, este proceso se traslada a la consola mediante funciones específicas. El objetivo de este bloque es pasar de la exploración visual a la cuantificación estadística:

  1. La exploración del archivo: antes de calcular nada, se realiza un diagnóstico de la estructura (filas, columnas, tipos de variables) y un análisis exploratorio inicial para detectar anomalías.
  2. La descripción estadística: se toma la variable age como modelo para aprender a extraer los estadísticos fundamentales:
    • Para variables categóricas (Nominales/Ordinales): se utilizan tablas de frecuencias, que permiten conocer cuántos individuos responden a cada categoría y qué porcentaje representan sobre el total.
    • Para variables continuas (Intervalo/Razón): se utilizan estadísticos descriptivos: la media, mediana, desviación típica, mínimos, máximos y la MAD, que permiten resumir la distribución de la variable en unos pocos indicadores numéricos.
TipCambio de paradigma

Mientras que en otros software el análisis se limita a “clicar” opciones, en R el análisis es reproducible. Cada tabla de frecuencias o estadístico obtenido queda guardado en el script, lo que permite que el informe completo se genere de manera automática y sin errores de manipulación manual. Esta es una de las grandes ventajas de trabajar con R y RStudio.

Frecuencias

Este es el siguiente paso, el primer script de trabajo del proyecto. Conviene explorar siempre el banco de datos cargado con la instrucción glimpse del paquete dplyr.

# Load the SPSS dataset into the 'gssnet1' object
# We use the 'expss' package because it perfectly retains variable and value labels from SPSS
gssnet1 <- expss::read_spss('data/gssnet1.sav')

# Get a quick, clean overview of the data structure (variables, data types, and first few values)
dplyr::glimpse(gssnet1)
Rows: 984
Columns: 11
$ age      <labelled> 30, 39, 72, 41, 24, 23, 27, 34, 45, 51, 46, 56, 46, 23, …
$ educ     <labelled> 11, 9, 10, 13, 12, 12, 12, 10, 11, 12, 12, 6, 10, 10, 11…
$ usecomp  <labelled> 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
$ usenet   <labelled> 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,…
$ usemail  <labelled> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,…
$ emailhrs <labelled> -1.00000000, -1.00000000, -1.00000000, -1.00000000, 1.00…
$ webhrs   <labelled> -1.0, -1.0, -1.0, -1.0, 2.0, -9.0, 0.5, -1.0, -1.0, -1.0…
$ nethrs   <labelled> -1.000000, -1.000000, -1.000000, -1.000000, 3.000000, -9…
$ netcat   <labelled> -1, -1, -1, -1, 1, -9, 1, -1, -1, -1, -1, -1, -1, -1, 1,…
$ region   <labelled> 5, 7, 3, 3, 6, 5, 7, 4, 3, 5, 6, 7, 7, 7, 7, 2, 3, 3, 3,…
$ Zage     <labelled> -0.97196706, -0.43378202, 1.53956312, -0.31418535, -1.33…
# Display the dataframe in the console to inspect its actual content
head(gssnet1)
  age educ usecomp usenet usemail emailhrs webhrs nethrs netcat region
1  30   11       0      0       0       -1     -1     -1     -1      5
2  39    9       0      0       0       -1     -1     -1     -1      7
3  72   10       0      0       0       -1     -1     -1     -1      3
4  41   13       0      0       0       -1     -1     -1     -1      3
5  24   12       1      1       1        1      2      3      1      6
6  23   12       1      1       0       -1     -9     -9     -9      5
        Zage
1 -0.9719671
2 -0.4337820
3  1.5395631
4 -0.3141853
5 -1.3307571
6 -1.3905554

Se calculan ahora las frecuencias de la variable age. Las frecuencias son la base de trabajo del investigador: cuántas veces sucede un evento. El resultado muestra diferentes columnas con el valor absoluto y el relativo, tomando como base todos los casos del banco de datos o solo los casos válidos.

Se utiliza el paquete expss para obtener todos los cálculos relacionados con la estadística básica paramétrica y con los cálculos de frecuencia.

# Generate a detailed frequency table for the 'age' variable
# The 'fre' function from the 'expss' package perfectly mimics SPSS frequency outputs,
# providing counts, percentages, valid percentages, and cumulative percentages
expss::fre(gssnet1$age)
Age of respondent  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 18  10 1.0 1.0 1.0 1.0
 19  10 1.0 1.0 1.0 2.0
 20  6 0.6 0.6 0.6 2.6
 21  13 1.3 1.3 1.3 4.0
 22  9 0.9 0.9 0.9 4.9
 23  18 1.8 1.8 1.8 6.7
 24  26 2.6 2.6 2.6 9.3
 25  21 2.1 2.1 2.1 11.5
 26  20 2.0 2.0 2.0 13.5
 27  17 1.7 1.7 1.7 15.2
 28  22 2.2 2.2 2.2 17.5
 29  12 1.2 1.2 1.2 18.7
 30  19 1.9 1.9 1.9 20.6
 31  17 1.7 1.7 1.7 22.4
 32  19 1.9 1.9 1.9 24.3
 33  23 2.3 2.3 2.3 26.6
 34  24 2.4 2.4 2.4 29.1
 35  24 2.4 2.4 2.4 31.5
 36  12 1.2 1.2 1.2 32.7
 37  13 1.3 1.3 1.3 34.0
 38  22 2.2 2.2 2.2 36.3
 39  13 1.3 1.3 1.3 37.6
 40  27 2.7 2.7 2.7 40.3
 41  17 1.7 1.7 1.7 42.1
 42  17 1.7 1.7 1.7 43.8
 43  19 1.9 1.9 1.9 45.7
 44  24 2.4 2.4 2.4 48.2
 45  19 1.9 1.9 1.9 50.1
 46  26 2.6 2.6 2.6 52.7
 47  21 2.1 2.1 2.1 54.9
 48  24 2.4 2.4 2.4 57.3
 49  26 2.6 2.6 2.6 60.0
 50  26 2.6 2.6 2.6 62.6
 51  18 1.8 1.8 1.8 64.4
 52  18 1.8 1.8 1.8 66.3
 53  10 1.0 1.0 1.0 67.3
 54  17 1.7 1.7 1.7 69.0
 55  15 1.5 1.5 1.5 70.5
 56  21 2.1 2.1 2.1 72.7
 57  18 1.8 1.8 1.8 74.5
 58  13 1.3 1.3 1.3 75.8
 59  14 1.4 1.4 1.4 77.2
 60  17 1.7 1.7 1.7 79.0
 61  14 1.4 1.4 1.4 80.4
 62  19 1.9 1.9 1.9 82.3
 63  9 0.9 0.9 0.9 83.2
 64  10 1.0 1.0 1.0 84.2
 65  7 0.7 0.7 0.7 85.0
 66  11 1.1 1.1 1.1 86.1
 67  12 1.2 1.2 1.2 87.3
 68  7 0.7 0.7 0.7 88.0
 69  8 0.8 0.8 0.8 88.8
 70  11 1.1 1.1 1.1 89.9
 71  8 0.8 0.8 0.8 90.8
 72  8 0.8 0.8 0.8 91.6
 73  7 0.7 0.7 0.7 92.3
 74  11 1.1 1.1 1.1 93.4
 75  7 0.7 0.7 0.7 94.1
 76  5 0.5 0.5 0.5 94.6
 77  2 0.2 0.2 0.2 94.8
 78  8 0.8 0.8 0.8 95.6
 79  7 0.7 0.7 0.7 96.3
 80  2 0.2 0.2 0.2 96.5
 81  4 0.4 0.4 0.4 97.0
 82  4 0.4 0.4 0.4 97.4
 83  4 0.4 0.4 0.4 97.8
 84  3 0.3 0.3 0.3 98.1
 85  4 0.4 0.4 0.4 98.5
 86  3 0.3 0.3 0.3 98.8
 87  1 0.1 0.1 0.1 98.9
 88  2 0.2 0.2 0.2 99.1
 89  5 0.5 0.5 0.5 99.6
 NA  4 0.4 0.4 0.4 100.0
 #Total  984 100 100 100
 <NA>  0 0.0
# Display only the first few rows (the head) of the frequency table
head(fre(gssnet1$age))
Age of respondent  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 18  10 1.0 1.0 1.0 1.0
 19  10 1.0 1.0 1.0 2.0
 20  6 0.6 0.6 0.6 2.6
 21  13 1.3 1.3 1.3 4.0
 22  9 0.9 0.9 0.9 4.9
 23  18 1.8 1.8 1.8 6.7
# Print a visual separator (...) in the console for better readability
cat(' ')
cat ('...')
...
cat(' ')
# Display only the last few rows (the tail) of the frequency table
tail(fre(gssnet1$age))
Age of respondent  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 87  1 0.1 0.1 0.1 98.9
 88  2 0.2 0.2 0.2 99.1
 89  5 0.5 0.5 0.5 99.6
 NA  4 0.4 0.4 0.4 100.0
 #Total  984 100 100 100
 <NA>  0 0.0

Histogramas, importancia de la visualización

¿Las frecuencias nos cuentan toda la historia de los datos? No; a menudo las tablas de frecuencias ofrecen una visión “atomizada” de los datos: fila a fila, grupo a grupo. El histograma, en cambio, ofrece una visión de conjunto que ninguna tabla puede replicar, por tres razones clave:

  1. Detección de patrones visuales: En una tabla de frecuencias, es difícil ver si los datos tienen forma de campana (normal), si están sesgados hacia la derecha, o si tienen “picos” inesperados (como una edad donde hay muchísima gente y en la siguiente casi nadie). El histograma revela la forma de la distribución de un vistazo.
  2. Identificación de valores atípicos (Outliers): A veces, un error de carga de datos (alguien que puso edad 200 en lugar de 20) pasa desapercibido en una tabla larga, pero en un histograma es un punto solitario que “salta a la vista” lejos de la masa principal de datos.
  3. Validación de supuestos: Muchos modelos estadísticos (como las regresiones que se verán más adelante) asumen que los datos siguen una distribución normal. El histograma es la primera prueba de fuego: si el gráfico no se parece a una campana, el modelo podría no ser adecuado.

Las tablas de frecuencias indican cuántos casos hay, y el histograma muestra cómo se comportan y qué forma tienen los datos.

No conviene confiar en una media o una mediana sin haber visualizado antes el histograma. La media es una simplificación extrema; el histograma muestra la realidad de cómo se distribuye el mercado.

Al trabajar con variables numéricas (como la edad), las tablas de frecuencias suelen ser demasiado extensas para interpretarlas directamente. En estos casos, el histograma es la herramienta principal, ya que agrupa los datos en intervalos para revelar la forma de su distribución.

Por defecto, R calcula automáticamente el número de intervalos (llamados bins o breaks ) para ofrecer una visión equilibrada. Sin embargo, es el investigador quien debe decidir el nivel de detalle necesario.

# Standard histogram: R chooses the number of breaks (bins) automatically
hist(gssnet1$age)

Si se necesita mayor precisión, el número de intervalos puede controlarse mediante el argumento breaks.

Al fijar un número de breaks muy elevado (como en el ejemplo siguiente), R intenta mostrar cada valor individual. Esto puede ser útil para ver la composición de los datos, aunque conviene tener cuidado: demasiados intervalos pueden “fragmentar” en exceso la información y dificultar la detección de tendencias.

# Customizing bins: Increasing detail with 'breaks'
hist(gssnet1$age,breaks = 50)

Hasta ahora, el histograma muestra cómo se distribuyen realmente los datos de la muestra. Pero en investigación de mercados, a menudo es necesario saber si ese comportamiento es “normal” o si, por el contrario, presenta anomalías o sesgos que deben tenerse en cuenta antes de aplicar pruebas estadísticas avanzadas.

¿Por qué superponer una curva normal?, superponer una curva normal (o Campana de Gauss) sirve para tres propósitos críticos:

  1. Validación de supuestos: muchos de los modelos que se utilizarán después (como las regresiones o los test t de Student) asumen que los datos siguen una distribución normal. Si al dibujar la curva los datos se alejan mucho de ella, conviene ser cauto con los resultados.
  2. Detección de sesgos: si la curva normal es simétrica pero el histograma tiene una “cola” muy larga hacia un lado, los datos no están equilibrados y esa variable debe tratarse con técnicas específicas (por ejemplo, transformaciones logarítmicas).
  3. Referencia teórica: la curva normal es el “estándar de oro”. Permite ver de forma intuitiva si la muestra es homogénea o si presenta valores extremos (datos que caen fuera de la campana) que podrían estar distorsionando la media.
Important

No es preocupante que el histograma no encaje perfectamente con la curva roja. En la vida real, los datos de mercado raramente son “perfectos”. Lo importante no es la perfección, sino identificar si la divergencia es pequeña o si la distribución está totalmente distorsionada.

# 1. Calculate the mean and standard deviation of the variable
# We need these two parameters to build a theoretical normal curve that matches our data.
# 'na.rm = TRUE' ensures that missing values do not cause the calculation to fail.
media      <- mean(gssnet1$age, na.rm = TRUE)
desviacion <- sd(gssnet1$age, na.rm = TRUE)

# 2. Create the histogram in probability density mode
# Setting 'probability = TRUE' is mandatory here; it scales the Y-axis to show density 
# instead of raw frequencies. This is required so the normal curve fits over the bars.
# The 'breaks' argument customizes the number of bins based on the variable's range.
hist(
    gssnet1$age,
    breaks = max(gssnet1$age, na.rm = TRUE) - min(gssnet1$age, na.rm = TRUE),
    probability = TRUE
)

# 3. Overlay the theoretical normal distribution curve
# We use 'dnorm' to draw the ideal bell curve based on our specific 'mu' and 'sigma'.
# 'add = TRUE' tells R to draw this curve directly on top of the existing histogram.
curve(dnorm(x, mean = media, sd = desviacion),
      add = TRUE,
      col = "darkred",
      lwd = 5) # Added line width (lwd = 2) to make the curve stand out better

Resumen estadístico

Hasta ahora se ha explorado la forma de los datos (histogramas). A continuación se obtiene la “foto fija” numérica de las variables. En R existen varias formas de obtener estos estadísticos; se empieza con la opción nativa (summary) y después se presentan herramientas más avanzadas.

Opción estándar: summary()

Es la forma más rápida de obtener un diagnóstico de una columna o de todo el dataframe.

# Generate a basic statistical summary (min, 1st quartile, median, mean, 3rd quartile, max) 
# for a single variable ('age')
summary(gssnet1$age)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  18.00   33.00   45.00   46.47   58.00   99.00 
# Generate a summary for every variable in the entire dataframe
# This is a great way to get a quick, global overview of all your data at once
summary(gssnet1)
      age             educ          usecomp           usenet      
 Min.   :18.00   Min.   : 0.00   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:33.00   1st Qu.:12.00   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :45.00   Median :14.00   Median :1.0000   Median :1.0000  
 Mean   :46.47   Mean   :13.74   Mean   :0.7896   Mean   :0.7896  
 3rd Qu.:58.00   3rd Qu.:16.00   3rd Qu.:1.0000   3rd Qu.:1.0000  
 Max.   :99.00   Max.   :20.00   Max.   :9.0000   Max.   :9.0000  
                                                                  
    usemail          emailhrs         webhrs           nethrs       
 Min.   :0.0000   Min.   :-9.00   Min.   :-9.000   Min.   : -9.000  
 1st Qu.:0.0000   1st Qu.:-1.00   1st Qu.:-1.000   1st Qu.: -1.000  
 Median :1.0000   Median : 1.00   Median : 1.000   Median :  3.000  
 Mean   :0.7419   Mean   : 3.31   Mean   : 2.937   Mean   :  6.795  
 3rd Qu.:1.0000   3rd Qu.: 4.00   3rd Qu.: 5.000   3rd Qu.: 10.000  
 Max.   :9.0000   Max.   :50.00   Max.   :70.000   Max.   :118.000  
                                                                    
     netcat            region           Zage         
 Min.   :-9.0000   Min.   :1.000   Min.   :-1.68955  
 1st Qu.:-1.0000   1st Qu.:3.000   1st Qu.:-0.79257  
 Median : 1.0000   Median :5.000   Median :-0.07499  
 Mean   : 0.2337   Mean   :5.117   Mean   : 0.00000  
 3rd Qu.: 3.0000   3rd Qu.:7.000   3rd Qu.: 0.70239  
 Max.   : 4.0000   Max.   :9.000   Max.   : 2.55613  
                                   NAs    :4         

Opción avanzada: describe()

Si se necesita una precisión técnica mayor (para investigación de mercados avanzada), el paquete psych ofrece una tabla completa con medidas robustas.

# Advanced descriptive statistics
psych::describe(gssnet1$age)
   vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
X1    1 984 46.47 17.02     45   45.49 17.79  18  99    81 0.45    -0.42 0.54

Para tomar decisiones no basta con calcular: hay que saber qué medir. Estos indicadores se clasifican en dos familias:

Medidas de tendencia central, ¿dónde está el “centro”?

Ayudan a entender el valor típico de la muestra.

  • Media: El promedio aritmético. Es el “centro de gravedad”, aunque conviene tener cuidado: si existen pocos casos con valores muy altos (como ingresos millonarios), la media se verá distorsionada.
  • Mediana: El valor que deja al 50% de la muestra por debajo y al 50% por encima. Es robusta: no se deja engañar por valores extremos.
  • Error estándar de la media: Indica la precisión de la media muestral respecto a la población real.

Medidas de dispersión, ¿cómo son los datos de variados?

Indican si los datos están muy concentrados en torno a la media o si hay mucha variabilidad.

  • Desviación Estándar: La medida más clásica. En una distribución normal, permite predecir dónde se encuentra la mayoría de los datos.
  • Varianza: La desviación al cuadrado. Técnicamente crucial, aunque menos intuitiva para interpretar en marketing.
  • Median Absolute Deviation (MAD): La compañera de la mediana. Mide la dispersión real ignorando el ruido de los casos extremos. Es una herramienta clave para detectar la variabilidad real.
  • Rango e Intervalos (Min, Max, Quartiles): Indican dónde empiezan y terminan los datos. El Rango Intercuartílico (IQR) es especialmente útil porque ofrece el rango del “50% central” de los datos, eliminando los extremos.

La distribución normal, concepto de normalidad y relación con la muestra

Se introduce ahora un concepto muy importante: la distribución normal y su relevancia en la investigación de mercados y en el trabajo con muestras.

La distribución normal, o Campana de Gauss, no es solo un gráfico teórico: es la herramienta que permite a los investigadores de mercados realizar inferencias, pasando de “lo que dice la muestra” a “lo que probablemente ocurre en todo el mercado”.

¿Por qué es tan relevante en la investigación?

  1. La ley de los errores: En una muestra aleatoria, la mayoría de las observaciones se agrupan en torno al centro (el valor real o la media). Los errores de medición se distribuyen de forma simétrica: es tan probable que una estimación sea un poco mayor como un poco menor que el valor real.
  2. El poder de las desviaciones (\(\sigma\)): La imagen muestra cómo se distribuye la probabilidad en función de la desviación estándar (\(\sigma\)):
    • Dentro de \(\pm 1\sigma\): Se encuentra aproximadamente el 68% de los datos. Es la “zona central” o lo más común.
    • Dentro de \(\pm 2\sigma\): Se encuentra el 95% de los casos. En investigación de mercados, este es el estándar de confianza habitual.
    • Más allá de \(\pm 3\sigma\): Solo queda el 0.2% de los datos (la suma de las colas extremas). Un dato que cae aquí es una anomalía estadística muy improbable.

Esta curva permite cuantificar la incertidumbre. Al reportar una media de satisfacción o intención de compra, gracias a la distribución normal puede añadirse un margen de error y afirmar con confianza: “existe un 95% de seguridad de que el valor real del mercado se encuentra en este intervalo”.

Sin este modelo, se estarían dando números aislados sin saber qué tan fiables son. La curva normal es lo que transforma una simple medición en un dato científicamente robusto y generalizable.

Una vez visualizado el histograma, es necesario cuantificar qué tan lejos está la distribución de la forma ideal (la curva normal). Para ello se utilizan dos indicadores:

Asimetría (Skewness)

La asimetría indica si la distribución es equilibrada o si está “estirada” hacia uno de los lados.

  • Simétrica (valor 0): Media, mediana y moda coinciden. Es la forma perfecta de la curva normal.
  • Asimetría positiva: La cola se extiende hacia la derecha (valores altos). Es muy común en datos de ingresos o tiempo de navegación: la mayoría está en valores bajos, pero hay unos pocos casos extremos que elevan la media.
  • Asimetría negativa: La cola se extiende hacia la izquierda (valores bajos). Indica que la mayoría de los casos se concentran en la parte alta.

Curtosis (Kurtosis)

La curtosis no mide hacia dónde se inclina la curva, sino qué tan “puntiaguda” es y, sobre todo, cuánta importancia tienen los valores extremos (outliers).

  • Mesocúrtica (valor 0): Tiene la forma de la distribución normal estándar.
  • Leptocúrtica (Curtosis positiva): La curva es más estrecha y puntiaguda. Indica una mayor concentración de datos cerca del centro, pero también una mayor presencia de valores extremos en las colas.
  • Platicúrtica (Curtosis negativa): La curva es más “achatada”. Indica una mayor dispersión de los datos; no hay una concentración tan clara en el centro.

Importancia en IM

Muchos de los tests estadísticos utilizados en el máster (como las pruebas de medias) asumen que los datos son simétricos y con una curtosis moderada. Si al calcular la asimetría o la curtosis se obtienen valores muy elevados, esto indica que: 1. la muestra puede tener anomalías (outliers) que conviene investigar; 2. quizás sea necesario aplicar una transformación matemática a la variable o utilizar tests no paramétricos más robustos.

En R, el diagnóstico es inmediato: al ejecutar la función describe() del paquete psych o get_summary_stats(), aparecen estos valores. Un valor de asimetría o curtosis que supere el doble de su error estándar es una señal de alerta clara: la variable no se comporta de forma “normal”.

# Generate detailed descriptive statistics for the 'age' variable
# The 'describe' function from the 'psych' package is an excellent alternative to SPSS,
# providing a comprehensive summary that includes mean, standard deviation, median, 
# as well as skewness and kurtosis (essential for assessing normality)
psych::describe(gssnet1$age)
   vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
X1    1 984 46.47 17.02     45   45.49 17.79  18  99    81 0.45    -0.42 0.54

Podemos ver con un ejemplo donde los datos están forzados, las diferentes situaciones.

Seis situaciones de asimetría y curtosis
  • La asimetría indica hacia dónde se desplaza el sesgo, mientras que la curtosis indica la peligrosidad de los extremos.
  • Resulta útil aplicar la regla empírica: no se busca el cero perfecto, sino la ausencia de sesgos significativos que invaliden el análisis.

Preocupaciones del analista de datos

Valores perdidos

En investigación, es casi imposible trabajar con bases de datos perfectas. Los valores perdidos (Missing Values) son una realidad cotidiana. Sin embargo, no todos los vacíos tienen la misma naturaleza, y la forma de tratarlos determina la validez de las conclusiones.

¿Por qué faltan los datos?

Antes de actuar, conviene investigar. Lo más importante no es cuántos datos faltan, sino el patrón de esa ausencia:

  • Aleatoriedad: ¿faltan los datos al azar? En ese caso, el impacto suele ser mínimo.
  • Patrones sistemáticos: ¿faltan datos en una variable específica según el perfil del encuestado? Aquí reside el peligro: si un segmento ignora sistemáticamente una pregunta, los resultados presentarán un sesgo importante que debe corregirse.

El primer paso es siempre limpiar: eliminar errores de registro y detectar valores fuera de rango. A continuación se cuantifica el impacto. Herramientas como las tablas cruzadas (crosstabs) permiten ver si existe una correlación entre tener datos perdidos en una variable y el comportamiento en otras variables.

Métodos de corrección

Si el volumen de pérdida es significativo, es necesario aplicar un método de imputación para “rellenar” los huecos:

  • Eliminación: La forma más drástica. Consiste en eliminar casos o variables incompletas (con la consecuencia de reducir la muestra).
  • Imputación simple: Sustituir por la media o valores aleatorios. Útil, pero puede reducir la variabilidad real de los datos.
  • Imputación avanzada: Métodos basados en regresión o imputación múltiple, que estiman el valor perdido a partir de la información disponible del mismo encuestado.

La imputación no es magia: es una estimación. Conviene comparar siempre los resultados antes y después de la imputación. Si la diferencia es drástica, significa que los datos perdidos ocultaban un comportamiento del mercado que merece ser analizado por sí solo.

Valores atípicos (outliers)

Identificación visual

El diagrama de caja o Box-Whisker es una representación visual que resume una variable a través de sus cuartiles. Mientras que el histograma muestra la “forma” de toda la distribución, el boxplot es más “quirúrgico”: está diseñado específicamente para detectar valores atípicos (outliers).

TipComponentes clave del gráfico
  • La Caja: Representa el 50% central de los datos. El borde inferior es el primer cuartil (Q1) y el superior es el tercero (Q3). La línea central es la mediana.
  • Los Bigotes (Whiskers): Marcan el límite hasta donde consideramos que los datos son “normales”.
  • Los Puntos (Outliers): Cualquier dato que caiga fuera de los límites calculados (Q3 + 1.5RIC o Q1 - 1.5RIC) aparece como un punto aislado.

R permite generar esta radiografía de los datos con una única función:

# Create a standard box-and-whisker plot for the 'age' variable
# This visualization is crucial for understanding the data spread and quickly 
# identifying outliers
boxplot(gssnet1$age)

# Simple boxplot for the 'age' variable
ggplot(gssnet1, aes(y = age)) +
  geom_boxplot(fill = "steelblue", alpha = 0.7) +
  labs(title = "Distribución de la edad", y = "Edad") +
  theme_minimal(base_size = 12) +
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Tip

Un punto fuera de los bigotes no debe eliminarse sin más. ¿Es un error de registro (por ejemplo, una edad imposible)? ¿O es un cliente real con un comportamiento extremo? Los outliers a menudo contienen las historias más interesantes de los datos de mercado.

Igual que hicims antes con las distribuciones normales, aqui hacemos un ejemplo de boxplot igual que el de muestra. No entregamos el código.

Un outlier es un caso con un valor tan extremo que se aleja del comportamiento global de la muestra. Su detección es vital porque, aunque sean pocos, pueden distorsionar drásticamente el cálculo de medias y la precisión de los modelos.

Antes de tomar cualquier decisión, conviene clasificar el outlier:

  • Errores: Datos mal registrados o inconsistencias durante la carga.
  • Sesgos intencionados: Respuestas deliberadamente falsas o poco serias en encuestas.
  • Errores de muestreo: Individuos que no pertenecen realmente al perfil de mercado que estamos estudiando.
  • Outliers legítimos: Casos reales, aunque extremos. Son los “clientes de alto valor” o “usuarios intensivos” que, lejos de ser eliminados, suelen ser los más interesantes para el negocio.

Detección

  • Univariante: Se detectan valores extremos en una sola variable (por ejemplo, alguien que gasta mucho más que el resto).
  • Bivariante y multivariante: Se detectan anomalías en la combinación de variables (por ejemplo, alguien con una edad muy baja pero unos ingresos muy altos).

El outlier plantea una pregunta, no una solución automática. Eliminar un dato es una medida irreversible que requiere una justificación clara: ¿este dato extremo es una mentira del sistema o una verdad incómoda del mercado?

Estandarización o tipificación

Para decidir qué es un valor extremo, los datos se estandarizan (transformándolos a una distribución con media 0 y desviación 1). Como regla general, un caso que se aleja más de 3 desviaciones típicas del centro es estadísticamente sospechoso.

¿Cómo podría, por ejemplo, estandarizarse la variable age de gssnet1 (aunque no es necesario, pero a título ilustrativo)?

# --- Step 1: Get the mean and standard deviation of 'age' ---
media = mean(gssnet1$age, na.rm = TRUE)
desviacion = sd(gssnet1$age, na.rm = TRUE)

# --- Step 2: Apply the Z-score formula: Z = (x - mean) / sd ---
# Each value tells us how many standard deviations a respondent's age
# is above (positive) or below (negative) the sample mean
gssnet1$valor_z <- round((gssnet1$age - media) / desviacion,3)

# --- Step 3: Inspect the new standardized variable ---
glimpse(gssnet1$valor_z)
Class 'labelled' num [1:984] -0.967 -0.439 1.5 -0.321 -1.32 ...
   .. .. LABEL: Age of respondent 
   .. .. VALUE LABELS [1:2]: 98=DK, 99=NA 
# Note: fre() works best with categorical/discrete variables.
# On a continuous variable like 'valor_z' it will list one row per unique
# value, so the table will be long — useful only to spot-check extreme values
head(fre(gssnet1$valor_z),10)
Age of respondent  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 -1.672  10 1.0 1.0 1.0 1.0
 -1.614  10 1.0 1.0 1.0 2.0
 -1.555  6 0.6 0.6 0.6 2.6
 -1.496  13 1.3 1.3 1.3 4.0
 -1.437  9 0.9 0.9 0.9 4.9
 -1.379  18 1.8 1.8 1.8 6.7
 -1.32  26 2.6 2.6 2.6 9.3
 -1.261  21 2.1 2.1 2.1 11.5
 -1.202  20 2.0 2.0 2.0 13.5
 -1.144  17 1.7 1.7 1.7 15.2
tail(fre(gssnet1$valor_z),10)
Age of respondent  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 2.146  4 0.4 0.4 0.4 97.8
 2.205  3 0.3 0.3 0.3 98.1
 2.263  4 0.4 0.4 0.4 98.5
 2.322  3 0.3 0.3 0.3 98.8
 2.381  1 0.1 0.1 0.1 98.9
 2.44  2 0.2 0.2 0.2 99.1
 2.498  5 0.5 0.5 0.5 99.6
 3.086  4 0.4 0.4 0.4 100.0
 #Total  984 100 100 100
 <NA>  0 0.0

Y se caracterizan ahora sus valores…

psych::describe(gssnet1$valor_z)
   vars   n mean sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 984    0  1  -0.09   -0.06 1.05 -1.67 3.09  4.76 0.45    -0.42 0.03

Demos paso adelante, y continuamos.