Vai al contenuto principale

La curva di domanda: come comprendere la relazione tra prezzo e vendite

Scopri come usare la curva di domanda per svelare la relazione tra prezzo e quantità venduta e usa questa conoscenza per guidare decisioni più intelligenti in mercati competitivi. Esplora metodi per trovare il prezzo ottimale che massimizza i ricavi complessivi.
· 14 min leggi

Scopri con l'IA

La curva di domanda è uno degli strumenti più interessanti e utili per comprendere il comportamento dei consumatori e le strategie di prezzo. È comunemente usata per analizzare la relazione tra il prezzo di un bene o servizio e la quantità venduta, anche se in altri contesti può essere utilizzata per analizzare le dinamiche di mercato o prevedere i ricavi.

In questo articolo scopriremo tutto sulla curva di domanda. Esploreremo sia le caratteristiche che la definiscono sia i termini correlati. Più avanti, troverò anche il tempo per mostrarti come estendere la curva di domanda per trovare il prezzo ottimale che massimizza il profitto: un utile esercizio di algebra applicata per creare una tecnica di ottimizzazione elementare che ho trovato utile nel mio lavoro.

Seguendo questi metodi, ti garantisco che non solo sarai in grado di prendere decisioni sulle strategie di prezzo, ma saprai anche spiegare chiaramente i metodi in modo da creare la base per progetti futuri. Anche se in questo articolo userò R e SQL, sappi che puoi applicare gli stessi metodi con altri strumenti diffusi, come Excel, Python, Tableau e Power BI. Infine, voglio dirti che, per diventare davvero un esperto di pricing, ti consiglio vivamente il nostro corso Forecasting Product Demand in R.

Cos'è una curva di domanda?

La curva di domanda è un concetto fondamentale nella strategia di prezzo e nell'economia in generale. È un modo visivo efficace per rappresentare la relazione tra il prezzo di un bene o servizio e la quantità domandata dai consumatori. I componenti principali di una curva di domanda includono il prezzo su un asse e la quantità domandata sull'altro. Ecco un esempio:

esempio base di curva di domanda

Una forma base di curva di domanda. Immagine dell'autore.

Componenti di una curva di domanda

Nel grafico sopra, noterai qualcosa di abbastanza ovvio a prima vista: prezzo e quantità venduta hanno una relazione inversa. Più formalmente, potremmo dire che la curva di domanda è strettamente legata a quello che è noto come legge della domanda, secondo cui, a parità di condizioni, quando il prezzo di un prodotto diminuisce, la quantità domandata aumenta. A volte, questa stessa idea è chiamata relazione prezzo-quantità, cioè il prezzo di un prodotto influenza direttamente quanto i consumatori sono disposti a comprare.

Tuttavia, questo particolare grafico mostra anche qualcosa di meno ovvio: la quantità venduta cala più rapidamente quando il prezzo è basso e si appiattisce quando il prezzo è alto. Questa curvatura rimanda ad altri concetti, come elasticità variabile e utilità marginale decrescente, che tratterò nella prossima sezione.

Elasticità-prezzo della domanda

Un concetto chiave che emerge dalla relazione inversa tra prezzo e quantità domandata è l'elasticità-prezzo della domanda, che misura quanto è sensibile la quantità domandata a una variazione di prezzo. Formalmente, l'elasticità è spesso calcolata come:

equazione dell'elasticità

Un prodotto si dice avere domanda elastica se una variazione relativamente piccola del prezzo porta a una grande variazione della quantità domandata. Elettronica di fascia alta o borse di marca potrebbero vedere un forte calo della domanda anche per piccoli aumenti di prezzo, perché i consumatori possono trovare sostituti.

Un prodotto ha domanda anielastica se grandi variazioni di prezzo portano a cambiamenti relativamente piccoli nella quantità domandata. Necessità come benzina o medicinali sono esempi classici. Anche se il prezzo aumenta, i consumatori sono comunque costretti a comprare quasi la stessa quantità perché non ci sono alternative.

Tipi di curve di domanda

Sebbene abbia mostrato un esempio di curva di domanda, sappi che può assumere molte forme diverse a seconda delle caratteristiche del mercato, del prodotto e delle preferenze dei consumatori. Pur essendo sempre inclinata verso il basso, questa relazione non deve seguire una singola forma matematica.

Curve di domanda lineari

Le curve di domanda lineari presentano un tasso di variazione costante tra prezzo e quantità. Sono comuni in scenari di mercato semplici. Sono rappresentate da una linea retta.

Curve di domanda non lineari

Come abbiamo visto, le curve di domanda non sono sempre linee perfettamente rette perché la relazione tra prezzo e quantità non è sempre ben rappresentata da una semplice funzione lineare uno-a-uno. Ci sono diversi motivi, alcuni dei quali ho iniziato a citare prima:

  • Elasticità variabile: L'elasticità della domanda, ossia quanto la domanda è sensibile a una variazione di prezzo, spesso varia nei diversi punti della curva. Ad esempio, quando i prezzi sono molto alti, gli acquirenti possono reagire in modo deciso anche a un piccolo ribasso. 
  • Utilità marginale decrescente: In molti modelli economici, ogni unità aggiuntiva di un bene fornisce un po' meno utilità al consumatore rispetto alla precedente. Di conseguenza, i consumatori potrebbero essere disposti ad acquistare molto di più se i prezzi scendono da livelli alti a medi, ma oltre una certa soglia ulteriori ribassi non generano lo stesso grande aumento nella quantità desiderata o venduta. 

Nella pratica, le curve di domanda non lineari possono essere più realistiche perché rappresentano meglio un tasso di variazione variabile. Dopotutto, i dati del mondo reale sono disordinati e il comportamento dei consumatori è complesso. Detto questo, spesso esistono modi per linearizzare una curva non lineare, come mostrerò più avanti.

Curva di domanda individuale vs. curva di domanda di mercato

Possiamo anche confrontare le differenze di domanda a livello di consumatore e di mercato. Una curva di domanda individuale rappresenta la relazione tra il prezzo di un prodotto e la quantità domandata da un singolo consumatore. Riflette le preferenze personali e la disponibilità a pagare.

Una curva di domanda di mercato combina la domanda di tutti i consumatori in un mercato. Aggrega le curve di domanda individuali, mostrando la quantità totale domandata a ciascun livello di prezzo. Per come sono costruite, le curve di domanda di mercato sono utilizzate dalle aziende per valutare il potenziale del mercato.

Curva di domanda vs. curva di offerta

Se stai studiando le curve di domanda, potresti aver sentito parlare anche della cosiddetta curva di offerta. In sostanza, curva di offerta e curva di domanda sono due facce della stessa medaglia. Mentre la curva di domanda mostra quanto i consumatori sono disposti a comprare a diversi prezzi, la curva di offerta rappresenta quanto i produttori sono disposti a vendere agli stessi prezzi.

Se tracci su uno stesso grafico sia una curva di domanda sia una curva di offerta, vedrai un punto in cui si incrociano. L'intersezione di queste curve, nota come punto di equilibrio, è considerata determinare il prezzo e la quantità di mercato. Quindi, quando la domanda supera l'offerta, i prezzi tendono a salire, incentivando i produttori a produrre di più. Ma quando l'offerta supera la domanda, i prezzi scendono, favorendo un aumento degli acquisti.

curva di domanda vs. curva di offerta

Curva di domanda vs. curva di offerta. Immagine dell'autore.

Usare una curva di domanda nella data science

Ci sono molti modi diversi per utilizzare le curve di domanda per prendere decisioni di business. Qui ti guiderò attraverso un modo specifico per renderle utili: useremo i nostri dati per creare sia una curva di domanda sia un modello di domanda utilizzando una tecnica di regressione quadratica. Ti mostrerò come puoi utilizzare questa tecnica sia in R sia in SQL, dove può essere impiegata in dashboard interattive di Power BI o Tableau.

Prima di continuare, voglio dire che, se stai leggendo e pensi di voler potenziare un intero team in una volta, ad esempio un team o un reparto di business analyst o data scientist, DataCamp for Business è qui per aiutarti. Aiuteremo il tuo team a sviluppare competenze e tecniche utili nel tuo specifico contesto aziendale. Molti progetti di analisi dati complessi richiedono più contributori: contatta il nostro team DataCamp per saperne di più.

Usare una curva di domanda per analizzare i prezzi in R

Creiamo e analizziamo una curva di domanda usando R. Per simulare un dataset, ho creato una curva di tipo decadimento esponenziale con rumore casuale attorno. L'idea è che ogni punto dati rappresenta una settimana di vendite per un concessionario auto, in cui il concessionario propone diverse promozioni e prova diversi livelli di prezzo per lo stesso tipo di auto nel tentativo di aumentare le vendite.

# Load necessary library
library(tidyverse)

# Define parameters for the exponential decay
a <- 100  # Initial value
b <- 0.5  # Decay rate

# Define a realistic price range
price <- seq(10000, 40000, length.out = 200)  # Price from $10,000 to $40,000

# Calculate the exponential decay
y <- a * exp(-b * (price / 10000))  # Adjust decay rate to match price scaling

# Add mixed noise (additive + slight proportional)
set.seed(42)  # For reproducibility

additive_noise <- rnorm(length(y), mean = 0, sd = 1)  # Constant additive noise
proportional_noise <- rnorm(length(y), mean = 0, sd = 0.05 * y)  # Small proportional noise

y_noisy <- y + additive_noise + proportional_noise

# Ensure no negative values (optional, as sales can't be negative)
y_noisy[y_noisy < 0] <- 0.01

# Combine price and noisy y into a data frame
demand_curve_data <- data.frame(
  price = price,
  quantity_sold = y_noisy
)

# Clean and prepare the data
demand_curve_data <- demand_curve_data %>%
  mutate(quantity_sold = round(quantity_sold, 0)) %>%
  filter(quantity_sold != 0)

# Plot the noisy exponential decay
ggplot(demand_curve_data, aes(x = price, y = quantity_sold)) +
  geom_point(color = '#203147', alpha = 0.6) +
  geom_line(
    aes(y = a * exp(-b * (price / 10000))),
    color = '#01ef63',
    size = 1.2,
    linetype = "dashed"
  ) +
  labs(
    title = "Cars Sold",
    subtitle = "Demand Curve (Cars Sold)",
    x = "Price ($)",
    y = "Quantity Sold"
  ) +
  scale_x_continuous(labels = scales::dollar_format())  # Format x-axis as dollars

curva di domanda con rumoreCurva di domanda con rumore. Immagine dell'autore

Qui ho rappresentato graficamente la relazione tra prezzo e quantità venduta, usando punti a dispersione per rappresentare la variazione naturale, che può essere causata da molte ragioni diverse. 

Leggendo questo grafico, vediamo che all'aumentare del prezzo le vendite diminuiscono, e questa relazione è più sensibile in alcune fasce di prezzo rispetto ad altre. Ma, a seconda di ciò che stai facendo con i dati, questa intuizione generale potrebbe non bastare per informare una decisione operativa. Per esperienza, i capi spesso vogliono vedere un insight normativo che dia una risposta concreta a una domanda di business più pressante. Una di queste è: Qual è il prezzo dell'auto che massimizza effettivamente i ricavi complessivi? 

Potremmo iniziare provando a fare qualche ipotesi guardando semplicemente il grafico. 

  • Nella fascia bassa, seguendo la linea verde, vediamo che la quantità venduta è 60 quando il prezzo sull'asse x è 10.000 $. Questo si traduce in 600.000 $ di ricavi totali. 
  • Nella fascia alta, vediamo la linea verde arrivare a circa 10 quando i valori x sono 40.000 $, pari a 400.000 $ di ricavi. 
  • Proprio nel mezzo, vediamo la linea verde toccare 30 quando il prezzo è 25.000 $. Questo equivale a 750.000 $.

Potresti iniziare a intuire che il prezzo che massimizza i ricavi complessivi è da qualche parte nel mezzo. Concettualmente ha senso: ci aspettiamo che prezzi molto bassi generino un volume alto ma ricavi relativamente contenuti, mentre prezzi molto alti generino molte meno vendite e comunque ricavi relativamente contenuti. Ma da qualche parte nel mezzo ci deve essere un prezzo ottimale che massimizza i ricavi.

Ora, invece di andare a occhio sul grafico, impariamo un modo migliore, più efficiente e solido per massimizzare i ricavi complessivi. Possiamo trovare il prezzo ottimale risolvendo un problema di ottimizzazione elementare. Creiamo prima un modello lineare, poi lo pieghiamo in una parabola e troviamo il punto più alto.

Il nostro primo passo è linearizzare la relazione. Poiché ho costruito tutto con una funzione a decadimento esponenziale, so che si linearizzerà bene prendendo il logaritmo della quantità venduta. Per semplicità, ignoriamo qualsiasi eteroschedasticità. 

# Create a linearized version of the data
demand_curve_data$log_quantity_sold <- log(demand_curve_data$quantity_sold)

# Plot the linearized relationship
ggplot(demand_curve_data, aes(x = price, y = log_quantity_sold)) +
  geom_point(color = '#203147', alpha = 0.6) +
  geom_smooth(method = "lm", color = '#01ef63', se = FALSE) +
  labs(
    title = "Cars Sold",
    subtitle = "Demand Curve (Log Quantity Sold)",
    x = "Price ($)",
    y = "Log of Quantity Sold"
  ) +
  scale_x_continuous(labels = scales::dollar_format())  # Format x-axis as dollars

curva di domanda trasformata

Curva di domanda trasformata. Immagine dell'autore

Ora possiamo creare una nuova variabile chiamata revenue definita come price per log_quantity_sold. Nota: creiamo un oggetto di modello lineare usando la funzione lm() perché vogliamo accedere ai numeri associati ai coefficienti del modello. 

Per il passo successivo, inseriamo l'equazione del modello lineare nella nostra formula. Se non avessimo fatto la trasformazione log:

  • Questo significherebbe che la nostra equazione: revenue = price * quantity_sold può ora essere scritta come revenue = price * (b0 + b1 * price). 

  • Poi distribuiremmo i termini. Come si distribuiscono i termini in x(1-x) per ottenere x-x2, riscriveremmo la nostra equazione come revenue = b0 * Price + b1 * price2. 

Nota ora che avremmo revenue definita da un'equazione che ha price come termine al quadrato. Questo è davvero il punto chiave perché, tracciando price come termine al quadrato, abbiamo creato una funzione da massimizzare.

Tuttavia, poiché abbiamo una trasformazione log, dobbiamo fare un back-transform esponenziale del modello log-lineare.

  • Questo significa che la nostra equazione: revenue = price * log_quantity_sold ora sarà scritta come revenue = price * eb0 + b1 * price. 

  • Ora possiamo anche fattorizzare questa equazione in una nuova forma, se preferiamo: revenue=price * eb0​ * eb1​⋅price. Ma questa particolare equazione non si distribuisce allo stesso modo di un'equazione lineare o polinomiale perché la funzione esponenziale non consente di separare o distribuire i termini come i più standard termini algebrici sopra.

Ad ogni modo, andiamo avanti:

# Fit a linear model to the log-transformed quantity sold
model <- lm(log_quantity_sold ~ price, data = demand_curve_data)

# Create a revenue model based on the linear model coefficients
revenue_model_data <- demand_curve_data %>%
  mutate(
    revenue_model = price * exp(coef(model)[1] + coef(model)[2] * price)  # Modeled revenue
  )

# Plot the revenue model
ggplot(revenue_model_data, aes(x = price, y = revenue_model)) +
  geom_point(color = '#203147', alpha = 0.6) +  # Actual revenue points
  geom_line(color = '#01ef63', size = 1.2) +    # Revenue model line
  labs(
    title = "Car Sales",
    subtitle = "Revenue Model",
    x = "Price ($)",
    y = "Revenue ($)"
  ) +
  scale_y_continuous(labels = scales::dollar_format()) +  # Format y-axis as dollars
  theme_minimal() +  # Apply a minimal theme for aesthetics
  theme(
    text = element_text(family = "Arial", size = 12),
    plot.title = element_text(face = "bold", size = 16),
    plot.subtitle = element_text(size = 14)
  )

Modello di ricavi creato da una curva di domanda. Immagine dell'autore.

È interessante notare che, anche se il modello originale ha usato log⁡_quantity_sold, il grafico che abbiamo creato è interamente nelle scale originali di price e revenue. La trasformazione log influisce solo sul modello sottostante, e il nostro back-transform con e ha riportato il grafico sulla scala originale, così è ancora facile da interpretare.

Trovare dove la derivata è uguale a zero

Il nostro punto chiave finale è questo: il punto in cima alla parabola, dove la derivata è uguale a zero, sarà il prezzo teorico che massimizza i ricavi.

Potremmo ricordare che troviamo la derivata di un'equazione come 3x² + 2x moltiplicando per gli esponenti per ottenere 6x + 2. Lo stesso ragionamento si applica, ma ricorda, in questo esempio dobbiamo prima fare il back-transform dei valori log prima di formare la funzione di ricavo. Ritornando alla scala originale prima di trovare il massimo dei ricavi, sappiamo di stare trovando il prezzo che massimizza i ricavi effettivi, non una metrica trasformata. Quindi questa è la funzione di ricavo corretta da differenziare: revenue = price * e(b0 + b1 * price).

Lavoriamoci. Qui prendo i coefficienti del modello lineare. Definisco quindi una funzione di ricavo. Infine, calcolo il prezzo ottimale e ricavo le informazioni sui ricavi totali attesi associati.

# Model coefficients
b0 <- 4.596 # Intercept
b1 <- -4.974e-05 # Slope for price

# Define the revenue function
revenue <- function(P, b0, b1) {  
  P * exp(b0 + b1 * P)
}

# Calculate the optimal price (analytical solution from dR/dP = 0) - shortcut code here
(optimal_price <- -1 / b1)

# Calculate maximum revenue
(max_revenue <- revenue(optimal_price, b0, b1))
[1] 20104.54
[1] 732853.5

Potresti aver notato che avevo una riga di codice per il prezzo ottimale che non era ben spiegata nel contesto. Mi riferisco a questa parte del codice: (optimal_price <- -1 / b1). Lasciami mostrare in breve come ho scoperto che il prezzo ottimale è -1 diviso la pendenza.

Per prima cosa, dobbiamo ricordare la regola del prodotto in analisi, che afferma che, se la funzione di x "f di x" è uguale a u(x) per v(x), allora la derivata, che possiamo scrivere come f'(x), è uguale alla derivata della prima parte moltiplicata per la seconda, più la prima parte per la derivata della seconda. 

# the product rule in calculus 
f(x) = u(x) * v(x)
f'(x) = u'(x) * v(x) + u(x) * v'(x)

Ecco di nuovo la nostra equazione, insieme alla derivata:

# our equation:
revenue = price * e^(b0 + b1 * price)

# the derivative of our equation
derivative = 1 * e^(b0 + b1 * price) + price * b1 * e^(b0 + b1 * price)

So che la derivata di price qui è 1 perché è la variabile di cui stiamo trovando la derivata. "Di quanto cambia price al variare di price?" Be', è una relazione uno-a-uno.

Dall'altra parte, la derivata di e(b0 + b1 * price) non è pulita come quella di una semplice funzione, come 2x2, che ha come derivata 4x.

Nell'espressione con cui stiamo lavorando, l'esponente è un polinomio. Il trucco è guardare da vicino tutti i termini: per cominciare,

  • b0 è solo un valore singolo, quindi la derivata lì è zero

  • price ha derivata 1, come abbiamo già trattato.

  • b1 è il fattore di scala, quindi mettiamo quel numero davanti e, secondo la regola, lasciamo invariato l'esponente polinomiale.

Quindi la derivata di e(b0 + b1 * price) è b1 * e(b0 + b1 * price). Questo è noto come regola della catena, come mostro qui:

# the chain rule in calculus 
f(x) = x^g(x)
f'(x) = g'(x) * x^g(x)

L'ultima cosa è fare un po' di fattorizzazione.

L'algebra ci dice che queste sono uguali:

A + B * A = A(1+B)

E guardando da vicino la derivata con cui sto lavorando, mi accorgo che c'è una parte A e una parte B:

La "A" è e(b0 + b1 * price) e la "B" è price * b1. Quindi posso fattorizzare questo

e^(b0 + b1 * price) + price * b1 * e^(b0 + b1 * price)

in questo:

e^(b0 + b1 * price)(1 + price * b1)

Infine, devo porre questa derivata uguale a zero per trovare il punto in cui la pendenza smette di salire e inizia a scendere, cioè il vertice della parabola.

e^(b0 + b1 * price)(1 + price * b1) = 0

Come ultimo trucco, so che, quando A * B è uguale a zero, o A o B (o entrambe) devono essere uguali a zero. Ma per fortuna so che e(b0 + b1 * price) non può mai essere zero perché è un esponenziale. Se l'esponente fosse positivo, il numero sarebbe grande; se l'esponente fosse 0, il risultato sarebbe 1; se l'esponente fosse negativo, il risultato sarebbe una piccola frazione. Quindi posso scartare metà quando risolvo per lo zero.

L'unica cosa che resta è spostare i termini e risolvere per price.

(1 + b1 * price) = 0
b1 * price = -1
price = - 1 / b1

Ecco come ho trovato -1 / b1 da inserire nella nostra funzione personalizzata in R.

Ora, riprendendo da dove ci eravamo fermati, possiamo tracciare il prezzo ottimale e vedere i ricavi associati.

Il prezzo ottimale è 20.104,54 $, che produce ricavi totali attesi di circa 732.853,50 $. Dico 'circa' perché, se controlli i conti, stiamo assumendo 36,45 auto vendute, ma non si può vendere mezza auto.

ggplot(revenue_model_data, aes(x = price, y = revenue_model)) +
  geom_point() + geom_line(color = '#01ef63') +
  ggtitle("Car Sales") + labs(subtitle = "revenue model") +
  ylab("Revenue") +
  scale_y_continuous(labels = scales::dollar_format())  +
  geom_vline(xintercept = optimal_price, linetype = "dashed", color = '#203147') +
  geom_point(aes(x = optimal_price, y = max_revenue), color = '#203147', size = 3) 

Trovare il prezzo che massimizza i ricaviTrovare il prezzo che massimizza i ricavi. Immagine dell'autore.

In un altro workflow, potremmo persino estendere queste idee per considerare il profitto invece dei ricavi. Non svilupperò tutto qui, ma per farlo potremmo considerare profit = revenue - cost, dove cost è considerato come quantity * unit cost. Se il costo unitario è costante e la quantità può essere sostituita da un'espressione come 1 - price, otteniamo di nuovo una parabola rovesciata.

Se ti interessa approfondire come calcolo e derivate entrano nel machine learning, prova il nostro corso Introduction to Deep Learning with PyTorch, che esplora in dettaglio la discesa del gradiente nel contesto dell'ottimizzazione degli iperparametri. Il contesto è diverso, ma puoi applicare un pensiero simile. L'ottimizzazione, nelle sue diverse forme, come stai vedendo, è una competenza chiave nella data science, e la pratica aiuta.

Curva di domanda vs. curva di Laffer

Se hai studiato economia, potresti riconoscere questa parabola come qualcosa di simile alla curva di Laffer, un concetto in parte controverso che illustra come le aliquote fiscali influenzano le entrate fiscali del governo.

Considererei sia la curva di Laffer sia questa trasformazione sulla curva di domanda come problemi del tipo "massimizzare vs. tasso", ma la curva di Laffer è specifica alla tassazione: l'asse x rappresenterebbe l'aliquota fiscale (0%–100%) e l'asse y le entrate fiscali totali raccolte. Concettualmente, anche la curva di Laffer ha forma a U rovesciata perché, a livelli molto alti, potremmo considerare che se l'aliquota fosse troppo alta, produrrebbe zero entrate perché non ci sarebbe incentivo per individui o imprese a impegnarsi in attività tassabili. Gli economisti potrebbero non essere d'accordo su quella parte dell'"incentivo".

Curva di Laffer in Una pazza giornata di vacanza

La curva di Laffer in Una pazza giornata di vacanza. Fonte: YouTube

Usare una curva di domanda per analizzare i prezzi in SQL

Ora che abbiamo visto l'idea, voglio condividere anche uno script SQL che farà lo stesso lavoro. Questa funzione eseguirà una regressione di quantity_sold rispetto a price. Ti consentirà poi di trovare il prezzo ottimale per massimizzare i ricavi in base ai coefficienti della regressione e determinare il ricavo massimo corrispondente. 

Penso che lo script seguente sarà particolarmente utile nella creazione di dashboard dinamiche in Power BI o Tableau perché avrai aggiornamenti dei dati in tempo reale senza dover mettere niente offline.

Vedrai anche che ho usato un approccio manuale per trovare i coefficienti di regressione usando funzioni di aggregazione SQL, dato che la maggior parte dei dialetti SQL non dispone di funzioni di regressione specializzate. Potresti sorprendersi di sapere che la regressione lineare semplice funziona bene in SQL perché i coefficienti del modello per la regressione lineare semplice possono essere espressi in termini di correlazione, deviazione standard e valori medi tra x e y.

-- SQL script to perform linear regression on log(quantity_sold) vs price,
-- calculate the optimal price to maximize revenue, and determine the maximum revenue.
WITH regression_data AS (
  SELECT
    COUNT(*) AS N,
    SUM(price) AS sum_x,
    SUM(LOG(quantity_sold)) AS sum_y,
    SUM(price * LOG(quantity_sold)) AS sum_xy,
    SUM(price * price) AS sum_x2,
    SUM(LOG(quantity_sold) * LOG(quantity_sold)) AS sum_y2
  FROM sales_data
),
regression_coefficients AS (
  SELECT
    N,
    sum_x,
    sum_y,
    sum_xy,
    sum_x2,
    sum_y2,
    (N * sum_xy - sum_x * sum_y) / (N * sum_x2 - sum_x * sum_x) AS slope,
    (sum_y - ((N * sum_xy - sum_x * sum_y) / (N * sum_x2 - sum_x * sum_x)) * sum_x) / N AS intercept
  FROM regression_data
),
optimal_price AS (
  SELECT
    slope,
    intercept,
    (-1 / slope) AS optimal_P
  FROM regression_coefficients
),
max_revenue AS (
  SELECT
    optimal_P,
    slope,
    intercept,
    optimal_P * EXP(intercept + slope * optimal_P) AS max_R
  FROM optimal_price
)
SELECT
  optimal_P AS Optimal_Price,
  max_R AS Maximum_Revenue
FROM max_revenue;
Optimal_Price | Maximum_Revenue
------------- | ----------------
20104.32      | 402082.58

Tieni presente che lo script SQL fornito potrebbe richiedere aggiustamenti a seconda del dialetto SQL utilizzato, poiché la sintassi può variare. Inoltre, per la risoluzione dei problemi, assicurati che la tua tabella delle vendite contenga valori validi e positivi sia per price sia per quantity_sold, poiché valori negativi o zero possono causare errori. 

Inoltre, se volessi incorporare una trasformazione log, come abbiamo fatto nella sezione R, potresti farlo, ma, a seconda del tuo dialetto, la funzione di logaritmo naturale potrebbe chiamarsi diversamente, LN o LOG. In DuckDB, LN e LOG sono in realtà diversi: LN è il logaritmo naturale in base e, mentre LOG è in base 10. Se sei interessato a creare una curva di domanda per analizzare la relazione tra prezzo e vendite in SQL, guarda il mio code-along Analyzing Product Demand in SQL. Infine, direi che, per migliorare le tue competenze SQL come analyst, dovresti esplorare il career track Associate Data Analyst in SQL, così da sviluppare un set completo di strumenti.

 

Eccezioni alla curva di domanda

Ci sono eccezioni notevoli in cui il comportamento dei consumatori può deviare dallo schema standard della curva di domanda:

Beni di Giffen

I beni di Giffen sono un raro tipo di beni inferiori per i quali la legge della domanda non vale. Quando il prezzo di un bene di Giffen aumenta, i consumatori possono paradossalmente acquistarne di più invece che di meno. Ciò accade perché il bene rappresenta una parte così grande del budget del consumatore che, quando il prezzo aumenta, il consumatore non può più permettersi sostituti più desiderabili ed è costretto ad acquistare ancora più del bene di Giffen. Un classico (anche se dibattuto) esempio storico è l'aumento del prezzo del pane nel XIX secolo in alcuni luoghi (forse in Inghilterra), in cui le persone finirono per consumare più pane perché non potevano permettersi altri alimenti più costosi.

Beni di Veblen

I beni di Veblen sono prodotti di lusso o simboli di status — come borse di design, vini pregiati o orologi di alta gamma — la cui domanda aumenta al crescere del prezzo. Parte del loro fascino deriva dalla percezione che un prezzo più alto segnali esclusività o uno status sociale più elevato, rendendo il bene più desiderabile man mano che diventa più costoso. Puoi pensarlo come "consumo vistoso".

Altri casi particolari

  • Effetti bandwagon o di rete: Alcuni beni diventano più preziosi per ciascun consumatore man mano che più persone li usano (ad es. piattaforme di social media, alcuni ecosistemi software). La domanda può salire non solo per il prezzo, ma per la crescente popolarità o la dimensione della rete.
  • Effetto snob: Alcuni consumatori acquistano beni proprio perché poche altre persone li hanno. In questi casi, prezzi più bassi possono far sembrare il bene "meno esclusivo", riducendone l'attrattiva.
  • Asset speculativi o di investimento: Per asset come alcune criptovalute o materie prime, se il mercato crede che i prezzi continueranno a salire, la domanda può aumentare in risposta agli aumenti di prezzo, invece di diminuire.

In tutti questi esempi, la solita relazione prezzo–quantità si inverte o diventa più complessa a causa di fattori psicologici, culturali o situazionali che superano l'assunzione classica che i consumatori vogliano semplicemente "di più a prezzi più bassi". 

Termini comuni della curva di domanda

Abbiamo considerato alcuni termini diversi in questo articolo. Creiamo una tabella per tenere tutto in ordine. 

ConcettoDescrizione
Curva di domandaUna rappresentazione grafica che mostra la relazione tra il prezzo di un bene e la quantità domandata dai consumatori.
Legge della domandaStabilisce che, a parità di condizioni, quando il prezzo di un prodotto diminuisce, la quantità domandata aumenta.
Relazione prezzo-quantitàIndica che il prezzo di un prodotto influenza direttamente la quantità che i consumatori sono disposti ad acquistare.
ElasticitàMisura quanto è sensibile la quantità domandata a una variazione di prezzo.
Utilità marginale decrescenteSi riferisce alla diminuzione della soddisfazione o utilità derivante dal consumo di unità aggiuntive di un prodotto.

Considerazioni finali

Abbiamo coperto molto terreno: abbiamo praticato tutto, dalle curve e dai modelli di domanda, alle trasformazioni logaritmiche ed esponenziali, fino a tecniche di regressione quadratica e ottimizzazione. 

Continua a imparare business analysis con DataCamp. Valuta l'iscrizione ai corsi che ho menzionato prima: Forecasting Product Demand in R e Data-Driven Decision Making for Business, entrambi ti insegneranno a usare i dati per migliorare le tue decisioni in ambito business e finance. Non c'è sostituto all'avere competenze tecniche e conoscere le tecniche giuste. 

Inoltre, continua a praticare le basi della data science. Oltre ai corsi base di regressione (Introduction to Regression with statsmodels in Python e Introduction to Regression in R) impara Nonlinear Modeling with Generalized Additive Models (GAMs) in R o Statistics Fundamentals in Python. Consiglio anche il nostro career track completo Machine Learning Scientist in Python. Scegli l'area in cui sei più debole, così imparerai di più.

Josef Waples

Autore

Josef Waples

Sono uno scrittore e editor di data science, con contributi a articoli di ricerca su riviste scientifiche. Sono particolarmente interessato ad algebra lineare, statistica, R e affini. Inoltre, gioco anche parecchio a scacchi! 

Argomenti

Correlato