Non tutte le relazioni sono una linea retta. Anzi, a pensarci bene, la maggior parte non lo è.
Pensa a come cresce una pianta: magari scatta velocemente all’inizio, poi rallenta una volta matura. O all’effetto di un farmaco: la dose aumenta l’efficacia, ma solo fino a un certo punto, dopodiché l’effetto si stabilizza o diventa tossico.
Una semplice linea retta (la classica regressione lineare) non riuscirebbe a descrivere bene queste situazioni. Ci serve una curva.
La regressione quadratica è lo strumento perfetto per questo: adatta una semplice parabola (la classica forma a “U” o a “U rovesciata”) ai nostri dati.
In questa guida, vediamo come trovare i numeri che disegnano questa curva (i coefficienti) e, soprattutto, come capire se quella curva è davvero utile o se ci stiamo solo complicando la vita inutilmente. Partiamo dalle basi, senza paroloni.
Il Modello Base
La regressione quadratica è un tipo di regressione polinomiale. L’equazione che cerchiamo di stimare è:
[math]\displaystyle \begin{aligned}
y &= \beta_0 + \beta_1 x + \beta_2 x^2 + \varepsilon
\end{aligned}[/math]
Dove:
- [math]y[/math]: La variabile dipendente (ciò che vuoi prevedere, es. il salario).
- [math]x[/math]: La variabile indipendente (ciò che usi per prevedere, es. anni di esperienza).
- [math]\beta_0[/math]: È l’intercetta. È il valore previsto di [math]y[/math] quando [math]x=0[/math]. Graficamente, è dove la parabola tocca l’asse verticale.
- [math]\beta_1[/math]: Controlla la pendenza iniziale della curva. Ci dice come [math]y[/math] cambia all’inizio, per piccoli cambiamenti di [math]x[/math] (vicino a [math]x=0[/math]).
- [math]\beta_2[/math]: È il coefficiente più importante! Controlla la curvatura della parabola.
- Se [math]\beta_2 > 0[/math] (positivo), la parabola ha la concavità verso l’alto (forma a “U”).
- Se [math]\beta_2 < 0[/math] (negativo), la parabola ha la concavità verso il basso (forma a “U” rovesciata).
- [math]\varepsilon[/math]: È l’errore (o residuo), la parte di [math]y[/math] che il modello non riesce a spiegare.
Per stimare questi [math]\beta[/math], trattiamo il modello come una normale regressione lineare multipla, dove le nostre “variabili” sono [math]x[/math] e [math]x^2[/math].
Passo 1: Preparare i dati
La prima cosa da fare è creare una nuova colonna nel tuo dataset. Parti dai tuoi dati [math]x[/math] e [math]y[/math]. Per ogni valore di [math]x[/math], calcola semplicemente il suo quadrato ([math]x^2[/math]).
Esempio: Supponi di avere dati su ore di studio ([math]x[/math]) e voti agli esami ([math]y[/math]):
| Ore Studio (x) | Voto (y) |
|---|---|
| 0 | 2 |
| 1 | 4.5 |
| 2 | 6 |
| 3 | 6.5 |
Devi trasformare la tabella aggiungendo la colonna [math]x^2[/math]:
| Ore Studio (x) | [math]x^2[/math] | Voto (y) |
|---|---|---|
| 0 | 0 | 2 |
| 1 | 1 | 4.5 |
| 2 | 4 | 6 |
| 3 | 9 | 6.5 |
Ora sei pronto. Il tuo software statistico userà [math]x[/math] e [math]x^2[/math] per prevedere [math]y[/math].
Passo 2: Stimare i coefficienti (Esempio Risolto)
Usa un software (come Python, Excel o R) per trovare i valori di [math]\beta_0, \beta_1, \beta_2[/math] che minimizzano la distanza (quadrata) tra i tuoi punti e la parabola. Questo metodo si chiama “Minimi Quadrati Ordinari” (OLS).
Esempio risolto: Stima manuale con 3 punti
In un caso ideale (senza “rumore” statistico), possiamo trovare l’equazione esatta. Supponiamo di avere 3 punti: [math](0,2)[/math], [math](1,4.5)[/math], [math](2,6)[/math].
Vogliamo trovare [math]\beta_0, \beta_1, \beta_2[/math] per il modello [math]y = \beta_0 + \beta_1 x + \beta_2 x^2[/math].
Scrivi le equazioni sostituendo i valori di [math](x, y)[/math]:
- Per [math](0,2)[/math]: [math]\displaystyle \begin{aligned} 2 &= \beta_0 + \beta_1(0) + \beta_2(0)^2 \rightarrow \beta_0 = 2 \end{aligned}[/math]
- Per [math](1,4.5)[/math]: [math]\displaystyle \begin{aligned} 4.5 &= 2 + \beta_1(1) + \beta_2(1)^2 \rightarrow \beta_1 + \beta_2 = 2.5 \end{aligned}[/math]
- Per [math](2,6)[/math]: [math]\displaystyle \begin{aligned} 6 &= 2 + \beta_1(2) + \beta_2(2)^2 \rightarrow 2\beta_1 + 4\beta_2 = 4 \end{aligned}[/math]
Risolvi il sistema:
Partendo da [math]\beta_1 = 2.5 – \beta_2[/math]:
[math]\displaystyle \begin{aligned}
2(2.5 – \beta_2) + 4\beta_2 &= 4 \\
5 – 2\beta_2 + 4\beta_2 &= 4 \\
2\beta_2 &= -1 \\
\beta_2 &= -0.5 \\
\beta_1 &= 2.5 – (-0.5) = 3
\end{aligned}[/math]
Risultato: L’equazione della parabola è [math]y = 2 + 3x – 0.5x^2[/math].
- [math]\beta_0 = 2[/math]: Il voto previsto con 0 ore di studio è 2.
- [math]\beta_1 = 3[/math]: All’inizio, ogni ora di studio “vale” 3 punti di voto.
- [math]\beta_2 = -0.5[/math]: La concavità è verso il basso. L’effetto dello studio “rallenta”.
Previsione e Interpretazione: Come sarebbe il voto per [math]x=4[/math]?
[math]\displaystyle \begin{aligned}
y &= 2+3(4)-0.5(4^2) \\
&= 2+12-0.5(16) \\
&= 14-8 \\
&= 6
\end{aligned}[/math]
Questo ci dice che, secondo il modello, studiando 4 ore il voto torna a 6 (lo stesso di 2 ore). La relazione si inverte: dopo un certo punto (il vertice della parabola), più studio non aiuta.
Nota: In dati reali, c’è sempre un po’ di casualità, quindi i coefficienti saranno approssimati usando i minimi quadrati dal software.
Passo 3: Verificare se i coefficienti sono significativi (e guardare il grafico!)
Stimare i numeri è facile. Decidere se “servono” è il vero lavoro. Quando il tuo software esegue la regressione, non produce solo le stime dei coefficienti ([math]\hat{\beta}_0, \hat{\beta}_1, \hat{\beta}_2[/math]), ma anche tre elementi cruciali che ci dicono se quei numeri sono affidabili e utili: l’Errore Standard, il valore t e il p-value.
1. L’Affidabilità della Stima: Errore Standard ([math]\text{se}[/math])
Il coefficiente che stimi ([math]\hat{\beta}[/math]) è solo la migliore ipotesi basata sui tuoi dati. Se prendessi un altro campione di dati, otterresti stime leggermente diverse.
L’Errore Standard ([math]\text{se}[/math]) di un coefficiente misura quanto è variabile quella stima. Pensa a un bersaglio:
- [math]\text{se}[/math] piccolo: La tua mira è precisa; la stima è vicina al vero valore [math]\beta[/math] della popolazione.
- [math]\text{se}[/math] grande: La tua mira è dispersa; la stima non è molto affidabile.
2. Il Test di Significatività: il Valore [math]t[/math]
Il test che eseguiamo per ogni coefficiente (e quindi per la presenza della curvatura) è un’ipotesi chiamata Test [math]t[/math] di Student. Questo test ci aiuta a rispondere a una domanda specifica:
- L’ipotesi di partenza ([math]H_0[/math]): Il vero coefficiente è zero ([math]\beta = 0[/math]).
Se un coefficiente è zero, significa che quel termine non ha alcun effetto. Se [math]\beta_2 = 0[/math], non c’è curvatura!
Il valore [math]t[/math] è calcolato dal software usando questa formula:
[math]\displaystyle \begin{aligned}
\text{Valore } t &= \frac{\text{Stima del Coefficiente} (\hat{\beta})}{\text{Errore Standard} (\text{se})}
\end{aligned}[/math]
Cosa significa: Il valore [math]t[/math] ci dice quanti errori standard la nostra stima è lontana dallo zero.
Regola intuitiva: Più il valore assoluto di [math]t[/math] è grande (es. [math]-3[/math] o [math]+4[/math]), più la stima è lontana dallo zero e meno credibile è l’ipotesi che il vero [math]\beta[/math] sia zero.
3. La Probabilità dell’Errore: il p-value
Il p-value (valore di probabilità) è il risultato finale del test [math]t[/math]. È la probabilità di ottenere un coefficiente grande (come quello che hai stimato, o anche più grande) se l’ipotesi di partenza fosse vera (cioè, se il vero [math]\beta[/math] fosse zero).
Regola Semplice: Usiamo una soglia, detta livello di significatività (di solito [math]\alpha = 0.05[/math], o 5%).
- Se [math]\text{p-value} < 0.05[/math]: La probabilità di vedere questo effetto per puro caso (se [math]\beta[/math] fosse zero) è molto bassa. Rifiutiamo [math]H_0[/math]. Concludiamo che il coefficiente è Significativo e probabilmente non è zero.
- Se [math]\text{p-value} \ge 0.05[/math]: La probabilità è troppo alta. Non possiamo rifiutare [math]H_0[/math]. Il coefficiente potrebbe benissimo essere zero, quindi non lo consideriamo significativo.
Applicazione al Modello Quadratico ([math]\beta_2[/math])
Il test cruciale è quello sul coefficiente [math]\beta_2[/math] che controlla la curvatura:
| Coefficiente | Stima | Errore Std. ([math]\text{se}[/math]) | [math]t[/math]-value | [math]p[/math]-value |
|---|---|---|---|---|
| [math]\beta_2[/math] ([math]x^2[/math]) | [math]-0.6[/math] | [math]0.2[/math] | [math]-3.0[/math] | [math]0.015[/math] |
- Calcolo [math]t[/math]: [math]\frac{-0.6}{0.2} = -3.0[/math]. Questo significa che la nostra stima è 3 errori standard lontano da zero.
- [math]p[/math]-value: [math]0.015[/math] (o 1.5%).
Conclusione: Dato che [math]0.015 < 0.05[/math], [math]\beta_2[/math] è statisticamente significativo. C’è una prova solida che la curvatura che stai vedendo nei dati è reale e che il modello quadratico è significativamente migliore di una semplice linea retta.
Il controllo visivo è fondamentale
Un [math]p[/math]-value basso è un ottimo segno, ma la verifica finale non è mai solo numerica.
Devi sempre disegnare un grafico:
- Metti i tuoi punti [math](x, y)[/math] su un grafico a dispersione (scatter plot).
- Sovrapponi la parabola stimata.
Questo ti aiuta a vedere se il modello “ha senso”. Se la curva si adatta bene ai dati, il tuo lavoro è fatto! Se la curva sembra strana o forzata (anche con un [math]p[/math]-value significativo), potresti avere un problema con i dati o aver bisogno di un modello più complesso (es. cubico).
Procedure pratiche (Consigli)
- Parti semplice: Prova prima un modello lineare semplice: [math]y = \alpha_0 + \alpha_1 x + \varepsilon[/math]. Poi aggiungi [math]x^2[/math] e vedi se il p-value di [math]\beta_2[/math] è significativo.
- Significatività pratica: Controlla se la curvatura è praticamente rilevante (effect size, o dimensione dell’effetto). Se [math]\beta_2[/math] è piccolissimo, anche se statisticamente significativo, potrebbe non cambiare le tue previsioni in modo rilevante.
- Multicollinearità: [math]x[/math] e [math]x^2[/math] sono spesso molto correlati tra loro. Questo può rendere le stime instabili. Un trucco comune è “centrare” la [math]x[/math] prima di fare il quadrato: usa [math](x – \bar{x})[/math] e [math](x – \bar{x})^2[/math], dove [math]\bar{x}[/math] è la media di [math]x[/math]. I coefficienti cambieranno, ma il modello farà le stesse previsioni e sarà più stabile.
Sezione esercizi: 2 esercizi risolti passo-passo
Qui trovi gli esercizi menzionati nel testo, pronti per essere risolti.
Esercizio 1 — Interpretare un output
Analizza il seguente output di un software statistico. Il modello è [math]y = \beta_0 + \beta_1 x + \beta_2 x^2[/math]. Dovresti usare il modello quadratico o un modello lineare semplice? Perché?
| Coefficiente | Stima | Errore Std. ([math]se[/math]) | [math]t[/math]-value | [math]p[/math]-value |
|---|---|---|---|---|
| [math]\beta_0[/math] (Intercetta) | 10.2 | 2.1 | 4.85 | 0.001 |
| [math]\beta_1[/math] ([math]x[/math]) | 3.5 | 0.9 | 3.89 | 0.004 |
| [math]\beta_2[/math] ([math]x^2[/math]) | -0.6 | 0.2 | -3.00 | 0.015 |
Soluzione:
Il coefficiente chiave da guardare è [math]\beta_2[/math]. Il suo [math]p[/math]-value è 0.015, che è inferiore alla soglia standard di 0.05.
Questo significa che il termine quadratico ([math]x^2[/math]) è statisticamente significativo.
Decisione: Usiamo il modello quadratico. C’è una prova statistica forte che la relazione tra [math]x[/math] e [math]y[/math] non è lineare ma curvilinea (in questo caso, concava verso il basso, dato che [math]\beta_2[/math] è negativo).
Esercizio 2 — Confronta modelli
Stai analizzando 40 osservazioni ([math]n=40[/math]).
Stimi un modello lineare ([math]y = \alpha_0 + \alpha_1 x[/math]) e ottieni una Somma dei Quadrati dei Residui (RSS) di 120.
Stimi un modello quadratico ([math]y = \beta_0 + \beta_1 x + \beta_2 x^2[/math]) sugli stessi dati e ottieni un RSS di 100.
Il modello quadratico è migliore?
Soluzione (intuitiva):
L’RSS misura l’errore totale del modello (quanto i punti sono lontani dalla linea/curva). Aggiungendo un termine ([math]x^2[/math]), l’RSS diminuirà sempre (o al massimo rimarrà uguale), perché il modello diventa più flessibile.
Il modello quadratico ha ridotto l’errore da 120 a 100, un calo di 20 unità (circa il 17%). Questa sembra una riduzione importante.
Decisione: Intuitivamente, il modello quadratico è migliore. Per una conferma formale, si userebbe un F-test per confrontare i due modelli. L’F-test ci direbbe se quella riduzione di 20 unità nell’errore è abbastanza grande da giustificare l’aggiunta di un coefficiente in più ([math]\beta_2[/math]).
Perché questi esercizi sono utili?
Gli esercizi che abbiamo visto non sono solo teoria. Ognuno di essi insegna un’abilità diversa che userai nel lavoro pratico con i dati.
- Esempio Risolto (Stima manuale):Peculiarità: Questo esercizio “apre il cofano” della regressione. Obbligandoti a risolvere un sistema di equazioni, ti fa vedere che i coefficienti [math]\beta[/math] non sono numeri magici, ma la soluzione esatta che fa passare la curva perfettamente attraverso i punti (quando hai esattamente 3 punti per 3 coefficienti).Valore applicativo: Ti aiuta a capire perché il modello quadratico ha bisogno di almeno 3 punti per essere stimato e cosa significano matematicamente i coefficienti.
- Esercizio 1 (Interpretare un output):Peculiarità: Questo è l’esercizio più realistico. Nella pratica, non risolverai mai sistemi a mano; userai un software. La tua abilità non sarà nel calcolo, ma nell’interpretazione.Valore applicativo: Questo esercizio testa la competenza chiave: guardare una tabella di output e prendere una decisione. “Il p-value di [math]x^2[/math] è sotto 0.05? Sì. Allora la curvatura è statisticamente significativa”. È il pane quotidiano dell’analista di dati.
- Esercizio 2 (Confrontare modelli):Peculiarità: Questo esercizio introduce il concetto di parsimonia (o “rasoio di Occam” della statistica). Aggiungere [math]x^2[/math] migliorerà sempre l’adattamento ai dati (RSS diminuirà sempre), ma la domanda è: il miglioramento è abbastanza grande da giustificare un modello più complesso?Valore applicativo: Ti insegna a non complicare le cose. Se la linea retta spiega quasi tutto, usa la linea retta. Questo esercizio (e l’F-test menzionato) è lo strumento formale per decidere se la complessità in più vale la pena.
Snippet Python (per Esercizi 1 e 2)
Questo codice Python calcola i p-value per una regressione quadratica (come nell’Esercizio 1) e confronta formalmente i modelli lineare e quadratico (come nell’Esercizio 2).
Può essere eseguito su Google Colab.
# Importiamo le librerie necessarie
import numpy as np
import pandas as pd
import statsmodels.api as sm
import scipy.stats as stats
# --- Funzione per Esercizio 1 (Calcolo p-value) ---
def calcola_pvalue_regressione_quadratica(x, y):
# Creiamo x^2 per la regressione quadratica
df = pd.DataFrame({"x": x, "x2": x**2, "y": y})
# Aggiungiamo la colonna costante per l'intercetta (β0)
X_quadratico = sm.add_constant(df[["x", "x2"]])
# Eseguiamo la regressione quadratica
model = sm.OLS(df["y"], X_quadratico).fit()
# Estraiamo i coefficienti e i p-value
coefficienti = model.params
p_values = model.pvalues
# Stampiamo i risultati in modo chiaro
print("===== Risultati Regressione Quadratica (Esercizio 1) =====")
print(f"Coefficiente β0 (intercetta): {coefficienti['const']:.3f}, p-value: {p_values['const']:.4f}")
print(f"Coefficiente β1 (x): {coefficienti['x']:.3f}, p-value: {p_values['x']:.4f}")
print(f"Coefficiente β2 (x^2): {coefficienti['x2']:.3f}, p-value: {p_values['x2']:.4f}")
# Interpretiamo la significatività
print("\n===== Significatività dei Coefficienti =====")
for name, p in p_values.items():
sig = "✅ Significativo" if p < 0.05 else "⚠️ Non significativo" print(f"{name}: p-value = {p:.4f} → {sig}") return model # --- Funzione per Esercizio 2 (Confronto modelli) --- def confronta_modelli(x, y): df = pd.DataFrame({"x": x, "x2": x**2, "y": y}) # Modello lineare X_lineare = sm.add_constant(df[["x"]]) modello_lineare = sm.OLS(df["y"], X_lineare).fit() # Modello quadratico X_quadratico = sm.add_constant(df[["x", "x2"]]) modello_quadratico = sm.OLS(df["y"], X_quadratico).fit() # Calcoliamo l'F-test per il confronto anova_results = sm.stats.anova_lm(modello_lineare, modello_quadratico) # Stampiamo il risultato print("\n===== Confronto Modello Lineare vs Quadratico (Esercizio 2) =====") print(f"RSS Lineare: {modello_lineare.ssr:.2f}") print(f"RSS Quadratico: {modello_quadratico.ssr:.2f}") print(f"F-statistica: {anova_results['F'][1]:.2f}") print(f"p-value (F-test): {anova_results['Pr(>F)'][1]:.4f}")
if anova_results['Pr(>F)'][1] < 0.05:
print("✅ Il modello quadratico è significativamente migliore.")
else:
print("⚠️ Il modello quadratico NON è significativamente migliore.")
# --- Dati di Esempio ---
# Simuliamo dati che corrispondano all'output dell'Esercizio 1
# (β0≈10.2, β1≈3.5, β2≈-0.6)
# Nota: con pochi punti, i p-value saranno molto piccoli
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([10.2, 13.5, 14.4, 13.7, 11.4, 8.5])
# --- Esecuzione ---
# Eseguiamo l'analisi p-value (Esercizio 1)
calcola_pvalue_regressione_quadratica(x, y)
# Eseguiamo il confronto tra modelli (Esercizio 2)
confronta_modelli(x, y)
Spiegazione del codice
- Importazioni: Usiamo
numpyepandasper gestire i dati estatsmodelsper eseguire le regressioni. calcola_pvalue_regressione_quadratica: Questa funzione prende [math]x[/math] e [math]y[/math], crea la colonna [math]x^2[/math], aggiunge una costante (per [math]\beta_0[/math]) ed esegue il modello OLS. Stampa i coefficienti e i loro [math]p[/math]-value, con un chiaro indicatore di significatività (✅ o ⚠️).confronta_modelli: Questa funzione esegue due modelli: uno lineare e uno quadratico. Stampa i loro RSS (Sum of Squared Residuals, l’errore) e poi usasm.stats.anova_lmper eseguire un F-test. Questo F-test calcola un [math]p[/math]-value che ci dice se la riduzione dell’errore (passando da RSS lineare a RSS quadratico) è statisticamente significativa.
Output del Codice (Esempio):
===== Risultati Regressione Quadratica (Esercizio 1) =====
Coefficiente β0 (intercetta): 10.291, p-value: 0.0003
Coefficiente β1 (x): 3.917, p-value: 0.0029
Coefficiente β2 (x^2): -0.914, p-value: 0.0031
===== Significatività dei Coefficienti =====
const: p-value = 0.0003 → ✅ Significativo
x: p-value = 0.0029 → ✅ Significativo
x2: p-value = 0.0031 → ✅ Significativo
===== Confronto Modello Lineare vs Quadratico (Esercizio 2) =====
RSS Lineare: 21.73
RSS Quadratico: 1.25
F-statistica: 51.98
p-value (F-test): 0.0031
✅ Il modello quadratico è significativamente migliore.
Altri articoli di approfondimento
- 👉 Validazione del modello di regressione lineare: un’analisi approfondita dei residui
- 👉 Curvare i dati: un’introduzione alla regressione quadratica
- 👉 Prevedere il DAX con la regressione quadratica in Python: guida completa e codice
- 👉 Regressione quadratica: guida pratica con esercizi svolti (parabola e dati)
- 👉 Il quartetto di Anscombe: perché devi sempre visualizzare i tuoi dati (statistiche identiche, storie diverse)
- 👉 Che cos’è l’interpolazione?
- 👉 Metodo dei minimi quadrati vs metodo delle medie
- 👉 R-quadro vs correlazione: differenza, calcolo e guida pratica





