22  La regressione verso la media

Il concetto di regressione verso la media fu introdotto da Francis Galton alla fine dell’Ottocento, osservando la trasmissione ereditaria dell’altezza. Egli notò che i figli di padri eccezionalmente alti rimanevano in media sopra la statura generale, ma meno dei loro padri; e che lo stesso valeva, in direzione opposta, per i figli di padri molto bassi. Questo “ritorno parziale verso il centro” della distribuzione è il fenomeno che ancora oggi porta il nome di regressione verso la media.

Perché avviene? Un valore estremo, come un’altezza particolarmente alta o bassa, è il risultato della combinazione di fattori genetici, ambientali e casuali. I figli ereditano solo una parte di questi fattori, e nuove influenze si aggiungono al quadro: il risultato è che le loro altezze tendono a essere meno estreme, più vicine alla media della popolazione. Non significa che il figlio di un padre altissimo diventi basso: rimane in media più alto degli altri, ma meno estremo.

Il cuore statistico del fenomeno sta nella correlazione imperfetta tra le due variabili considerate (altezza del padre e del figlio). Se la correlazione fosse pari a 1, gli estremi si replicherebbero perfettamente. Ma quando \(\rho < 1\), i valori attesi dei figli risultano più vicini alla media rispetto a quelli dei padri. Galton stimò, nel suo esempio, una correlazione attorno a 0.5: segno che una parte importante, ma non totale, dell’estremità paterna si trasmette al figlio.

Studiare la regressione verso la media ci permette di capire più a fondo la logica della regressione lineare bivariata. Si tratta infatti di un’applicazione concreta dell’idea di pendenza inferiore a 1 quando la correlazione non è perfetta. Questo fenomeno, apparentemente controintuitivo, è in realtà inevitabile nei dati psicologici e ha implicazioni profonde per l’interpretazione delle osservazioni e dei cambiamenti individuali.

Panoramica del capitolo

  • Origine storica e intuizione del fenomeno (Galton).
  • Regressione e correlazione: forme standardizzate e non standardizzate.
  • Visualizzazione della RTM tramite retta di regressione.
  • RTM ≠ causalità: errori di misura e artefatti di selezione.
here::here("code", "_common.R") |> 
  source()

# Load packages
if (!requireNamespace("pacman")) install.packages("pacman")
pacman::p_load(HistData)

22.1 I dati di Galton

Esaminiamo il fenomeno della regressione verso la media usando i dati di Galton. Nel pacchetto HistData di R sono disponibili i dati originali raccolti da Galton, che includono informazioni sull’altezza di padri, madri, figli maschi e femmine. Per semplificare l’analisi, creiamo un dataset che include solo l’altezza del padre e l’altezza di un figlio maschio scelto casualmente da ogni famiglia:

set.seed(1234)

galton_heights <- GaltonFamilies |>
  filter(gender == "male") |>
  group_by(family) |>
  sample_n(1) |>
  ungroup() |>
  select(father, childHeight) |>
  rename(son = childHeight)

Questo dataset contiene due colonne: father (altezza del padre) e son (altezza del figlio maschio). Calcolando la media e la deviazione standard delle altezze dei padri e dei figli, otteniamo:

galton_heights |> 
  summarize(
    mean_father = mean(father), 
    sd_father   = sd(father),
    mean_son    = mean(son), 
    sd_son      = sd(son)
  )
#> # A tibble: 1 × 4
#>   mean_father sd_father mean_son sd_son
#>         <dbl>     <dbl>    <dbl>  <dbl>
#> 1        69.1      2.55     69.1   2.62

I risultati mostrano che, in media, i padri e i figli hanno altezze simili, anche se le distribuzioni non sono identiche. Un grafico di dispersione (scatterplot) evidenzia una chiara tendenza: padri più alti tendono ad avere figli più alti:

galton_heights |>
  ggplot(aes(father, son)) +
  geom_point(alpha = 0.5)

22.1.1 Il coefficiente di correlazione

La forza e la direzione dell’associazione lineare tra le due variabili sono misurate dal coefficiente di correlazione di Pearson, definito come:

\[ \rho = \frac{1}{n}\sum_{i=1}^n \left(\frac{x_i - \mu_x}{\sigma_x}\right) \left(\frac{y_i - \mu_y}{\sigma_y}\right). \] dove \(\mu_X, \mu_Y\) sono le medie e \(\sigma_X, \sigma_Y\) le deviazioni standard delle rispettive popolazioni. La sua stima campionaria, \(r\), è calcolata in R come:

galton_heights |> 
  summarize(r = cor(father, son)) |> 
  pull(r)
#> [1] 0.443

Un coefficiente di 0.5 indica un’associazione lineare positiva di moderata intensità. Questo valore suggerisce che l’altezza del padre spiega solo una porzione della variabilità totale nell’altezza del figlio, lasciando ampio spazio all’influenza di altri fattori (genetici materni, ambientali, ecc.).

22.1.2 Aspettativa condizionata e fenomeno della regressione

Nella ricerca applicata, siamo spesso interessati a stimare il valore atteso di una variabile di risposta (\(Y\), ad esempio l’altezza del figlio) dato un valore specifico di un predittore (\(X = x_0\), ad esempio un’altezza paterna di 72 pollici). Formalmente, questo obiettivo è espresso dalla notazione \(\mathbb{E}(Y \mid X = x_0)\).

Un modo diretto per stimare questa aspettativa è suddividere i dati in gruppi (strati) in base al valore di \(X\) e calcolare la media di \(Y\) in ciascun gruppo. Prendiamo il caso \(X = 72\) pollici:

galton_heights |> 
  filter(round(father) == 72) |>
  summarize(avg_son = mean(son))
#> # A tibble: 1 × 1
#>   avg_son
#>     <dbl>
#> 1    70.2

Il risultato di questo calcolo rivela il fenomeno osservato da Galton: la media condizionata di \(Y\) (altezza del figlio) è tipicamente più vicina alla media generale di \(Y\) di quanto il valore condizionante \(x_0\) non lo sia alla media generale di \(X\). Questo spostamento delle previsioni verso la media complessiva è la manifestazione empirica del fenomeno della regressione verso la media.

22.2 Visualizzare del fenomeno attraverso la stratificazione

Il fenomeno è generalizzabile visualizzando la media condizionata \(\mathbb{E}(Y \mid X = x)\) per diversi valori di \(x\), ottenuti tramite stratificazione:

galton_heights |>
  mutate(father_strata = factor(round(father))) |>
  group_by(father_strata) |>
  summarize(avg_son = mean(son)) |>
  ggplot(aes(x = father_strata, y = avg_son)) +
  geom_point()

La nube di punti delle medie condizionate presenta una pendenza positiva ma inferiore a 45°, dimostrando visivamente la regressione verso la media.

22.3 Modello di regressione lineare e interpretazione dei parametri

Il modello statistico che formalizza questa relazione è la regressione lineare semplice:

\[ Y = \beta_0 + \beta_1 X + \varepsilon , \] dove \(\epsilon\) è un termine di errore stocastico con media zero.

Gli stimatori dei minimi quadrati ordinari (OLS) per i parametri \(\beta_0\) (intercetta) e \(\beta_1\) (pendenza) sono:

\[ \hat{\beta}_1 = r \frac{s_Y}{s_X}, \quad \hat{\beta}_0 = \bar{Y} - \hat{\beta}_1\bar{X}, \] dove \(s_X\), \(s_Y\) sono le deviazioni standard campionarie e \(\bar{X}\), \(\bar{Y}\) le medie campionarie.

L’applicazione del modello ai dati di Galton fornisce:

fit <- lm(son ~ father, data = galton_heights)
coef(fit)
#> (Intercept)      father 
#>      37.632       0.456

La pendenza stimata \(\hat{\beta}_1 = 0.454\) conferma che per ogni pollice in più del padre, l’altezza attesa del figlio aumenta di circa 0.454 pollici, un valore inferiore a 1 che è consistente con la regressione verso la media.

22.3.0.1 Standardizzazione

Standardizzando le variabili (\(Z_X = (X - \bar{X})/s_X\), \(Z_Y = (Y - \bar{Y})/s_Y\)), il modello di regressione assume la forma

\[ Z_Y = \rho\, Z_X + \varepsilon. \]

Vediamo come si arriva a questo risultato. Consideriamo il modello lineare semplice

\[ Y = \beta_0 + \beta_1 X + \varepsilon, \qquad \mathbb{E}[\varepsilon] = 0, \qquad \mathrm{Cov}(X,\varepsilon) = 0. \]

Dalle equazioni normali dei minimi quadrati otteniamo, a livello di popolazione:

\[ \beta_1 = \frac{\mathrm{Cov}(X,Y)}{\mathrm{Var}(X)}, \qquad \beta_0 = \mu_Y - \beta_1 \mu_X. \]

Scrivendo la covarianza come \(\mathrm{Cov}(X,Y) = \rho \sigma_X \sigma_Y\), segue che

\[ \beta_1 = \rho \,\frac{\sigma_Y}{\sigma_X}. \]

Se ora standardizziamo \(X\) e \(Y\), entrambe le deviazioni standard valgono 1, quindi la pendenza diventa

\[ \beta_1^* = \rho. \]

Inoltre, poiché le variabili standardizzate hanno media zero, anche l’intercetta scompare.

In conclusione, la regressione di \(Z_Y\) su \(Z_X\) ha sempre intercetta pari a 0 e coefficiente angolare pari alla correlazione \(\rho\).

Infatti, nei dati campionari:

fit_standardized <- lm(scale(son) ~ scale(father), data = galton_heights)
coef(fit_standardized)
#>   (Intercept) scale(father) 
#>     -8.45e-15      4.43e-01

La pendenza è \(0.4434\), numericamente uguale alla correlazione \(r\) calcolata in precedenza (a meno di errori di arrotondamento). Poiché \(|\rho| < 1\), la previsione per un valore standardizzato \(z_x\) sarà \(\hat{z}_y = \rho z_x\), che è sempre, in valore assoluto, minore di \(z_x\). Questo spiega matematicamente il perché un valore estremo di \(X\) porta a una previsione per \(Y\) che è meno estrema, ossia più vicina alla sua media standardizzata (zero).

In sintesi, la correlazione imperfetta (\(\rho < 1\)) è la ragione principale per cui un valore estremo di \(X\) (ad esempio, un padre molto alto) porta a un valore \(\hat{Y}\) che è sì superiore (o inferiore) alla media, ma meno estremo del padre. Questo “ritorno verso il centro” è ciò che chiamiamo regressione verso la media.

Riflessioni conclusive

La regressione verso la media è un fenomeno statistico inevitabile ogni volta che due variabili correlate hanno un coefficiente di correlazione \(|\rho| < 1\). Il suo effetto fondamentale può essere espresso in questo modo: quando si condiziona su un valore estremo di una variabile, il valore atteso dell’altra si avvicina alla sua media generale.

In termini pratici, questo significa che osservazioni eccezionalmente alte o basse tenderanno, in media, a risultare più vicine alla media nelle misurazioni successive. Questo effetto non è un errore o un artefatto, ma una proprietà intrinseca della relazione tra due variabili che non sono perfettamente correlate, dovuta alla presenza di variabilità residua ed errori di misura.

Le implicazioni per la ricerca psicologica sono profonde. Ignorare il fenomeno della regressione verso la media può portare a interpretazioni erronee. È il tipico caso degli studi pre-post senza gruppo di controllo, dove un miglioramento apparente nel punteggio di un campione selezionato per valori estremi potrebbe essere confuso con un effetto dell’intervento, mentre in realtà riflette, almeno in parte, la naturale tendenza dei punteggi a “rientrare” verso la loro media.

Comprendere questo fenomeno non è solo un’avvertenza metodologica, ma è anche la chiave per interpretare il modello di regressione lineare bivariata. La pendenza della retta di regressione, quando le variabili sono standardizzate, è numericamente uguale al coefficiente di correlazione \(\rho\). Poiché \(|\rho| < 1\), la pendenza è inferiore a 1 in valore assoluto: questo è l’equivalente matematico del fenomeno della regressione verso la media. La retta di regressione, quindi, non è solo un modello descrittivo, ma rappresenta visivamente questa tendenza delle previsioni a convergere verso la media.

Questa riflessione ci conferma che, nonostante la sua natura descrittiva, la regressione lineare fornisce intuizioni potenti sulla dinamica dei dati psicologici e sui limiti delle nostre inferenze. Nel prosieguo del testo, passeremo dalla prospettiva frequentista a quella bayesiana, che ci permetterà di affrontare le stesse domande in modo più flessibile, rappresentando l’incertezza direttamente attraverso distribuzioni di probabilità e integrando esplicitamente le conoscenze pregresse.

sessionInfo()
#> R version 4.5.2 (2025-10-31)
#> Platform: aarch64-apple-darwin20
#> Running under: macOS Tahoe 26.1
#> 
#> Matrix products: default
#> BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
#> 
#> locale:
#> [1] C.UTF-8/UTF-8/C.UTF-8/C/C.UTF-8/C.UTF-8
#> 
#> time zone: Europe/Rome
#> tzcode source: internal
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#>  [1] HistData_1.0.0        ragg_1.5.0            tinytable_0.15.1     
#>  [4] withr_3.0.2           systemfonts_1.3.1     patchwork_1.3.2      
#>  [7] ggdist_3.3.3          tidybayes_3.0.7       bayesplot_1.14.0     
#> [10] ggplot2_4.0.1         reliabilitydiag_0.2.1 priorsense_1.2.0     
#> [13] posterior_1.6.1       loo_2.8.0             rstan_2.32.7         
#> [16] StanHeaders_2.32.10   brms_2.23.0           Rcpp_1.1.0           
#> [19] sessioninfo_1.2.3     conflicted_1.2.0      janitor_2.2.1        
#> [22] matrixStats_1.5.0     modelr_0.1.11         tibble_3.3.0         
#> [25] dplyr_1.1.4           tidyr_1.3.1           rio_1.2.4            
#> [28] here_1.0.2           
#> 
#> loaded via a namespace (and not attached):
#>  [1] gridExtra_2.3         inline_0.3.21         sandwich_3.1-1       
#>  [4] rlang_1.1.6           magrittr_2.0.4        multcomp_1.4-29      
#>  [7] snakecase_0.11.1      compiler_4.5.2        vctrs_0.6.5          
#> [10] stringr_1.6.0         pkgconfig_2.0.3       arrayhelpers_1.1-0   
#> [13] fastmap_1.2.0         backports_1.5.0       labeling_0.4.3       
#> [16] rmarkdown_2.30        purrr_1.2.0           xfun_0.54            
#> [19] cachem_1.1.0          jsonlite_2.0.0        broom_1.0.11         
#> [22] parallel_4.5.2        R6_2.6.1              stringi_1.8.7        
#> [25] RColorBrewer_1.1-3    lubridate_1.9.4       estimability_1.5.1   
#> [28] knitr_1.50            zoo_1.8-14            pacman_0.5.1         
#> [31] Matrix_1.7-4          splines_4.5.2         timechange_0.3.0     
#> [34] tidyselect_1.2.1      abind_1.4-8           codetools_0.2-20     
#> [37] curl_7.0.0            pkgbuild_1.4.8        lattice_0.22-7       
#> [40] bridgesampling_1.2-1  S7_0.2.1              coda_0.19-4.1        
#> [43] evaluate_1.0.5        survival_3.8-3        RcppParallel_5.1.11-1
#> [46] pillar_1.11.1         tensorA_0.36.2.1      checkmate_2.3.3      
#> [49] stats4_4.5.2          distributional_0.5.0  generics_0.1.4       
#> [52] rprojroot_2.1.1       rstantools_2.5.0      scales_1.4.0         
#> [55] xtable_1.8-4          glue_1.8.0            emmeans_2.0.0        
#> [58] tools_4.5.2           mvtnorm_1.3-3         grid_4.5.2           
#> [61] QuickJSR_1.8.1        colorspace_2.1-2      nlme_3.1-168         
#> [64] cli_3.6.5             textshaping_1.0.4     svUnit_1.0.8         
#> [67] Brobdingnag_1.2-9     V8_8.0.1              gtable_0.3.6         
#> [70] digest_0.6.39         TH.data_1.1-5         htmlwidgets_1.6.4    
#> [73] farver_2.1.2          memoise_2.0.1         htmltools_0.5.9      
#> [76] lifecycle_1.0.4       MASS_7.3-65

Bibliografia

Schervish, M. J., & DeGroot, M. H. (2014). Probability and statistics (Vol. 563). Pearson Education London, UK: