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.

##  [1] Anni.madre   N.gravidanze Fumatrici    Gestazione   Peso        
##  [6] Lunghezza    Cranio       Tipo.parto   Ospedale     Sesso       
## <0 rows> (or 0-length row.names)

Il dataset non contiene valori duplicati.

Caricamento delle librerie necessarie per condurre l’analisi.

library(dplyr)
library(kableExtra)
library(corrplot)
library(car)
library(broom)
library(ggplot2)
library(plotly)

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 e distribuzioni
Anni.madre N.gravidanze Gestazione Peso Lunghezza Cranio
Min. : 0.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.16 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
Outlier individuati con metodo IQR e boxplot
Variabile N_outlier Valori_outlier
Peso 69 1370, 1340, 4680, 1500, 1850, 1560, 1280, 1750, 4600, 1285, 1550, 1410, 1900, 1720, 1980, 1390, 1450, 1970, 1190, 2000, 830, 1615, 1960, 1770, 1750, 1170, 2040, 1980, 4600, 4900, 1840, 1620, 1280, 1280, 4810, 2040, 4620, 1500, 2000, 990, 4760, 1800, 1430, 1950, 1970, 900, 1780, 4580, 4930, 4700, 4650, 4720, 1780, 1180, 1890, 1140, 1600, 1300, 930, 1750, 2000, 4690, 1580, 1170, 4720, 1690, 980, 930, 1730
Lunghezza 59 390, 400, 410, 405, 420, 420, 360, 430, 400, 410, 560, 380, 420, 390, 405, 360, 430, 310, 390, 430, 390, 420, 410, 420, 370, 430, 430, 410, 385, 390, 560, 315, 420, 340, 410, 430, 430, 380, 325, 420, 420, 410, 400, 430, 355, 370, 410, 380, 355, 410, 425, 400, 370, 430, 565, 405, 320, 345, 430
Cranio 48 298, 382, 287, 273, 285, 280, 390, 384, 295, 276, 382, 274, 289, 295, 386, 390, 277, 280, 272, 254, 297, 385, 295, 275, 266, 383, 390, 292, 292, 293, 278, 253, 277, 390, 381, 270, 267, 290, 276, 235, 294, 299, 298, 290, 273, 290, 265, 245
Gestazione 67 34, 33, 34, 30, 34, 34, 31, 34, 33, 28, 32, 28, 34, 34, 32, 33, 33, 31, 32, 34, 33, 33, 33, 33, 29, 34, 28, 32, 31, 33, 34, 34, 33, 30, 33, 34, 32, 29, 34, 29, 33, 31, 31, 32, 25, 32, 33, 34, 34, 33, 31, 32, 27, 33, 30, 28, 30, 32, 33, 34, 30, 33, 31, 27, 26, 31, 33
Anni.madre 13 13, 45, 43, 44, 44, 43, 14, 46, 1, 0, 14, 44, 44

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

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.

Calcolo della correlazione tra le variabili e visualizzazione della matrice al fine di indentificare 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.381 -0.136 -0.022 -0.063 0.016
N.gravidanze 0.381 1.000 -0.101 0.002 -0.060 0.039
Gestazione -0.136 -0.101 1.000 0.592 0.619 0.461
Peso -0.022 0.002 0.592 1.000 0.796 0.705
Lunghezza -0.063 -0.060 0.619 0.796 1.000 0.603
Cranio 0.016 0.039 0.461 0.705 0.603 1.000

Si nota come la matrice di correlazione evidenzia relazioni forti e positive tra le misure antropometriche (peso, lunghezza, cranio): neonati più lunghi e con cranio più ampio tendono ad avere anche un peso maggiore. Una correlazione moderata con la durata della gestazione indica che che più settimane di gestazione portano a una maggiore crescita fetale, sia in peso che in dimensioni corporee. Queste osservazioni confermano la coerenza fisiologica del dataset. Le variabili materne (età e numero di gravidanze) mostrano invece correlazioni molto deboli, suggerendo un impatto minimo sulle caratteristiche antropometriche neonatali. Le poche correlazioni negative (es. Anni.madre – Gestazione = −0.136) sono deboli e non indicano relazioni clinicamente significative. 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 Shapito-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 e rappresentazione del modello di regressione lineare multipla inserendo tutte le variabili rilevanti per spiegare il peso del neonato: Gestazione (settimane), Lunghezza, Cranio, Anni.madre, N.gravidanze, Fumatrici (0/1), Tipo.parto (Nat/Ces), Ospedale (osp1/osp2/osp3), Sesso (M/F).

## 
## Call:
## lm(formula = Peso ~ Gestazione + Lunghezza + Cranio + Anni.madre + 
##     N.gravidanze + Fumatrici + Tipo.parto + Ospedale + Sesso, 
##     data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1124.40  -181.66   -14.42   160.91  2611.89 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -6738.4762   141.3087 -47.686  < 2e-16 ***
## Gestazione       32.5696     3.8187   8.529  < 2e-16 ***
## Lunghezza        10.2945     0.3007  34.236  < 2e-16 ***
## Cranio           10.4707     0.4260  24.578  < 2e-16 ***
## Anni.madre        0.8921     1.1323   0.788   0.4308    
## N.gravidanze     11.2665     4.6608   2.417   0.0157 *  
## Fumatrici       -30.1631    27.5386  -1.095   0.2735    
## Tipo.partoNat    29.5254    12.0844   2.443   0.0146 *  
## Ospedaleosp2    -11.2095    13.4379  -0.834   0.4043    
## Ospedaleosp3     28.0958    13.4957   2.082   0.0375 *  
## SessoM           77.5409    11.1776   6.937 5.08e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 273.9 on 2489 degrees of freedom
## Multiple R-squared:  0.7289, Adjusted R-squared:  0.7278 
## F-statistic: 669.2 on 10 and 2489 DF,  p-value: < 2.2e-16
Modello di regressione lineare multipla per la previsione del peso neonatale
term estimate std.error statistic p.value
(Intercept) -6738.4762 141.3087 -47.6862 0.0000
Gestazione 32.5696 3.8187 8.5290 0.0000
Lunghezza 10.2945 0.3007 34.2364 0.0000
Cranio 10.4707 0.4260 24.5777 0.0000
Anni.madre 0.8921 1.1323 0.7879 0.4308
N.gravidanze 11.2665 4.6608 2.4173 0.0157
Fumatrici -30.1631 27.5386 -1.0953 0.2735
Tipo.partoNat 29.5254 12.0844 2.4433 0.0146
Ospedaleosp2 -11.2095 13.4379 -0.8342 0.4043
Ospedaleosp3 28.0958 13.4957 2.0818 0.0375
SessoM 77.5409 11.1776 6.9372 0.0000

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

Valori del VIF per la verifica della multicollinearità
GVIF Df GVIF_adj
Gestazione 1.6958 1 1.3022
Lunghezza 2.0858 1 1.4442
Cranio 1.6308 1 1.2770
Anni.madre 1.1875 1 1.0897
N.gravidanze 1.1864 1 1.0892
Fumatrici 1.0074 1 1.0037
Tipo.parto 1.0042 1 1.0021
Ospedale 1.0041 2 1.0010
Sesso 1.0406 1 1.0201

Da questi risultati emerge che le uniche variabili con un VIF un po’ più alto (ma comunque molto basso) sono: Peso, Lunghezza e Cranio e sono moderatamente correlate tra loro, con correlazioni tra 0.46 e 0.80. I valori delle altre variabili dimostrano che queste sono indipendenti tra loro e non introducono alcuna ridondanza nel modello. In generale comunque tutti i VIF di tutte sono molto bassi e di molto inferiori a 5, e anche le variabili più correlate (Lunghezza, Cranio, Gestazione) mostrano valori assolutamente accettabili.

2.2 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 + 
##     Tipo.parto + Ospedale + Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1113.18  -181.16   -16.58   161.01  2620.19 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -6707.4293   135.9438 -49.340  < 2e-16 ***
## Gestazione       31.9909     3.7896   8.442  < 2e-16 ***
## Lunghezza        10.3086     0.3004  34.316  < 2e-16 ***
## Cranio           10.4922     0.4254  24.661  < 2e-16 ***
## N.gravidanze     12.3619     4.3325   2.853  0.00436 ** 
## Tipo.partoNat    29.2803    12.0817   2.424  0.01544 *  
## Ospedaleosp2    -11.0227    13.4363  -0.820  0.41209    
## Ospedaleosp3     28.6408    13.4886   2.123  0.03382 *  
## SessoM           77.4412    11.1756   6.930 5.36e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 273.9 on 2491 degrees of freedom
## Multiple R-squared:  0.7287, Adjusted R-squared:  0.7278 
## F-statistic: 836.3 on 8 and 2491 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.

Quindi il criterio AIC ha selezionato un modello più complesso, includendo anche Tipo.parto e Ospedale, mentre il BIC ha scelto un modello più parsimonioso che mantiene solo le variabili con contributo realmente sostanziale. 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.

Consideriamo ora le interazioni tra variabili. Quelle più sensate, in base ai dati a disposizione, sono: Gestazione × Fumatrici (il fumo potrebbe influenzare la crescita fetale in modo diverso a seconda della durata della gravidanza), Sesso × Gestazione (maschi e femmine potrebbero crescere con pendenze diverse), Lunghezza × Cranio (due misure antropometriche fortemente correlate).

## 
## Call:
## lm(formula = Peso ~ Gestazione + Fumatrici + Sesso + Lunghezza + 
##     Cranio + N.gravidanze + Tipo.parto + Ospedale + Gestazione:Fumatrici + 
##     Lunghezza:Cranio, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1115.65  -181.51   -13.13   160.77  2843.89 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.837e+03  1.017e+03  -1.807  0.07081 .  
## Gestazione            3.873e+01  4.002e+00   9.678  < 2e-16 ***
## Fumatrici             1.038e+03  7.534e+02   1.378  0.16831    
## SessoM                7.363e+01  1.118e+01   6.587 5.47e-11 ***
## Lunghezza            -2.941e-01  2.201e+00  -0.134  0.89371    
## Cranio               -4.856e+00  3.188e+00  -1.523  0.12790    
## N.gravidanze          1.311e+01  4.320e+00   3.035  0.00243 ** 
## Tipo.partoNat         2.824e+01  1.203e+01   2.347  0.01900 *  
## Ospedaleosp2         -1.038e+01  1.338e+01  -0.776  0.43788    
## Ospedaleosp3          2.929e+01  1.343e+01   2.180  0.02933 *  
## Gestazione:Fumatrici -2.716e+01  1.918e+01  -1.416  0.15681    
## Lunghezza:Cranio      3.166e-02  6.523e-03   4.853 1.29e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 272.7 on 2488 degrees of freedom
## Multiple R-squared:  0.7315, Adjusted R-squared:  0.7303 
## F-statistic: 616.2 on 11 and 2488 DF,  p-value: < 2.2e-16

E’ possibile anche creare un modello con l’aggiunta di termini quadritici per ovviare a una relazione non perfettamente lineare (es. crescita fetale accelerata o rallentata).

## 
## Call:
## lm(formula = Peso ~ Gestazione + I(Gestazione^2) + Lunghezza + 
##     I(Lunghezza^2) + I(Cranio^2) + N.gravidanze + Tipo.parto + 
##     Ospedale + Sesso, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1153.34  -179.67    -8.42   156.34  1419.25 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -1.736e+03  9.046e+02  -1.919  0.05505 .  
## Gestazione       3.716e+02  6.245e+01   5.951 3.05e-09 ***
## I(Gestazione^2) -4.333e+00  8.213e-01  -5.276 1.44e-07 ***
## Lunghezza       -3.033e+01  4.027e+00  -7.531 7.00e-14 ***
## I(Lunghezza^2)   4.191e-02  4.133e-03  10.140  < 2e-16 ***
## I(Cranio^2)      1.535e-02  6.163e-04  24.903  < 2e-16 ***
## N.gravidanze     1.427e+01  4.237e+00   3.368  0.00077 ***
## Tipo.partoNat    2.701e+01  1.181e+01   2.287  0.02228 *  
## Ospedaleosp2    -1.107e+01  1.313e+01  -0.843  0.39921    
## Ospedaleosp3     3.099e+01  1.318e+01   2.351  0.01879 *  
## SessoM           7.196e+01  1.096e+01   6.563 6.39e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 267.6 on 2489 degrees of freedom
## Multiple R-squared:  0.7412, Adjusted R-squared:  0.7402 
## F-statistic: 712.8 on 10 and 2489 DF,  p-value: < 2.2e-16

Abbiamo ottenuto quindi quattro modelli: AIC (lineare), BIC (lineare), Interazioni, Quadratico. Possiamo confrontarli tramite una tabella comparativa:

Confronto tra modelli (AIC, BIC, R², RSE)
Modello AIC BIC R2 R2_adj RSE
Lineare AIC 35169.79 35228.03 0.729 0.728 273.916
Lineare BIC 35179.33 35220.10 0.727 0.726 274.604
Interazioni 35149.69 35225.40 0.732 0.730 272.654
Quadratico 35055.84 35125.73 0.741 0.740 267.638

Da questa tabella emerge che Il modello quadratico è quello che:
- ha R² e R² aggiustato più alti
- ha residual standard error più basso
- migliora il fit in modo migliore rispetto agli altri
Quindi risulta il modello più adatto.

Per la previsione del peso neonatale sono stati confrontati quattro modelli di regressione lineare: un modello lineare completo selezionato tramite AIC, un modello lineare più parsimonioso selezionato tramite BIC, un modello con termini di interazione e un modello con termini quadratici per gestazione, lunghezza e cranio.

Il modello quadratico ha mostrato le migliori prestazioni complessive, con R² = 0.7412, R² aggiustato = 0.7402 e il più basso errore standard dei residui (σ ≈ 268 g), risultando superiore sia ai modelli lineari sia al modello con interazioni.

I termini quadratici per gestazione, lunghezza e cranio sono risultati altamente significativi, indicando relazioni non strettamente lineari tra queste variabili e il peso alla nascita. In particolare, l’aumento della durata della gestazione e delle misure antropometriche è associato a un incremento del peso, ma con un andamento lievemente curvilineo.

Anche il numero di gravidanze, il tipo di parto, l’ospedale e il sesso del neonato contribuiscono in modo significativo al modello, seppur con effetti di entità minore rispetto alle variabili antropometriche. La diagnostica dei residui non evidenzia violazioni gravi delle assunzioni del modello (normalità, omoscedasticità, assenza di osservazioni eccessivamente influenti), confermando l’adeguatezza del modello quadratico per la descrizione e la previsione del peso neonatale.

2.3 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.

Utilizzo di:
- R² → quota di variabilità spiegata
- RMSE → errore medio di previsione in unità della variabile (grammi)
Per valutare quanto bene il modello predice il peso neonatale.

Metriche di valutazione del modello quadratico
Metrica Valore
R-squared 0.7412
R-squared aggiustato 0.7402
RMSE 267.0485

Si deduce che il modello spiega circa il 74% della variabilità del peso neonatale e l’errore medio di previsione è di circa 268 grammi,

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

Emerge che non c’è nessun pattern evidente e una buona omoscedasticità (Residuals vs Fitted), ci sono lievi deviazioni in coda (normale con n=2500, Normal Q-Q plot), la varianza è abbastanza costante (Scale-Location), ci sono alcune osservazioni influenti, ma nessuna dominante (Residuals vs Leverage / Cook’s distance).

Con il metodo del calcolo della distanza di Cook individuiamo dei punti che potrebbero potenzialmente distorcere il modello.

##  101  119  130  134  146  155  161  220  295  310  312  322  329  375  378  383 
##  101  119  130  134  146  155  161  220  295  310  312  322  329  375  378  383 
##  390  471  472  478  492  516  582  615  616  632  633  656  657  684  729  750 
##  390  471  472  478  492  516  582  615  616  632  633  656  657  684  729  750 
##  791  828  890  906  908  950  991 1036 1109 1132 1137 1181 1194 1215 1230 1253 
##  791  828  890  906  908  950  991 1036 1109 1132 1137 1181 1194 1215 1230 1253 
## 1268 1273 1287 1293 1306 1323 1341 1357 1385 1395 1399 1402 1426 1428 1429 1433 
## 1268 1273 1287 1293 1306 1323 1341 1357 1385 1395 1399 1402 1426 1428 1429 1433 
## 1450 1472 1505 1541 1551 1553 1556 1588 1593 1619 1635 1639 1694 1701 1712 1718 
## 1450 1472 1505 1541 1551 1553 1556 1588 1593 1619 1635 1639 1694 1701 1712 1718 
## 1743 1780 1838 1856 1868 1893 1915 1920 1926 1937 1962 1963 2023 2040 2076 2086 
## 1743 1780 1838 1856 1868 1893 1915 1920 1926 1937 1962 1963 2023 2040 2076 2086 
## 2087 2115 2120 2123 2132 2135 2175 2195 2204 2219 2221 2225 2287 2315 2317 2392 
## 2087 2115 2120 2123 2132 2135 2175 2195 2204 2219 2221 2225 2287 2315 2317 2392 
## 2421 2422 2452 2471 
## 2421 2422 2452 2471

Con 2500 osservazioni è normale avere alcuni punti con Cook’s distance > 4/n e spesso si tratta di neonati molto prematuri o macrosomici, già identificati come outlier nelle analisi preliminari. Quindi nessuno di questi punti compromette la stabilità del modello (come mostrato dal R² e dai residui)

Infine stampiamo la tabella finale dei coefficienti del modello di regressione quadratico.

Coefficienti del modello di regressione quadratico per la previsione del peso neonatale
term estimate std.error statistic p.value
(Intercept) -1736.2400 904.5767 -1.9194 0.0550
Gestazione 371.6037 62.4470 5.9507 0.0000
I(Gestazione^2) -4.3331 0.8213 -5.2757 0.0000
Lunghezza -30.3304 4.0274 -7.5311 0.0000
I(Lunghezza^2) 0.0419 0.0041 10.1401 0.0000
I(Cranio^2) 0.0153 0.0006 24.9026 0.0000
N.gravidanze 14.2694 4.2373 3.3676 0.0008
Tipo.partoNat 27.0051 11.8077 2.2871 0.0223
Ospedaleosp2 -11.0734 13.1331 -0.8432 0.3992
Ospedaleosp3 30.9933 13.1820 2.3512 0.0188
SessoM 71.9565 10.9637 6.5631 0.0000

Il modello finale selezionato è un modello di regressione quadratico che include termini lineari e quadratici per gestazione, lunghezza e diametro craniale, oltre a variabili cliniche e demografiche come numero di gravidanze, tipo di parto, ospedale e sesso del neonato.

Questo modello ha mostrato le migliori prestazioni complessive tra quelli considerati, con un R² pari a 0.7412 e un RMSE di circa 268 grammi, indicando un’elevata capacità predittiva.

L’analisi dei residui non evidenzia violazioni sostanziali delle assunzioni del modello: i residui risultano distribuiti in modo simmetrico, senza pattern sistematici, e la varianza appare sostanzialmente costante. Alcune osservazioni influenti sono state identificate tramite Cook’s distance, ma nessuna di esse compromette la stabilità del modello.

Nel complesso, il modello quadratico rappresenta una soluzione robusta per la previsione del peso neonatale, catturando in modo efficace sia le relazioni lineari sia le non linearità fisiologiche tipiche della crescita fetale.

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:

Si calcolano le medie di lunghezza e cranio e si crea il nuovo caso da prevedere effettuando una previsione con intervallo di confidenza. I risultati della previsione verranno rappresentati in tabella.

Previsione del peso neonatale per una neonata (39 settimane, 3ª gravidanza)
Stima CI_lower CI_upper
3260.99 3232.5 3289.47

Si genera un grafico di previsione per rappresentare i risultati ottenuti.

Utilizzando il modello quadratico validato, è stata effettuata una previsione del peso neonatale per una neonata alla 39ª settimana, figlia di una madre alla terza gravidanza. Impostando le misure antropometriche (lunghezza e diametro cranico) ai valori medi del campione, il modello stima un peso di circa 3260.99 grammi, con un intervallo di confidenza di circa ± 57 grammi.

La Figura mostra la previsione. Il punto rappresenta la stima puntuale, mentre la barra verticale indica l’intervallo di confidenza al 95%.

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 tuo caso 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 conclusione, si può dire che per visualizzare l’effetto combinato delle variabili più rilevanti, è stato prodotto uno scatter plot 3D che 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 della gestazione e della lunghezza, confermando la presenza di effetti quadratici e l’adeguatezza del modello nel catturare la fisiologia della crescita fetale.