I dati raccolti prevedono una serie di variabili che potrebbero risultare significative durante la modellizzazione statistica.
Variabile oggetto di analisi (variabile risposta):
Variabili esplicative di focus:
fumo materno
durata della gravidanza
df <- read.csv("neonati.csv")
attach(df)
summary(df[ , -c(3,8,9,10)]) # overview ad esclusione delle categoriali
## Anni.madre N.gravidanze Gestazione Peso
## Min. : 0.00 Min. : 0.0000 Min. :25.00 Min. : 830
## 1st Qu.:25.00 1st Qu.: 0.0000 1st Qu.:38.00 1st Qu.:2990
## Median :28.00 Median : 1.0000 Median :39.00 Median :3300
## Mean :28.16 Mean : 0.9812 Mean :38.98 Mean :3284
## 3rd Qu.:32.00 3rd Qu.: 1.0000 3rd Qu.:40.00 3rd Qu.:3620
## Max. :46.00 Max. :12.0000 Max. :43.00 Max. :4930
## Lunghezza Cranio
## Min. :310.0 Min. :235
## 1st Qu.:480.0 1st Qu.:330
## Median :500.0 Median :340
## Mean :494.7 Mean :340
## 3rd Qu.:510.0 3rd Qu.:350
## Max. :565.0 Max. :390
In primis, si consegue un’analisi esplorativa con l’obiettivo di comprendere come si distribuiscono i dati e se sono presenti anomalie e/o outliers. In questa sede, non si presterà particolare attenzione a differenze puntuali tra le variabili in termini di indici di posizione, varibilità e forma.
par(mfrow = c(1, 3),
mai = c(1, 1, 0.8, 0.8),
mar = c(2,2,2,2))
# Anni
boxplot(Anni.madre,
main = "Età della madre",
col = 5)
# N. Gravidanze
boxplot(N.gravidanze,
main = "Numero gravidanze passate",
col = 5)
# Periodo gestazione
boxplot(Gestazione,
main = "Durata gestazione (settimane)",
col = 5)
Osservando le variabili numeriche relative alle madri (età, numero di gravidanze passate, periodo gestazione):
l’età ha una distribuzione tendenzialmente simmetrica e assomiglia alla “normale”. Tuttavia, non mancano gli outliers e valori anomali. Nel campione sono presenti unità statistiche che non sono interpretabili (es. età in prossimità dello 0), può essere utile sostituirle con media/mediana prima della modellizzazione
L’età media delle madri di questo campione si aggira attorno ai 28 anni. Il 75% delle donne non supera i 32 anni, ma non mancano le eccezioni
la gran parte delle donne é alla prima o seconda gravidanza (il 75% del campione statistico in esame). Sono presenti anche casistiche che in questo senso sono outliers. Va tenuta in considerazione la presenza di valori elevati, che potrebbero mettere in dubbio la credibilità fisiologica
il peridono di gestazione “nella norma” in questo campione é di circa 39 settimane. La distribuzione ha una forte asimmetria negativa, questo suggerisce la presenza, anche se tendenzialmente rara, di unità con un periodo sensibilmente più breve rispetto al grosso del campione (presenza di outliers). Non sono presenti casi di gestazione estremamente prolungata rispetto alla norma intuibile
par(mfrow = c(1, 3),
mai = c(1, 1, 0.8, 0.8),
mar = c(2,2,2,2))
# Peso
boxplot(Peso,
main = "Peso neonato (g)",
ylab = "Peso",
col = 5)
# Lunghezza
boxplot(Lunghezza,
main = "Lunghezza del neonato (mm)",
ylab = "Lunghezza",
col = 5)
# Cranio
boxplot(Cranio,
main = "Diametro cranio (mm)",
ylab = "Diametro",
col = 5)
shapiro.test(Peso); moments::skewness(Peso)
##
## Shapiro-Wilk normality test
##
## data: Peso
## W = 0.97066, p-value < 2.2e-16
## [1] -0.6470308
moments::skewness(Lunghezza); moments::skewness(Cranio)
## [1] -1.514699
## [1] -0.7850527
Analizzando, invece, le distribuzioni delle variabili che descrivono i neonati registrati:
il peso del neonato (variabile di interesse), pur non superando lo Shapiro-Wilk test (si rifiuterebbe l’ipotesi nulla perché p-value < 0,05), si presenta con una distribuzione in linea con la “normale”. Mediamente i neonati pesano 3,3 kg. La distribuzione é leggermente asimettrica negativa, con la coda più lunga verso sinistra per la presenza di outliers, individui che sono sensibilmente sottopeso rispetto al grosso del campione. Si registrano anche neonati che pesano più della norma campionaria
lunghezza e diametro del cranio sono simili di termini di distribuzione, etrambe asimettriche negative, con la maggior parte dei neonati che tendenzialmente hanno lunghezza di 500 mm e un diametro del cranio di 340 mm. In linea con gli outliers (inferiori, e superiori) della lunghezza, sono presenti i neonati con minori/maggiori dimensioni del cranio, rispetto al resto della distribuzione
library(patchwork)
# Fumatrici
fumatrici_bar <- ggplot() +
geom_bar(
aes(x = as.factor(df$Fumatrici),
fill = as.factor(df$Fumatrici))) +
labs(title = "Distribuzione fumatrici", x = NULL, y = "Frequenza") +
scale_x_discrete(labels = c("0" = "No", "1" = "Si")) +
theme_classic() +
theme(legend.position = "none")
# Tipo parto
parto_bar <- ggplot() +
geom_bar(
aes(x = Tipo.parto,
fill = Tipo.parto)) +
labs(title = "Distribuzione per tipo parto", x=NULL, y = "Frequenza") +
scale_x_discrete(labels = c("Ces" = "Cesario", "Nat" = "Naturale")) +
theme_classic() +
theme(legend.position = "none")
# Ospedale
ospedale_bar <- ggplot() +
geom_bar(
aes(x = Ospedale,
fill = Ospedale)) +
labs(title = "Distribuzione per ospedale", x=NULL, y = "Frequenza") +
theme_classic() +
theme(legend.position = "none")
fumatrici_bar + parto_bar + ospedale_bar
Infine, si registra che le madri fumatrici sono in netta minoranza. Il parto globalmente più praticato in questo campione é quelo naturale. La frequenza dei parti é numercamente ben distribuiti tra i tre ospedali, ma domina l’Ospedale 2
Si fanno le seguenti ipotesi che si vogliono verificare tramite opportuni test:
Trattandosi di varibaili qualitative, é opportuno verificare il test Chi-Quadrato, ragionando sulle tabelle di contigenze.
In valore assoluto, in questo campione, é vero che in alcuni ospedali il parto cesario é più frequente. Tuttavia, effentuando il test, risulta che il p-value é superiore al livello di significatività (5%). Non si rifiuta l’ipotesi di indipendenza; tra le due variabili categoriali non c’é associazione statisticamente significativa, che potrebbe essere generalizzata.
test_ChiQuadrato <- chisq.test(Ospedale,Tipo.parto)
test_ChiQuadrato
##
## Pearson's Chi-squared test
##
## data: Ospedale and Tipo.parto
## X-squared = 1.0972, df = 2, p-value = 0.5778
test_ChiQuadrato$observed
## Tipo.parto
## Ospedale Ces Nat
## osp1 242 574
## osp2 254 595
## osp3 232 603
La ricerca suggerisce che il peso e la lunghezza medi dei neonati della popolazione sono rispettivamente 3300 g e 505 mm. Si vuole effettuare un T-Test per confrontare le rispettive medie del campione e quelle della popolazione.
Nel primo caso, il risultato del test, con il p-value oltre la soglia del 5%, suggerisce che si accetta l’ipotesi nulla, quindi il peso medio campionario dei neonati si conferma significativamente uguale a quello della popolazione. L’intervallo di confidenza contiene la statistica sotto l’ipotesi nulla (media della popolazione).
Nel secondo caso, invece, si legge il contrario. Il p-value é inferiore al livello di significatività e la statistica sotto l’ipotesi nulla non é contenuta nell’intervallo di confidenza. Pertanto, la media campionaria della lunghezza dei neonati é significativamente diversa dalla media della popolazione.
peso_medio_pop <- 3300
lunghezza_media_pop <- 505
t.test(Peso,
mu = peso_medio_pop,
alternative = "two.sided",
conf.level = 0.95) # livello di significatività al 5%
##
## One Sample t-test
##
## data: 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
t.test(Lunghezza,
mu = lunghezza_media_pop,
alternative = "two.sided",
conf.level = 0.95)
##
## One Sample t-test
##
## data: Lunghezza
## t = -19.583, df = 2499, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 505
## 95 percent confidence interval:
## 493.6598 495.7242
## sample estimates:
## mean of x
## 494.692
Eseguendo un T-Test per confronti multipli (gruppi indipedenti in base al sesso), su ciascuna misura antropometrica, l’ipotesi é confermata.
Per ciascuna misura, il p-value é sotto il livello di significatività del 5%, di conseguenza si rifiuta l’ipotesi nulla di uguaglianza delle medie. Tutte le misure sono significativamente differenti tra il gruppo dei maschi e il gruppo delle femmine
pairwise.t.test(Peso,
Sesso,
paired = F, # gruppi indipendenti (sesso diverso)
pool.sd = T, # ponderazione varianze gruppi
p.adjust.method = "bonferroni") # correzione p-value
##
## Pairwise comparisons using t tests with pooled SD
##
## data: Peso and Sesso
##
## F
## M <2e-16
##
## P value adjustment method: bonferroni
pairwise.t.test(Lunghezza,
Sesso,
paired = F,
pool.sd = T,
p.adjust.method = "bonferroni")
##
## Pairwise comparisons using t tests with pooled SD
##
## data: Lunghezza and Sesso
##
## F
## M <2e-16
##
## P value adjustment method: bonferroni
pairwise.t.test(Cranio,
Sesso,
paired = F,
pool.sd = T,
p.adjust.method = "bonferroni")
##
## Pairwise comparisons using t tests with pooled SD
##
## data: Cranio and Sesso
##
## F
## M 1.7e-13
##
## P value adjustment method: bonferroni
# Chr in Factor per poter manipolare variabili categoriali. Gestione dati errati
df$Tipo.parto <- as.factor(df$Tipo.parto)
df$Ospedale <- as.factor(df$Ospedale)
df$Sesso <- as.factor(df$Sesso)
df$Anni.madre[df$Anni.madre<13] <- median(Anni.madre)
?pairs
panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
{
par(usr = c(0, 1, 0, 1))
r <- abs(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 * r)
}
pairs(df, upper.panel = panel.smooth, lower.panel = panel.cor)
par(mfrow=c(1,3))
boxplot(Peso~Fumatrici,
main = "Peso in funzione del fumo",
col=5)
boxplot(Peso~Tipo.parto,
main = "Peso in funzione del parto",
col=5)
boxplot(Peso~Sesso,
main = "Peso in funzione del sesso",
col=5)
Dalla prima visione della matrice di correlazione e degli scatterplot per ciascuna coppia di variabili, si posso intuire alcune considerazioni rispetto alla variabile di risposta peso:
relazione lineare e significativa correlazione positiva con le misure antropometriche quali lunghezza e diametro del cranio
apparentemente buona correlazione numerica positiva con il periodo di gestazione, anche se lo scatterplot mostra la potenziale presenza di un effetto non lineare
l’età delle madre e il numero di gravidenze non sembrerebbero essere particolarmente correlate alla variabile di risposta, nell’ottica della successiva modellizzazione
vanno successivamente valutati gli effetti di interazione e/o effetti non lineari e il contributo delle variabili categoriali
Si formula il primo modello:
mod_1 <- lm(Peso ~ Anni.madre+N.gravidanze+Fumatrici+Gestazione+Lunghezza+Cranio+Tipo.parto+Ospedale+Sesso)
summary(mod_1)
##
## Call:
## lm(formula = Peso ~ Anni.madre + N.gravidanze + Fumatrici + Gestazione +
## Lunghezza + Cranio + Tipo.parto + Ospedale + Sesso)
##
## 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 ***
## 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
## 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 ***
## 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
Visto l’obiettivo e il focus della ricerca, si tenta di non considerare la variabile ospedale nel modello:
mod_2 <- update(mod_1, ~. -Ospedale)
summary(mod_2)
La riduzione della complessità del modello non ha portato ad un sostanziale peggioramento dell’adattamento. Si osserva, inolte, che é insignificante l’impatto della varibile esplicativa età, che verosimilmente può essere rimossa:
mod_3 <- update(mod_2, ~. -Anni.madre)
summary(mod_3)
Si valuta l’aggiunta dell’effetto non lineare sulla variabile gestazione per intuizione dalla lettura dello scatterplot/matrice di correlazione:
mod_4 <- update(mod_3, ~. +I(Gestazione^2))
summary(mod_4)
La performance del modello migliora leggermente e l’effetto non lineare sulla variabile gestazione statisticamente coglie meglio la relazione con il peso. Tuttavia, si preferisce la versione più semplice del modello (senza l’effetto non lineare).
Osservando le caratteristiche del modello 3, si intuisce quanto in realtà il fumo non impatti significativamente il peso neonatale. Pertanto, si verifica un ulteriore modello, trascurando la variabile esplicativa fumatrici:
mod_5 <- update(mod_3, ~. -Fumatrici)
summary(mod_5)
##
## Call:
## lm(formula = Peso ~ N.gravidanze + Gestazione + Lunghezza + Cranio +
## Tipo.parto + Sesso)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1129.31 -181.70 -16.31 161.07 2638.85
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -6707.2971 135.9911 -49.322 < 2e-16 ***
## N.gravidanze 12.7558 4.3366 2.941 0.0033 **
## Gestazione 32.2713 3.7941 8.506 < 2e-16 ***
## Lunghezza 10.2864 0.3007 34.207 < 2e-16 ***
## Cranio 10.5057 0.4260 24.659 < 2e-16 ***
## Tipo.partoNat 30.0342 12.0969 2.483 0.0131 *
## SessoM 77.9285 11.1905 6.964 4.22e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 274.3 on 2493 degrees of freedom
## Multiple R-squared: 0.7277, Adjusted R-squared: 0.727
## F-statistic: 1110 on 6 and 2493 DF, p-value: < 2.2e-16
anova(mod_5,mod_3)
## Analysis of Variance Table
##
## Model 1: Peso ~ N.gravidanze + Gestazione + Lunghezza + Cranio + Tipo.parto +
## Sesso
## Model 2: Peso ~ N.gravidanze + Fumatrici + Gestazione + Lunghezza + Cranio +
## Tipo.parto + Sesso
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 2493 187601677
## 2 2492 187501837 1 99840 1.3269 0.2495
BIC(mod_5,mod_3,mod_2,mod_1)
## df BIC
## mod_5 8 35221.75
## mod_3 9 35228.24
## mod_2 10 35235.35
## mod_1 12 35241.84
Si conferma l’intuizione. Da una breve verifica del modello emerge che é opportuno non includere la variabile esplicativa fumatrici nel modello. La bontà di adattamento del modello R^2 adj non é peggiorata; non sono state compromesse le variabili statisticmaente significative.
Così facendo, rimangono solo le variabili che spiegano significativamente la variabile risposta peso.
Per completezza, si verificano gli effetti delle possibili interazioni tra variabili esplicative:
mod_6 <- update(mod_5, ~. + N.gravidanze*Gestazione)
summary(mod_6)
##
## Call:
## lm(formula = Peso ~ N.gravidanze + Gestazione + Lunghezza + Cranio +
## Tipo.parto + Sesso + N.gravidanze:Gestazione)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1128.64 -183.39 -17.14 160.06 2637.68
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -6615.8120 158.9903 -41.611 < 2e-16 ***
## N.gravidanze -64.8781 70.0395 -0.926 0.3544
## Gestazione 29.8823 4.3614 6.852 9.17e-12 ***
## Lunghezza 10.2860 0.3007 34.207 < 2e-16 ***
## Cranio 10.5118 0.4261 24.672 < 2e-16 ***
## Tipo.partoNat 29.9535 12.0966 2.476 0.0133 *
## SessoM 77.8508 11.1902 6.957 4.42e-12 ***
## N.gravidanze:Gestazione 2.0010 1.8018 1.111 0.2669
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 274.3 on 2492 degrees of freedom
## Multiple R-squared: 0.7278, Adjusted R-squared: 0.727
## F-statistic: 951.9 on 7 and 2492 DF, p-value: < 2.2e-16
La modellizzazione dell’interazione tra il numero di gravidanze e il periodo di gestazione non mostra effetti statisticamente sensati e significativi sulla variabile di risposta, pertanto si predilige il modello senza interazioni.
Si sceglie il modello 5 come definitivo, con i migliori parametri di performance rispetto agli altri, e con un buon grado di semplicità.
Per questo modello si rileva che:
R^2 aggiustato é a 0,73
VIF delle variabili quantitative accettabile, il rischio di multicollinearità é contenuto
RMSE di 273,93. Non é il minimo tra i modelli, ma idoneo considerando tutti i criteri di valutazione osservati (ANOVA, BIC, …)
rmse <- function(x){
rmse = sqrt(mean((residuals(x)^2)))
return(rmse)
}
rmse(mod_3); rmse(mod_4); rmse(mod_5); rmse(mod_6)
## [1] 273.8626
## [1] 273.5909
## [1] 273.9355
## [1] 273.8678
BIC(mod_6,mod_5,mod_4,mod_3,mod_2,mod_1)
## df BIC
## mod_6 9 35228.34
## mod_5 8 35221.75
## mod_4 10 35231.10
## mod_3 9 35228.24
## mod_2 10 35235.35
## mod_1 12 35241.84
anova(mod_5,mod_4,mod_3)
## Analysis of Variance Table
##
## Model 1: Peso ~ N.gravidanze + Gestazione + Lunghezza + Cranio + Tipo.parto +
## Sesso
## Model 2: Peso ~ N.gravidanze + Fumatrici + Gestazione + Lunghezza + Cranio +
## Tipo.parto + Sesso + I(Gestazione^2)
## Model 3: Peso ~ N.gravidanze + Fumatrici + Gestazione + Lunghezza + Cranio +
## Tipo.parto + Sesso
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 2493 187601677
## 2 2491 187129989 2 471687 3.1395 0.04348 *
## 3 2492 187501837 -1 -371848 4.9499 0.02618 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
car:: vif(mod_5)
## N.gravidanze Gestazione Lunghezza Cranio Tipo.parto Sesso
## 1.024171 1.669258 2.080039 1.626199 1.003438 1.040060
par(mar=c(4,4,2,1))
par(mfrow = c(2,2))
plot(mod_5)
shapiro.test(residuals(mod_5))
##
## Shapiro-Wilk normality test
##
## data: residuals(mod_5)
## W = 0.97411, p-value < 2.2e-16
lmtest::bptest(mod_5)
##
## studentized Breusch-Pagan test
##
## data: mod_5
## BP = 90.981, df = 6, p-value < 2.2e-16
lmtest::dwtest(mod_5)
##
## Durbin-Watson test
##
## data: mod_5
## DW = 1.9533, p-value = 0.121
## alternative hypothesis: true autocorrelation is greater than 0
Analizzando i test numerici per un livello di significatività del 5%, in prima battuta si osserva che:
i residui non superano il test di normalità (Shapiro-Wilk)
i residui non superano il test di omoschedasticità (Breusch-Pagan)
i residui superano il test di indipendenza (Durbin-Watson)
Tuttavia, dall’analisi grafica emergono alcuni outliers, in particolare l’osservazione 1551, che impatta i test numerici dei residui. Complessivamente, al netto dell’osservazione citata, le assunzioni di normalità, omoschedasticità e indipendenza dei residui potrebbero essere date per buone ai fini predittivi.
df[1551,]
## Anni.madre N.gravidanze Fumatrici Gestazione Peso Lunghezza Cranio
## 1551 35 1 0 38 4370 315 374
## Tipo.parto Ospedale Sesso
## 1551 Nat osp3 F
# Leverage
par(mfrow=c(1,3))
lev <- hatvalues(mod_5)
plot(lev)
# Outliers
plot(rstudent(mod_5))
abline(h=c(-2, 2), col=2)
car:: outlierTest(mod_5)
## rstudent unadjusted p-value Bonferroni p
## 1551 10.059389 2.3162e-23 5.7905e-20
## 155 5.011861 5.7689e-07 1.4422e-03
## 1306 4.801062 1.6717e-06 4.1792e-03
# Cook
cooks_dist <- cooks.distance(mod_5)
plot(cooks_dist)
L’outlier 1551 potrebbe essere un fenomeno anomalo dal punto di vista biologico, e non un dato errato. In assenza di ulteriori considerazioni mediche, potrebbe essere un caso reale e va considerato nel modello.
Si implementa il modello per prevedere il peso di una neonata considerando una madre alla terza gravidanza che partorirà alla 39esima settimana.
predict(mod_5,
newdata = data.frame(
N.gravidanze=2, # nel dataset 0 equivale ad essere alla prima gravidanza
Gestazione=39,
Lunghezza = mean(Lunghezza),
Cranio = mean(Cranio),
Tipo.parto= "Nat", # tendenzialmente il più frequnete
Sesso = "F"))
## 1
## 3267.678
In questo caso, utilizzando la media sul dataset per i parametri che non sono stati forniti come input, il peso previsto é di 3.267 g (o 3,27 kg).
L’impatto crescente del periodo di gestazione sul peso neonatale é analogo per entrambi i sessi, con la differenza che mediamente i maschi pesano di più.
L’effetto della lunghezza sul peso, invece, é rappresentato da una curva lineare più accentuta che cresce rapidamente all’aumentare della variabile esplicativa. Tale tendenza non appare particolarmente differente tra i due sessi, diversamente dal periodo di gestazione.
peso_gestazione_sesso <- ggplot() +
geom_point(aes(
x = Gestazione,
y = Peso,
col = Sesso),
position = "jitter") +
geom_smooth(aes(
x = Gestazione,
y = Peso,
col = Sesso),
method = "lm",
se = T) +
theme(legend.position = "none")
peso_lunghezza_sesso <- ggplot() +
geom_point(aes(
x = Lunghezza,
y = Peso,
col = Sesso),
position = "jitter") +
geom_smooth(aes(
x = Lunghezza,
y = Peso,
col = Sesso),
method = "lm",
se = T)
peso_gestazione_sesso + peso_lunghezza_sesso
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
Dai dati osservati, inoltre, si riporta che nel caso di periodo di gestazione inferiore a 35 settimane, si registra il peso neonatale più alto per le casistiche di parto cesario. Nell’intorno delle 40 settimane, tuttavia, la tipologia di parto non sembra avere impatti sul peso neonatale.
ggplot() +
geom_point(aes(
x = Gestazione,
y = Peso,
col = Tipo.parto),
position = "jitter") +
geom_smooth(aes(
x = Gestazione,
y = Peso,
col = Tipo.parto),
method = "lm",
se = F)
## `geom_smooth()` using formula = 'y ~ x'
Come é emerso dalla fase di modellizzazione, il fatto di essere fumatrice o meno non ha un effetto statisticamente significativo sulla variabile studio in termini predittivi. In questo campione i due gruppi sono sbilanciati (più casi di madri non fumatrici); tuttavia, in corrispondenza del periodo mediano di gestazione (39 settimane) il peso dei neonati delle madri non fumatrici risulta essere superiore.
ggplot() +
geom_point(aes(
x = Gestazione,
y = Peso,
col = as.factor(Fumatrici)),
position = "jitter") +
geom_smooth(aes(
x = Gestazione,
y = Peso,
col = as.factor(Fumatrici)),
method = "lm",
se = T) +
labs(color = "Stato Fumatrici") +
scale_color_discrete(name = "Stato Fumatrici",
labels = c("Non Fumatrice", "Fumatrice"))
## `geom_smooth()` using formula = 'y ~ x'