here::here("code", "_common.R") |>
source()
# Load packages
if (!requireNamespace("pacman")) install.packages("pacman")
pacman::p_load(HistData)22 La regressione verso la media
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.
- Leggere il capitolo Basic Regression di Statistical Inference via Data Science: A ModernDive into R and the Tidyverse (Second Edition).
- Leggere il capitolo Linear Statistical Models (Schervish & DeGroot, 2014).
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:
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:
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:
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.443Un 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:
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:
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:
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:
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
