Guida alla Regressione Quadratica: Stimare e Interpretare i Coefficienti (con Esercizi)

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
come stimare regressione quadratica

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.

Forse potrebbe interessarti anche:  Indice di Herfindahl-Hirschman (HHI): Guida Pratica con Esercizi Svolti, Python e Teoria Microeconomica

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:

  1. Metti i tuoi punti [math](x, y)[/math] su un grafico a dispersione (scatter plot).
  2. 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).

Forse potrebbe interessarti anche:  La distribuzione normale standardizzata

 


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.

Pubblicità

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.
Forse potrebbe interessarti anche:  K-Means Clustering con Excel

Pubblicità

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 numpy e pandas per gestire i dati e statsmodels per 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 usa sm.stats.anova_lm per 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.

Pubblicità