Obiettivo del progetto:

L’azienda Neonatal Health Solutions desidera creare un modello statistico in grado di prevedere con precisione il peso dei neonati alla nascita, basandosi su variabili cliniche raccolte da tre ospedali. Il progetto mira a migliorare la gestione delle gravidanze ad alto rischio, ottimizzare le risorse ospedaliere e garantire migliori risultati per la salute neonatale.

Il progetto si inserisce all’interno di un contesto di crescente attenzione verso la prevenzione delle complicazioni neonatali. La possibilità di prevedere il peso alla nascita dei neonati rappresenta un’opportunità fondamentale per migliorare la pianificazione clinica e ridurre i rischi associati a nascite problematiche, come parti prematuri o neonati con basso peso. Di seguito, i principali benefici che questo progetto porterà all’azienda e al settore sanitario:

  1. Miglioramento delle previsioni cliniche.

  2. Ottimizzazione delle risorse ospedaliere.

  3. Prevenzione e identificazione dei fattori di rischio.

  4. Valutazione delle pratiche ospedaliere.

  5. Supporto alla pianificazione strategica.


1. Raccolta dei Dati e Struttura del Dataset:

Per costruire il modello predittivo, abbiamo raccolto dati su 2500 neonati provenienti da tre ospedali. Le variabili raccolte includono:

  • Età della madre: Misura dell’età in anni.

  • Numero di gravidanze: Quante gravidanze ha avuto la madre.

  • Fumo materno: Un indicatore binario (0=non fumatrice, 1=fumatrice).

  • Durata della gravidanza: Numero di settimane di gestazione.

  • Peso del neonato: Peso alla nascita in grammi.

  • Lunghezza e diametro del cranio: Lunghezza del neonato e diametro craniale, misurabili anche durante la gravidanza tramite ecografie.

  • Tipo di parto: Naturale o cesareo.

  • Ospedale di nascita: Ospedale 1, 2 o 3.

  • Sesso del neonato: Maschio (M) o femmina (F).

L’obiettivo principale è identificare quali di queste variabili sono più predittive del peso alla nascita, con un focus particolare sull’impatto del fumo materno e delle settimane di gestazione, che potrebbero indicare nascite premature.

Caricamento del dataset “neonati.csv” in un dataframe R denominato df e visualizzazione dell’intestazione in formato tabella per verificarne il caricamento.

Prime 6 osservazioni del dataset neonati
Anni.madre N.gravidanze Fumatrici Gestazione Peso Lunghezza Cranio Tipo.parto Ospedale Sesso
26 0 0 42 3380 490 325 Nat osp3 M
21 2 0 39 3150 490 345 Nat osp1 F
34 3 0 38 3640 500 375 Nat osp2 M
28 1 0 41 3690 515 365 Nat osp2 M
20 0 0 38 3700 480 335 Nat osp3 F
32 0 0 40 3200 495 340 Nat osp2 F

Esaminazione della struttura del dataframe per identificare: il tipo di ciascuna variabile, la presenza di eventuali anomalie o codifiche non appropriate e di valori mancanti o incoerenti al fine di assicurare la qualità dei dati utilizzati.

## 'data.frame':    2500 obs. of  10 variables:
##  $ Anni.madre  : int  26 21 34 28 20 32 26 25 22 23 ...
##  $ N.gravidanze: int  0 2 3 1 0 0 1 0 1 0 ...
##  $ Fumatrici   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Gestazione  : int  42 39 38 41 38 40 39 40 40 41 ...
##  $ Peso        : int  3380 3150 3640 3690 3700 3200 3100 3580 3670 3700 ...
##  $ Lunghezza   : int  490 490 500 515 480 495 480 510 500 510 ...
##  $ Cranio      : int  325 345 375 365 335 340 345 349 335 362 ...
##  $ Tipo.parto  : chr  "Nat" "Nat" "Nat" "Nat" ...
##  $ Ospedale    : chr  "osp3" "osp1" "osp2" "osp2" ...
##  $ Sesso       : chr  "M" "F" "M" "M" ...

Il dataset contiene 2500 osservazioni.

##   Anni.madre N.gravidanze    Fumatrici   Gestazione         Peso    Lunghezza 
##            0            0            0            0            0            0 
##       Cranio   Tipo.parto     Ospedale        Sesso 
##            0            0            0            0

Il dataset non contiene valori nulli.

Il dataset non contiene valori duplicati.

Caricamento delle librerie necessarie per condurre l’analisi.

library(dplyr)
library(kableExtra)
library(tidyr)
library(corrplot)
library(car)
library(broom)
library(ggplot2)
library(plotly)
library(MASS)
library(lmtest)
library(gridExtra)

Imputazione dei valori anomali di Anni.madre:

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   25.00   28.00   28.16   32.00   46.00

Il summary() della variabile Anni.madre rivela la presenza di valori pari a 0 e 1, chiaramente non plausibili per l’età di una madre. Questi valori vengono imputati prima dell’analisi inferenziale con la media della variabile calcolata escludendoli, in modo che tutte le statistiche e i modelli successivi operino su dati coerenti.

## Valori anomali di Anni.madre (<=1): 1 0
## Media utilizzata per l'imputazione: 28.2 anni
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   13.00   25.00   28.00   28.19   32.00   46.00

2. Analisi e Modellizzazione:

2.1 Analisi Preliminare: nella prima fase, esploreremo le variabili attraverso un’analisi descrittiva per comprenderne la distribuzione e identificare eventuali outlier o anomalie.

Inoltre si saggeranno le seguenti ipotesi con i test adatti:

  • In alcuni ospedali si fanno più parti cesarei.

  • La media del peso e della lunghezza di questo campione di neonati sono significativamente uguali a quelle della popolazione.

  • Le misure antropometriche sono significativamente diverse tra i due sessi.

Statistiche descrittive per le variabili numeriche
Anni.madre N.gravidanze Gestazione Peso Lunghezza Cranio
Min. :13.00 Min. : 0.0000 Min. :25.00 Min. : 830 Min. :310.0 Min. :235
1st Qu.:25.00 1st Qu.: 0.0000 1st Qu.:38.00 1st Qu.:2990 1st Qu.:480.0 1st Qu.:330
Median :28.00 Median : 1.0000 Median :39.00 Median :3300 Median :500.0 Median :340
Mean :28.19 Mean : 0.9812 Mean :38.98 Mean :3284 Mean :494.7 Mean :340
3rd Qu.:32.00 3rd Qu.: 1.0000 3rd Qu.:40.00 3rd Qu.:3620 3rd Qu.:510.0 3rd Qu.:350
Max. :46.00 Max. :12.0000 Max. :43.00 Max. :4930 Max. :565.0 Max. :390

La tabella seguente riassume frequenze assolute e proporzioni per le quattro variabili categoriche del dataset.

Frequenze e proporzioni per le variabili categoriche
Variabile Categoria Frequenza Proporzione
Fumatrici 0 2396 0.9584
1 104 0.0416
Sesso F 1256 0.5024
M 1244 0.4976
Tipo.parto Ces 728 0.2912
Nat 1772 0.7088
Ospedale osp1 816 0.3264
osp2 849 0.3396
osp3 835 0.3340

Si osserva come il campione sia bilanciato per sesso (circa 50/50) e distribuito in modo uniforme tra i tre ospedali (circa 33% ciascuno). I parti naturali rappresentano la netta maggioranza (70.9%) rispetto ai cesarei (29.1%), mentre le madri fumatrici costituiscono solo il 4.2% del campione.

l grafico seguente mostra la distribuzione delle frequenze assolute dei parti cesarei e naturali nei tre ospedali.

Si può osservare come le proporzioni siano sostanzialmente omogenee tra le strutture: i parti cesarei oscillano tra 232 e 254, mentre quelli naturali tra 574 e 603, confermando visivamente l’assenza di associazione tra ospedale e tipo di parto che verrà poi verificata formalmente con il test chi-quadrato.

l grafico seguente confronta la distribuzione del peso neonatale tra madri fumatrici e non fumatrici tramite curve di densità sovrapposte.

Si può osservare come la curva delle fumatrici risulti leggermente spostata verso sinistra rispetto a quella delle non fumatrici, suggerendo un peso tendenzialmente inferiore nei neonati di madri fumatrici. Questo effetto verrà poi quantificato nel modello di regressione.

Vengono ora identificati gli outlier tramite il metodo IQR. La tabella seguente riporta, per ogni variabile numerica, le soglie IQR, il numero di outlier e la percentuale sul totale.

Outlier individuati con metodo IQR — dettaglio per variabile
Variabile Q1 Q3 IQR Soglia_inf Soglia_sup N_outlier Perc_outlier
25%…1 Peso 2990 3620 630 2045.0 4565.0 69 2.76%
25%…2 Lunghezza 480 510 30 435.0 555.0 59 2.36%
25%…3 Cranio 330 350 20 300.0 380.0 48 1.92%
25%…4 Gestazione 38 40 2 35.0 43.0 67 2.68%
25%…5 Anni.madre 25 32 7 14.5 42.5 11 0.44%

Gli outlier identificati vengono mantenuti nel dataset in questa fase. Eventuali osservazioni influenti verranno studiate nella diagnostica del modello (Sezione 2.3).

Si può notare quindi come le variabili numeriche del dataset neonatale mostrano distribuzioni complessivamente regolari e coerenti con dati clinici reali, pur presentando un numero non trascurabile di outlier (soprattutto per peso, lunghezza, cranio e settimane di gestazione) che riflettono la naturale variabilità biologica e la presenza di casi estremi come prematurità o neonati macrosomici. L’assenza di valori mancanti o duplicati conferma inoltre una buona qualità del dataset, rendendolo idoneo per le successive analisi inferenziali e per la costruzione del modello predittivo del peso neonatale.

In seguito a quanto emerso dall’analisi preliminare possiamo saggiare l’ipotesi che in alcuni ospedali si fanno più parti cesarei utlizzando il test di chi-quadrato. Considerate le due variabili categoriche: Tipo.parto (Nat / Ces) e Ospedale (Osp1 / osp2 / osp3), l’obiettivo è verificare se la frequenza dei parti cesarei dipende dall’ospedale.
L’ipotesi nulla \(H_0\) è che la proporzione di parti cesarei è la stessa nei tre ospedali e quindi non c’è associazione tra ospedale e tipo di parto.
L’ipotesi alternativa \(H_1\) è che la proporzione di parti cesarei è diversa in almeno un ospedale e quindi esiste un’associazione tra ospedale e tipo di parto.

## 
##  Pearson's Chi-squared test
## 
## data:  tab
## X-squared = 1.0972, df = 2, p-value = 0.5778
Frequenze e proporzioni per tipo di parto e ospedale
Ospedale Cesareo (n) Naturale (n) Cesareo (%) Naturale (%)
osp1 242 574 0.297 0.703
osp2 254 595 0.299 0.701
osp3 232 603 0.278 0.722

In base ai risultati del test del chi-quadrato, in particolare al p-value = 0.5778 > 0.05, non si rifiuta l’ipotesi nulla H_0 e quindi non ci sono differenze significative tra gli ospedali.

Saggiamo l’ipotesi successiva, ovvero che la media del peso e della lunghezza di questo campione di neonati sono significativamente uguali a quelle della popolazione, utilizzando il Test-t per singolo campione e assumendo (da linee guida cliniche) che il peso medio della popolazione sia pari a 3300 g e che la lunghezza media della popolazione sia pari a 500 mm. L’ipotesi nulla H_0 prevede che il peso campione sia uguale al peso della popolazione e che la lunghezza campione sia uguale alla lunghezza della popolazione.

## 
##  One Sample t-test
## 
## data:  df$Peso
## t = -1.516, df = 2499, p-value = 0.1296
## alternative hypothesis: true mean is not equal to 3300
## 95 percent confidence interval:
##  3263.490 3304.672
## sample estimates:
## mean of x 
##  3284.081
## 
##  One Sample t-test
## 
## data:  df$Lunghezza
## t = -10.084, df = 2499, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 500
## 95 percent confidence interval:
##  493.6598 495.7242
## sample estimates:
## mean of x 
##   494.692
Risultati dei test t per il confronto con le medie della popolazione
Variabile Media_campione Media_popolazione Differenza T_value P_value Decisione
Peso 3284.081 3300 -15.9192 -1.5160 0.1296 Non rifiuto H0
Lunghezza 494.692 500 -5.3080 -10.0841 0.0000 Rifiuto H0

In base ai risultati ottenuti dal t-test è possibile concludere che per la media del peso dei neonati non si rifiuta l’ipotesi nulla, con un p-value = 0.1296 > 0.05 e quindi la media del campione non differisce significativamente da quella della popolazione. Invece per la lunghezza media del neonati l’ipotesi nulla viene rifutata, con un p-value = 0 < 0.05 e quindi la media del campione è significativamente diversa da quella della popolazione.

La terza e ultima ipotesi da saggiare dice che le misure antropometriche (Peso, Lunghezza, Cranio) sono significativamente diverse tra i due sessi. Si utilizza anche in questo caso un Test-t per campioni indipendenti. La formulazione delle ipotesi ne prevede una nulla H_0: La media della variabile è uguale nei due sessi e una alternativa H_1: La media della variabile è diversa nei due sessi.

## 
##  Welch Two Sample t-test
## 
## data:  Peso by Sesso
## t = -12.106, df = 2490.7, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
##  -287.1051 -207.0615
## sample estimates:
## mean in group F mean in group M 
##        3161.132        3408.215
## 
##  Welch Two Sample t-test
## 
## data:  Lunghezza by Sesso
## t = -9.582, df = 2459.3, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
##  -11.929470  -7.876273
## sample estimates:
## mean in group F mean in group M 
##        489.7643        499.6672
## 
##  Welch Two Sample t-test
## 
## data:  Cranio by Sesso
## t = -7.4102, df = 2491.4, p-value = 1.718e-13
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
##  -6.089912 -3.541270
## sample estimates:
## mean in group F mean in group M 
##        337.6330        342.4486
Confronto delle misure antropometriche tra i due sessi (t-test)
Variabile Media_M Media_F T_value P_value Decisione
Peso 3408.2154 3161.1322 -12.1061 0 Rifiuto H0
Lunghezza 499.6672 489.7643 -9.5820 0 Rifiuto H0
Cranio 342.4486 337.6330 -7.4102 0 Rifiuto H0

A supporto dei t-test effettuati tra i sessi vengono rappresentati i risultati tramite violin plot con boxplot sovrapposti, che permettono di visualizzare sia la distribuzione complessiva dei dati sia i principali indicatori di posizione.

Si può osservare come per tutte e tre le misure antropometriche — peso, lunghezza e diametro cranico — la distribuzione dei maschi risulti sistematicamente spostata verso valori più alti rispetto a quella delle femmine, con mediane visibilmente differenti. La forma dei violin plot evidenzia inoltre una maggiore concentrazione attorno ai valori centrali per entrambi i sessi, con code più pronunciate verso i valori estremi inferiori (neonati prematuri o sottopeso).

In seguito all’analisi condotta è emerso che l’ipotesi nulla viene rifiutata in tutti e tre i casi essendo il p-value < 0.05 per tutte e tre le misure. Quindi le misure antropometriche sono significativamente diverse tra maschi e femmine. In particolare i maschi hanno un peso medio (differenza media di circa 247 g), una lunghezza media e una circonferenza cranica media significativamente maggiori rispetto alle femmine.

2.2 Creazione del modello di regressione: verrà sviluppato un modello di regressione lineare multipla che includa tutte le variabili rilevanti. In questo modo, potremo quantificare l’impatto di ciascuna variabile indipendente sul peso del neonato ed eventuali interazioni. Ad esempio, ci aspettiamo che una maggiore durata della gestazione aumenterebbe in media il peso del neonato.

Il processo di modellazione, come prima cosa, richiede la predisposizione di un modello completo ma solo con variabili che hanno senso logico in ottica predittiva. Per questo vengono escluse a priori le variabili Tipo.parto e Ospedale:

  • Tipo.parto viene deciso al momento del parto (spesso in emergenza); non è una variabile nota in anticipo e quindi non ha valore predittivo ex-ante.

  • Ospedale è una variabile logistica che non ha alcuna influenza biologica sul peso del neonato. Inoltre il test chi-quadrato (p = 0.578) ha confermato che la distribuzione dei parti non differisce tra ospedali.

Calcolo della correlazione tra le variabili e visualizzazione della matrice al fine di identificare la presenza di eventuali forti correlazioni. Si considerano a tal fine le variabili numeriche (Anni.madre, N.gravidanze, Gestazione, Peso, Lunghezza, Cranio).

Matrice di correlazione tra le variabili numeriche
Anni.madre N.gravidanze Gestazione Peso Lunghezza Cranio
Anni.madre 1.000 0.383 -0.135 -0.024 -0.065 0.016
N.gravidanze 0.383 1.000 -0.101 0.002 -0.060 0.039
Gestazione -0.135 -0.101 1.000 0.592 0.619 0.461
Peso -0.024 0.002 0.592 1.000 0.796 0.705
Lunghezza -0.065 -0.060 0.619 0.796 1.000 0.603
Cranio 0.016 0.039 0.461 0.705 0.603 1.000

Per analizzare le relazioni lineari tra le variabili numeriche si calcola la matrice di correlazione di Pearson, rappresentata graficamente tramite una heatmap con i coefficienti sovrapposti.

corrplot(cor_mat, method = "color", type = "upper",
         addCoef.col = "black", tl.col = "black", number.cex = 0.8)

Dalla matrice emergono correlazioni forti e positive tra le misure antropometriche: Peso–Lunghezza (0.80), Peso–Cranio (0.70) e Lunghezza–Cranio (0.60). La Gestazione mostra correlazioni moderate con Peso (0.59), Lunghezza (0.62) e Cranio (0.46), confermando che una maggiore durata della gravidanza si associa a una crescita fetale più avanzata. Le variabili materne (Anni.madre e N.gravidanze) presentano invece correlazioni molto deboli o nulle con le misure neonatali, suggerendo un impatto trascurabile. L’unica correlazione apprezzabile tra variabili materne è Anni.madre–N.gravidanze (0.38), fisiologicamente attesa. Nel complesso, non emergono valori superiori a 0.80 tali da indicare problemi di multicollinearità per il modello di regressione.

Per visualizzare nel dettaglio la forma delle relazioni bivariate tra le variabili numeriche si produce una scatterplot matrix, con scatter plot e smoother loess nel triangolo superiore e coefficienti di correlazione nel triangolo inferiore.

panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...) {
  usr <- par("usr"); on.exit(par(usr))
  par(usr = c(0, 1, 0, 1))
  r <- cor(x, y)
  txt <- format(c(r, 0.123456789), digits = digits)[1]
  txt <- paste0(prefix, txt)
  if(missing(cex.cor)) cex.cor <- 0.8 / strwidth(txt)
  text(0.5, 0.5, txt, cex = cex.cor, col = "red")
}

vars_num <- df[, c("Anni.madre", "N.gravidanze", "Gestazione",
                   "Peso", "Lunghezza", "Cranio")]

pairs(vars_num,
      upper.panel = panel.smooth,
      lower.panel = panel.cor,
      main = "Scatterplot matrix")

La scatterplot matrix conferma visivamente quanto evidenziato dalla matrice di correlazione. Le coppie Peso–Lunghezza, Peso–Cranio e Lunghezza–Cranio mostrano nuvole di punti con trend ascendente ben definito e smoother lineari, coerenti con le correlazioni elevate. Per Gestazione–Peso e Gestazione–Lunghezza si osserva una dispersione crescente con possibile lieve curvatura, che sarà indagata nella fase di modellazione tramite effetti quadratici. Le variabili materne (Anni.madre, N.gravidanze) non mostrano trend apprezzabili con le misure neonatali, confermando il loro scarso potere predittivo sul peso alla nascita.

Queste osservazioni confermano la coerenza fisiologica del dataset. Nel complesso, non emergono problemi di multicollinearità tali da compromettere la costruzione del modello di regressione multipla.

Al fine di verificare la normalità della variabile Peso si effettua uno Shapiro-Wilk test.

## 
##  Shapiro-Wilk normality test
## 
## data:  df$Peso
## W = 0.97066, p-value < 2.2e-16

Finora abbiamo riscontrato una distribuzione del peso asimmetrica, la presenza di outlier e una coda sinistra più lunga (ovvero con valori molto bassi). E’ quindi corretto aspettarsi come esito del test un p-value < 0.05 e il risultato lo conferma. Si rifiuta quindi l’ipotesi nulla H_0 per cui il peso sarebbe normalmente distribuito: il peso non è normalmente distribuito. Questo, tuttavia, non è un problema per la regressione lineare, perché la regressione richiede la normalità dei residui, non della variabile dipendente e con n = 2500, il teorema del limite centrale rende il modello robusto.

Creazione del modello di regressione lineare multipla con le sole variabili che hanno senso predittivo: Gestazione, Lunghezza, Cranio, Anni.madre, N.gravidanze, Fumatrici, Sesso.

## 
## Call:
## lm(formula = Peso ~ Gestazione + Lunghezza + Cranio + Anni.madre + 
##     N.gravidanze + Fumatrici + Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1160.62  -181.17   -15.91   163.47  2631.35 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -6711.5440   141.2543 -47.514  < 2e-16 ***
## Gestazione      32.8936     3.8259   8.598  < 2e-16 ***
## Lunghezza       10.2348     0.3009  34.010  < 2e-16 ***
## Cranio          10.5192     0.4268  24.644  < 2e-16 ***
## Anni.madre       0.8772     1.1487   0.764   0.4452    
## N.gravidanze    11.4029     4.6745   2.439   0.0148 *  
## Fumatrici      -30.2865    27.5981  -1.097   0.2726    
## SessoM          78.0898    11.2042   6.970 4.05e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 274.6 on 2492 degrees of freedom
## Multiple R-squared:  0.7272, Adjusted R-squared:  0.7264 
## F-statistic:   949 on 7 and 2492 DF,  p-value: < 2.2e-16
Coefficienti del modello completo (senza Tipo.parto e Ospedale)
term estimate std.error statistic p.value
(Intercept) -6711.5440 141.2543 -47.5139 0.0000
Gestazione 32.8936 3.8259 8.5976 0.0000
Lunghezza 10.2348 0.3009 34.0103 0.0000
Cranio 10.5192 0.4268 24.6440 0.0000
Anni.madre 0.8772 1.1487 0.7636 0.4452
N.gravidanze 11.4029 4.6745 2.4394 0.0148
Fumatrici -30.2865 27.5981 -1.0974 0.2726
SessoM 78.0898 11.2042 6.9697 0.0000

Una volta creato il modello completo calcoliamo il VIF per la verifica della multicollinearità:

Valori del VIF per la verifica della multicollinearità
vif_values
Gestazione 1.6937
Lunghezza 2.0787
Cranio 1.6289
Anni.madre 1.1892
N.gravidanze 1.1874
Fumatrici 1.0067
Sesso 1.0404

Da questi risultati emerge che tutti i VIF sono ben al di sotto della soglia critica di 5-10: non ci sono problemi di multicollinearità.

2.3 Attraverso tecniche di selezione del modello, come la minimizzazione del criterio di informazione di Akaike (AIC) o di Bayes (BIC), selezioneremo il modello più parsimonioso, eliminando le variabili non significative. Verranno considerati anche modelli con interazioni tra le variabili e possibili effetti non lineari.

Selezione del modello tramite AIC (stepwise), usando il metodo stepAIC, che prova aggiunte e rimozioni di variabili per minimizzare l’AIC.

## 
## Call:
## lm(formula = Peso ~ Gestazione + Lunghezza + Cranio + N.gravidanze + 
##     Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1149.44  -180.81   -15.58   163.64  2639.72 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -6681.1445   135.7229 -49.226  < 2e-16 ***
## Gestazione      32.3321     3.7980   8.513  < 2e-16 ***
## Lunghezza       10.2486     0.3006  34.090  < 2e-16 ***
## Cranio          10.5402     0.4262  24.728  < 2e-16 ***
## N.gravidanze    12.4750     4.3396   2.875  0.00408 ** 
## SessoM          77.9927    11.2021   6.962 4.26e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 274.6 on 2494 degrees of freedom
## Multiple R-squared:  0.727,  Adjusted R-squared:  0.7265 
## F-statistic:  1328 on 5 and 2494 DF,  p-value: < 2.2e-16

Secondo AIC, queste variabili aggiungono un piccolo miglioramento predittivo, sufficiente a giustificare la loro presenza.

Selezione del modello tramite BIC. Questo modello penalizza di più i modelli complessi, quindi tende a selezionare modelli più parsimoniosi.

## 
## Call:
## lm(formula = Peso ~ Gestazione + Lunghezza + Cranio + N.gravidanze + 
##     Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1149.44  -180.81   -15.58   163.64  2639.72 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -6681.1445   135.7229 -49.226  < 2e-16 ***
## Gestazione      32.3321     3.7980   8.513  < 2e-16 ***
## Lunghezza       10.2486     0.3006  34.090  < 2e-16 ***
## Cranio          10.5402     0.4262  24.728  < 2e-16 ***
## N.gravidanze    12.4750     4.3396   2.875  0.00408 ** 
## SessoM          77.9927    11.2021   6.962 4.26e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 274.6 on 2494 degrees of freedom
## Multiple R-squared:  0.727,  Adjusted R-squared:  0.7265 
## F-statistic:  1328 on 5 and 2494 DF,  p-value: < 2.2e-16

Secondo BIC, queste variabili non migliorano abbastanza il modello da giustificare la loro inclusione.

Variabili selezionate dai criteri AIC e BIC
Variabile Selezionata da AIC Selezionata da BIC
Gestazione
Lunghezza
Cranio
N.gravidanze
SessoM

Entrambi i modelli confermano che le misure antropometriche (Lunghezza, Cranio) e la durata della gestazione sono i principali predittori del peso neonatale, con un contributo significativo anche del sesso del neonato.

Prima di saggiare effetti quadratici o di interazione, si esamina graficamente la relazione tra ciascun predittore e il peso, con smoother loess, per individuare eventuali non-linearità. Si saggiano solo gli effetti che si ipotizzano dai grafici, non tutti quanti.

Osservando i grafici si nota una curvatura nel rapporto tra Gestazione e Peso e tra Lunghezza e Peso. Per Cranio, N.gravidanze e Anni.madre la relazione appare sostanzialmente lineare (o assente). Si saggia pertanto l’effetto quadratico solo per Gestazione e Lunghezza.

Secondo il principio di marginalità, quando si include un termine quadratico I(x^2), si mantiene sempre anche il corrispondente effetto principale x. Lo stesso vale per le interazioni: se si include A:B, si mantengono sia A sia B.

## 
## Call:
## lm(formula = Peso ~ Gestazione + I(Gestazione^2) + Lunghezza + 
##     I(Lunghezza^2) + Cranio + N.gravidanze + Fumatrici + Sesso, 
##     data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1191.75  -179.83   -13.33   165.58  1402.42 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -2.379e+03  9.056e+02  -2.627 0.008663 ** 
## Gestazione       3.370e+02  6.270e+01   5.374 8.40e-08 ***
## I(Gestazione^2) -3.877e+00  8.245e-01  -4.703 2.71e-06 ***
## Lunghezza       -3.210e+01  4.038e+00  -7.950 2.80e-15 ***
## I(Lunghezza^2)   4.364e-02  4.141e-03  10.539  < 2e-16 ***
## Cranio           1.044e+01  4.192e-01  24.910  < 2e-16 ***
## N.gravidanze     1.468e+01  4.252e+00   3.451 0.000568 ***
## Fumatrici       -2.456e+01  2.699e+01  -0.910 0.362981    
## SessoM           7.277e+01  1.100e+01   6.616 4.49e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 268.5 on 2491 degrees of freedom
## Multiple R-squared:  0.7393, Adjusted R-squared:  0.7385 
## F-statistic: 883.1 on 8 and 2491 DF,  p-value: < 2.2e-16

Si verificano anche possibili interazioni suggerite dal contesto clinico:

  • Gestazione e Fumatrici: il fumo potrebbe avere un effetto diverso a diverse età gestazionali.

  • Gestazione e Sesso: la crescita potrebbe differire tra i sessi nelle ultime settimane.

## 
## Call:
## lm(formula = Peso ~ Gestazione + I(Gestazione^2) + Lunghezza + 
##     I(Lunghezza^2) + Cranio + N.gravidanze + Fumatrici + Sesso + 
##     Gestazione:Fumatrici + Gestazione:Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1188.10  -181.69   -13.02   164.20  1403.40 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -2.398e+03  9.130e+02  -2.627 0.008677 ** 
## Gestazione            3.387e+02  6.362e+01   5.324 1.10e-07 ***
## I(Gestazione^2)      -3.922e+00  8.431e-01  -4.653 3.45e-06 ***
## Lunghezza            -3.200e+01  4.041e+00  -7.919 3.57e-15 ***
## I(Lunghezza^2)        4.354e-02  4.145e-03  10.505  < 2e-16 ***
## Cranio                1.044e+01  4.193e-01  24.887  < 2e-16 ***
## N.gravidanze          1.468e+01  4.253e+00   3.451 0.000568 ***
## Fumatrici             6.784e+02  7.449e+02   0.911 0.362481    
## SessoM               -1.176e+02  2.353e+02  -0.500 0.617286    
## Gestazione:Fumatrici -1.792e+01  1.896e+01  -0.945 0.344549    
## Gestazione:SessoM     4.894e+00  6.029e+00   0.812 0.417031    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 268.5 on 2489 degrees of freedom
## Multiple R-squared:  0.7395, Adjusted R-squared:  0.7384 
## F-statistic: 706.5 on 10 and 2489 DF,  p-value: < 2.2e-16

Di seguito si confrontano i modelli ottenuti:

Confronto tra modelli (AIC, BIC, R², R² adj, RMSE)
Modello AIC BIC R2 R2_adj RMSE
Completo lineare 35181.52 35233.94 0.727 0.726 274.615
AIC 35179.33 35220.10 0.727 0.726 274.604
BIC 35179.33 35220.10 0.727 0.726 274.604
Quadratico 35069.90 35128.14 0.739 0.738 268.498
Quadratico + Interazioni 35072.32 35142.21 0.739 0.738 268.521

Dal confronto emerge che il modello quadratico senza interazioni presenta il miglior trade-off tra capacità esplicativa e parsimonia: registra i valori più alti di R² e R² aggiustato, il più basso RMSE, e un BIC competitivo rispetto ai modelli più semplici. I termini di interazione non apportano un miglioramento sostanziale, pertanto si seleziona il modello quadratico come modello finale.

Di seguito si riportano i coefficienti stimati del modello finale con il relativo commento.

Coefficienti del modello finale
term estimate std.error statistic p.value
(Intercept) -2379.0609 905.5721 -2.6271 0.0087
Gestazione 336.9969 62.7042 5.3744 0.0000
I(Gestazione^2) -3.8773 0.8245 -4.7026 0.0000
Lunghezza -32.0986 4.0375 -7.9501 0.0000
I(Lunghezza^2) 0.0436 0.0041 10.5394 0.0000
Cranio 10.4425 0.4192 24.9105 0.0000
N.gravidanze 14.6751 4.2525 3.4509 0.0006
Fumatrici -24.5584 26.9912 -0.9099 0.3630
SessoM 72.7731 10.9991 6.6163 0.0000
## R² = 0.7393
## R² adj = 0.7385
## RMSE = 268.5 grammi

Vengono quindi interpretati i coefficienti con particolare attenzione ai punti seguenti:

  • Gestazione + I(Gestazione²): Effetto non lineare — il peso aumenta con le settimane di gestazione, ma con rendimenti decrescenti (o crescenti) a seconda del segno del termine quadratico. L’effetto principale è mantenuto in accordo con il principio di marginalità.

  • Lunghezza + I(Lunghezza²): Effetto non lineare — la lunghezza ha un impatto positivo sul peso, la curvatura cattura il fatto che a lunghezze molto elevate l’incremento marginale di peso si modifica. Anche qui l’effetto principale è mantenuto.

  • Cranio: Effetto lineare positivo — un cranio più grande è associato a un peso maggiore.

  • N.gravidanze: Effetto della parità — madri con più gravidanze tendono ad avere neonati leggermente più pesanti.

  • Fumatrici: Effetto negativo — il fumo materno riduce il peso neonatale.

  • Sesso (M): I maschi tendono a pesare di più rispetto alle femmine.

Il modello spiega circa il 74% della variabilità del peso neonatale e l’errore medio di previsione è di circa 268 grammi. I termini quadratici per gestazione e lunghezza sono risultati altamente significativi, indicando relazioni non strettamente lineari tra queste variabili e il peso alla nascita.

2.4 Una volta ottenuto il modello finale, valuteremo la sua capacità predittiva utilizzando metriche come R² e il Root Mean Squared Error (RMSE). Un’attenzione particolare sarà rivolta all’analisi dei residui e alla presenza di valori influenti, che potrebbero distorcere le previsioni, indagando su di essi.

A questo punto dell’analisi si effettua una diagnostica dei residui e, poichè si è ottenuto il modello finale, si valuta la sua capacità predittiva e il rispetto delle assunzioni.

Si analizzano i residui per verificare che: la varianza sia costante (omoschedasticità), i residui siano distribuiti normalmente, non ci siano pattern sistematici, non ci siano osservazioni influenti che distorcono il modello.

I grafici ottenuti si interpretano come segue:

  1. Residuals vs Fitted: Verifica linearità e omoschedasticità. La dispersione dovrebbe essere casuale e uniforme attorno allo 0.

  2. Normal Q-Q: Verifica normalità dei residui. I punti dovrebbero seguire la retta diagonale.

  3. Scale-Location: Verifica omoschedasticità. La linea rossa dovrebbe essere approssimativamente orizzontale.

  4. Residuals vs Leverage: Identifica osservazioni influenti (Cook’s distance).

Si eseguono i test formali di Breusch-Pagan, Durbin-Watson e Shapiro-Wilk sui residui e si riassumono i risultati ottenuti in una tabella.

## 
##  studentized Breusch-Pagan test
## 
## data:  mod_finale
## BP = 98.19, df = 8, p-value < 2.2e-16
## 
##  Durbin-Watson test
## 
## data:  mod_finale
## DW = 1.9499, p-value = 0.1052
## alternative hypothesis: true autocorrelation is greater than 0
## 
##  Shapiro-Wilk normality test
## 
## data:  residui
## W = 0.98911, p-value = 7.151e-13
Riepilogo test diagnostici sui residui
Test Statistica P_value Decisione
BP Breusch-Pagan (omoschedasticità) 98.1900 0.0000 Eteroschedasticità
DW Durbin-Watson (autocorrelazione) 1.9499 0.1052 No autocorrelazione
W Shapiro-Wilk (normalità residui) 0.9891 0.0000 Non normalità

Essendo i test formali molto sensibili, possono rifiutare H_0 anche per deviazioni minime dalla distribuzione teorica. È importante quindi valutare i risultati congiuntamente ai grafici diagnostici. Con n = 2500 il teorema del limite centrale garantisce comunque la robustezza dell’inferenza sui coefficienti.

Si passa allo studio degli outlier e alle osservazioni influenti:

Cook’s Distance:

## Numero di osservazioni con Cook's D > soglia: 131

DFFITS:

## Soglia DFFITS: 0.12
## Osservazioni con |DFFITS| > soglia: 131

Leverage (hat values):

## Osservazioni con leverage > soglia: 213

Le osservazioni flaggate contemporaneamente da almeno due dei tre criteri sono state esaminate: si tratta di un numero limitato di casi, tipicamente neonati molto prematuri o con peso estremo, i cui valori di Cook’s D, DFFITS e leverage superano le soglie ma rimangono contenuti. In nessun caso si osservano valori tali da compromettere la stabilità complessiva del modello.


3. Previsioni e Risultati:

Una volta validato il modello, lo useremo per fare previsioni pratiche. Ad esempio, potremo stimare il peso di una neonata considerando una madre alla terza gravidanza che partorirà alla 39esima settimana:

In questa fase di forecasting, dopo aver esaminato gli outlier, invece di una singola previsione puntuale, si costruisce una tabella con diversi scenari clinicamente rilevanti, variando settimane di gestazione e condizione di fumatrice/non fumatrice.

Previsione multi-scenario:

Previsione del peso neonatale per diversi scenari (femmina, 2ª gravidanza, misure medie)
Gestazione (sett.) Fumatrice Peso stimato (g) IC inf (g) IC sup (g)
36 No 3109.2 2581.9 3636.5
37 No 3163.2 2636.2 3690.2
38 No 3209.4 2682.5 3736.3
39 No 3247.8 2721.0 3774.6
40 No 3278.5 2751.7 3805.4
41 No 3301.5 2774.3 3828.6
36 3084.7 2554.9 3614.5
37 3138.6 2609.1 3668.1
38 3184.8 2655.5 3714.1
39 3223.3 2694.1 3752.5
40 3254.0 2724.7 3783.2
41 3276.9 2747.4 3806.4

Grafico Peso previsto / Gestazione, con banda di confidenza:

Di seguito un esempio di previsione puntuale:

Si calcolano le medie di lunghezza e cranio e si crea il nuovo caso da prevedere effettuando una previsione con intervallo di previsione. Stimiamo il peso di una neonata considerando una madre non fumatrice alla terza gravidanza che partorirà alla 39esima settimana:

Previsione puntuale: neonata, 39 sett., 3ª gravidanza, non fumatrice, misure medie
Peso stimato (g) IC inf (g) IC sup (g)
3262.51 2735.5 3789.53

Questa previsione rappresenta un’applicazione pratica del modello e dimostra la sua capacità di fornire stime clinicamente plausibili e coerenti con la fisiologia neonatale.


4. Visualizzazioni:

Infine, utilizzeremo grafici e rappresentazioni visive per comunicare i risultati del modello e mostrare le relazioni più significative tra le variabili. Ad esempio, potremmo visualizzare l’impatto del numero di settimane di gestazione e del fumo sul peso previsto.

Si usa plotly per generare un grafico 3D, interattivo e ruotabile, che mostra l’effetto combinato di Gestazione × Fumo sul Peso previsto, utilizzando il modello quadratico.

Questo tipo di grafico è molto utile perché visualizza l’effetto principale della gestazione, mostra la differenza tra fumatrici e non fumatrici, evidenzia eventuali divergenze nelle pendenze (interazioni) e comunica in modo intuitivo l’impatto del fumo sul peso neonatale.

Si può interpretare il grafico dicendo che la curva ascendente lungo l’asse della gestazione mostra l’aumento del peso previsto con l’avanzare delle settimane.
Le due “nuvole” di punti (fumatrici vs non fumatrici) sono separate verticalmente, quindi le fumatrici hanno un peso previsto inferiore a parità di gestazione.
La distanza tra le due superfici indica l’effetto del fumo: se il modello avesse un’interazione forte, le due superfici avrebbero pendenze diverse; nel caso in esame l’effetto è moderato, quindi le superfici sono quasi parallele.

In conclusione, per visualizzare l’effetto combinato delle settimane di gestazione e del fumo materno sul peso previsto, è stato prodotto un grafico 3D interattivo. Il grafico mostra due superfici distinte: una per le madri fumatrici e una per le non fumatrici. In entrambi i gruppi il peso previsto aumenta con la gestazione, ma la superficie relativa alle fumatrici risulta sistematicamente più bassa, indicando un effetto negativo del fumo sul peso neonatale. Questa rappresentazione consente di cogliere in modo immediato sia l’effetto principale della gestazione sia la differenza tra i due gruppi.

Si genera un secondo grafico 3D, sempre usando plotly, per visualizzare la relazione tra: Gestazione, Lunghezza e Peso previsto. Tale grafico permette di visualizzare i punti simulati dal modello, la superficie di regressione stimata e l’effetto combinato di due variabili chiave sul peso previsto.

La sua interpretazione consente di notare, osservando la superficie, come gestazione e lunghezza influenzano il peso previsto. La forma leggermente curva riflette i termini quadratici del modello, mentre le sue zone più alte corrispondono a neonati più maturi e più lunghi.

In sintesi, lo scatter plot 3D mostra la relazione tra settimane di gestazione, lunghezza del neonato e peso previsto dal modello quadratico. La superficie risultante evidenzia un incremento non lineare del peso con l’aumentare di entrambe le variabili, confermando la presenza di effetti quadratici e l’adeguatezza del modello nel catturare la fisiologia della crescita fetale.


Conclusioni:

Il modello quadratico finale spiega circa il 74% della variabilità del peso neonatale. Le variabili più rilevanti sono la durata della gestazione e le misure antropometriche (lunghezza e cranio), con effetti non lineari per gestazione e lunghezza. Il fumo materno ha un effetto negativo significativo. Le variabili Tipo.parto e Ospedale sono state escluse a priori in quanto prive di senso predittivo (il tipo di parto si decide al momento, l’ospedale non influenza il peso — confermato dal chi-quadro p = 0.578). Gli effetti quadratici sono stati saggiati solo dove i grafici loess suggerivano curvatura, e i relativi effetti principali sono stati mantenuti in accordo con il principio di marginalità. La diagnostica completa sui residui (Breusch-Pagan, Durbin-Watson, Shapiro-Wilk, QQ-plot) e lo studio delle osservazioni influenti (Cook’s distance, DFFITS, leverage) confermano la robustezza del modello. Le previsioni multi-scenario dimostrano l’applicabilità clinica del modello per supportare la pianificazione perinatale.

Tra i limiti del modello si segnalano l’errore standard dei residui (σ ≈ 268 g), che implica un margine di incertezza non trascurabile nelle previsioni individuali, e la lieve deviazione dalla normalità dei residui nelle code (evidenziata dal QQ-plot e dal test di Shapiro-Wilk), verosimilmente legata ai neonati prematuri o con peso estremo.

Come possibili sviluppi futuri, si potrebbe valutare l’inclusione di variabili aggiuntive (ad esempio BMI materno, etnia, patologie gestazionali), l’impiego di modelli robusti o a quantili per gestire meglio le osservazioni estreme, e la validazione su un campione indipendente per verificare la generalizzabilità dei risultati.