Gabor-Granger, en busca del precio óptimo

Author

Roberto Gil-Saura

Published

August 1, 2025

Introducción

Fijar el precio de un producto es una de las decisiones más críticas en marketing y estrategia empresarial. Un precio demasiado alto puede disuadir a clientes potenciales, mientras que uno demasiado bajo puede dejar beneficios sobre la mesa o devaluar la percepción del producto. ¿Cómo encontrar ese “punto dulce” donde se maximizan los ingresos?

Existen múltiples metodologías para abordar esta pregunta, y una de las más directas y efectivas es la técnica Gabor-Granger. Este método, desarrollado en la década de 1960, se basa en una premisa simple pero poderosa: preguntar directamente a los consumidores cuánto están dispuestos a pagar.

¿Qué es la técnica Gabor-Granger?

La técnica Gabor-Granger es un modelo de investigación de precios que mide la sensibilidad al precio de un producto al preguntar a los consumidores si comprarían dicho producto a diferentes niveles de precio. Su objetivo principal es construir una curva de demanda y, a partir de ella, una curva de ingresos para identificar el precio que maximiza los beneficios (Gabor & Granger, 1966).

El procedimiento es secuencial:

  1. Definir un rango de precios: Se selecciona un conjunto de precios plausibles para el producto, desde un mínimo hasta un máximo.
  2. Encuestar a los consumidores: A cada participante se le presenta el producto y se le pregunta si lo compraría a un precio inicial, seleccionado aleatoriamente del rango.
  3. Ajustar el precio:
    • Si la respuesta es “Sí”, se le vuelve a preguntar con un precio más alto de la lista.
    • Si la respuesta es “No”, se le pregunta con un precio más bajo.
  4. Identificar el punto de inflexión: El proceso se repite hasta encontrar el precio más alto que cada consumidor está dispuesto a pagar (su “precio de reserva”).
  5. Construir las curvas de demanda e ingresos: Con los datos agregados de todos los encuestados, se determina cuántas personas comprarían el producto a cada nivel de precio, lo que permite calcular los ingresos potenciales para cada punto.

Una de sus grandes ventajas es su simplicidad conceptual y de implementación, lo que la convierte en una herramienta muy popular en la investigación de mercados (Malhotra, 2019).

Ventajas y limitaciones

Como toda técnica, Gabor-Granger tiene sus fortalezas y debilidades.

Ventajas:

  • Claridad: Proporciona una respuesta clara y directa sobre el precio que maximiza los ingresos.
  • Simplicidad: Es fácil de explicar a los stakeholders y relativamente sencillo de implementar en una encuesta.
  • Eficiencia: Permite obtener una curva de demanda con un número relativamente bajo de preguntas.

Limitaciones:

  • No considera a la competencia: El método evalúa el producto de forma aislada, sin tener en cuenta los precios de los competidores, un factor crucial en las decisiones de compra reales (Nagle & Müller, 2018).
  • Sesgo hipotético: Lo que los consumidores dicen que pagarán en una encuesta no siempre coincide con su comportamiento de compra real en un mercado.
  • Sensibilidad al rango de precios: Los resultados pueden verse influenciados por los precios iniciales mostrados a los encuestados.

A pesar de sus limitaciones, es una herramienta excelente para productos nuevos o para obtener una primera estimación robusta de la elasticidad de la demanda.

Ejemplo con R: precio de una botella de agua reutilizable

Para ilustrar el método, vamos a utilizar el código R que hemos desarrollado. Nuestro caso de estudio es encontrar el precio óptimo para una nueva botella de agua reutilizable. Hemos encuestado a 100 personas y hemos determinado el precio máximo que estarían dispuestas a pagar.

El siguiente bloque de código carga las librerías necesarias y prepara el entorno.

Code
# Gabor-Granger Pricing Analysis Example
# This script calculates the optimal price point by analyzing demand and potential revenue.
# It includes the calculation of price elasticity of demand and visualizes the results
# on a dual-axis chart.

# --- STEP 1: Setup ---

# Install and load necessary libraries
# If you don't have them installed, uncomment the lines below and run them once.
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("scales")

library(dplyr)
library(ggplot2)
library(scales)

Ahora, definimos los datos y realizamos el análisis completo, incluyendo el cálculo de la demanda, los ingresos y la elasticidad.

Code
# --- STEP 2: Define the Data ---

# The price points to be tested
prices <- c(30, 25, 20, 15, 10)

# The number of respondents whose MAXIMUM willingness-to-pay is the corresponding price.
# Note: The sum is 93, as 7 out of 100 respondents would not buy even at the lowest price.
max_buyers_at_price <- c(15, 25, 30, 20, 3) 

# Total number of respondents in the survey
total_respondents <- 100

# Create the initial data frame for analysis
gabor_granger_df <- data.frame(
  price = prices,
  max_buyers = max_buyers_at_price
)

# --- STEP 3: Calculate Demand, Revenue, and Elasticity ---

analysis_df <- gabor_granger_df %>%
  arrange(desc(price)) %>%
  mutate(
    cumulative_buyers = cumsum(max_buyers),
    demand_pct = cumulative_buyers / total_respondents,
    potential_revenue = price * cumulative_buyers
  ) %>%
  arrange(price) %>%
  mutate(
    price_change_pct = (price - lag(price)) / ((price + lag(price)) / 2),
    quantity_change_pct = (cumulative_buyers - lag(cumulative_buyers)) / ((cumulative_buyers + lag(cumulative_buyers)) / 2),
    elasticity = quantity_change_pct / price_change_pct
  ) %>%
  arrange(desc(price))

# --- STEP 4: Display the Results Table ---

# Identify the optimal price point that maximizes revenue
optimal_price_point <- analysis_df %>%
  filter(potential_revenue == max(potential_revenue))

# Print results using a better format for the blog, like knitr::kable
knitr::kable(
  analysis_df %>%
    select(price, cumulative_buyers, potential_revenue, elasticity) %>%
    mutate(elasticity = round(elasticity, 2)),
  caption = "Tabla de Resultados del Análisis Gabor-Granger"
)
Tabla de Resultados del Análisis Gabor-Granger
price cumulative_buyers potential_revenue elasticity
30 15 450 -5.00
25 40 1000 -2.45
20 70 1400 -0.88
15 90 1350 -0.08
10 93 930 NA

Análisis de resultados

La tabla anterior nos muestra los datos clave. La columna potential_revenue (cumulative_buyers * price) alcanza su máximo en 1400 € cuando el precio es de 20 €. Este es nuestro precio óptimo.

La columna elasticity 8puedes ver su cálculo en el código) nos da la justificación teórica:

  • Entre 15 € y 20 € (Elasticidad = -0.88): La demanda es inelástica (|E| < 1). En esta zona, un aumento de precio incrementa los ingresos totales porque la pérdida de clientes es proporcionalmente menor que la ganancia por precio.
  • Entre 20 € y 25 € (Elasticidad = -2.45): La demanda se vuelve elástica (|E| > 1). Aquí, un aumento de precio provoca una caída tan grande en la demanda que los ingresos totales disminuyen.

El precio óptimo de 20 € es, por tanto, el punto de inflexión donde la demanda pasa de ser inelástica a elástica.

Visualización: curva de ingresos y demanda

Un gráfico con doble eje nos permite visualizar esta relación de forma muy clara.

Code
# To create a dual-axis chart, we need to scale the second variable (demand)
# to fit the range of the first variable (revenue).
scale_factor <- max(analysis_df$potential_revenue) / max(analysis_df$demand_pct)

ggplot(analysis_df, aes(x = price)) +
  geom_line(aes(y = potential_revenue, color = "Ingresos Potenciales"), size = 1.2) +
  geom_point(aes(y = potential_revenue, color = "Ingresos Potenciales"), size = 3) +
  geom_line(aes(y = demand_pct * scale_factor, color = "Demanda"), size = 1.2) +
  geom_point(aes(y = demand_pct * scale_factor, color = "Demanda"), size = 3) +
  geom_point(data = optimal_price_point, aes(x = price, y = potential_revenue), 
             color = "green", size = 6, shape = 18) +
  geom_text(data = optimal_price_point, aes(x = price, y = potential_revenue, label = "Precio Óptimo"), 
            vjust = -1.5, color = "green", fontface = "bold") +
  scale_x_reverse(breaks = analysis_df$price) +
  scale_y_continuous(
    name = "Ingresos Potenciales (€)",
    labels = dollar_format(prefix = "€"),
    sec.axis = sec_axis(~ . / scale_factor, 
                        name = "Demanda (%)", 
                        labels = percent_format())
  ) +
  labs(
    title = "Análisis de Precios Gabor-Granger",
    subtitle = "Precio Óptimo vs. Curva de Demanda",
    x = "Precio (€)",
    y = "Ingresos Potenciales (€)",
    color = "Métrica"
  ) +
  scale_color_manual(values = c("Ingresos Potenciales" = "darkgreen", "Demanda" = "steelblue")) +
  theme_minimal() +
  theme(legend.position = "top", plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))

Gráfico de doble eje que muestra la curva de ingresos potenciales (verde) y la curva de demanda (azul). El punto rojo marca el precio óptimo.

El gráfico confirma visualmente nuestras conclusiones. La curva de ingresos (verde) alcanza su pico en 20 €, mientras que la curva de demanda (azul) muestra una caída constante a medida que aumenta el precio.

Conclusión

La técnica Gabor-Granger es una herramienta robusta y directa para la optimización de precios. Aunque debe complementarse con análisis competitivos y de comportamiento del consumidor, proporciona un punto de partida sólido y basado en datos para una de las decisiones más importantes de cualquier negocio.

En nuestro próximo post, exploraremos otro método popular para la investigación de precios: el Price Sensitivity Meter de Van Westendorp, que aborda la pregunta del precio desde un ángulo psicológico diferente.

Referencias

Gabor, A., & Granger, C. W. J. (1966). Price as an Indicator of Quality: Report on an Enquiry. Economica, 33(129), 43–70.

Malhotra, N. K. (2019). Marketing Research: An Applied Orientation (7th ed.). Pearson.

Nagle, T. T., & Müller, G. (2018). The Strategy and Tactics of Pricing: A Guide to Growing More Profitably (6th ed.). Routledge.

Roll, O., & Tybout, A. M. (2011). Pricing and Willingness to Pay. In Review of Marketing Research (pp. 165-201). Emerald Group Publishing Limited.