title: "Analisi dei neonati" author: "Tuo Nome" output: html_document ---

Introduzione

In questo documento eseguiamo un'analisi dei dati relativi ai neonati, includendo statistiche descrittive, analisi di distribuzione, test statistici e costruzione di modelli predittivi.

```{r setup, include=FALSE}

Carica le librerie necessarie

library(tidyverse) # ggplot2 è incluso in tidyverse, quindi può essere sufficiente caricare tidyverse library(caret) # Per machine learning e analisi statistica library(ggplot2) # Per la creazione di grafici library(car) # Per l'analisi di regressione library(lmtest) # Per il test di ipotesi nei modelli library(knitr) # Per l'integrazione di risultati nel documento Caricamento e esplorazione dei dati {r Copia

Carica il dataset in formato CSV

dataset <- read.csv("C:/Users/carbaren/Desktop/R/neonati.csv")

Verifica i nomi delle colonne del dataset

colnames(dataset)

Visualizza le prime righe del dataset per una rapida panoramica

head(dataset)

Statistiche descrittive per avere un'idea generale del dataset

summary(dataset)

Verifica la presenza di valori mancanti nel dataset

sapply(dataset, function(x) sum(is.na(x))) Distribuzioni e grafici {r Copia

Distribuzione del peso del neonato

ggplot(dataset, aes(x = Peso)) + geomhistogram(binwidth = 50, fill = "blue", color = "black") + thememinimal() + labs(title = "Distribuzione del peso del neonato") {r Copia

Distribuzione della durata della gravidanza

ggplot(dataset, aes(x = Gestazione)) + geomhistogram(binwidth = 1, fill = "green", color = "black") + thememinimal() + labs(title = "Distribuzione della durata della gravidanza") Analisi Statistiche {r Copia

Creiamo una tabella delle frequenze tra ospedale e tipo di parto

hospitalpartocesareo <- table(dataset$Ospedale, dataset$Tipo.parto) hospitalpartocesareo {r Copia

Eseguiamo un test chi-quadrato per verificare se la distribuzione del tipo di parto dipende dall'ospedale

chisq.test(hospitalpartocesareo) {r Copia

Test t per verificare se il peso è significativamente diverso dalla media della popolazione (3200g)

t.test(dataset$Peso, mu = 3200) {r Copia

Test t per verificare se la lunghezza è significativamente diversa dalla media della popolazione (50 cm)

t.test(dataset$Lunghezza, mu = 50) Analisi di regressione {r Copia

Creazione di un modello di regressione lineare con diverse variabili predittive

modello <- lm(Peso ~ Anni.madre + N.gravidanze + Fumatrici + Gestazione + Lunghezza + Cranio + Tipo.parto + Ospedale + Sesso, data = dataset)

Riepilogo del modello per ottenere informazioni sui coefficienti e significatività

summary(modello) {r Copia

Selezione del modello ottimale usando il passo indietro (stepwise)

modello_selezionato <- step(modello, direction = "both")

Riepilogo del modello ottimale

summary(modello_selezionato) Valutazione del modello {r Copia

Calcoliamo i criteri AIC e BIC per il modello selezionato

AIC(modelloselezionato) BIC(modelloselezionato)

Calcoliamo il valore di R² per valutare la bontà di adattamento del modello

rsq <- summary(modello_selezionato)$r.squared cat("R²:", rsq)

Calcoliamo il RMSE (Root Mean Squared Error) per valutare la qualità del modello

pred <- predict(modello_selezionato)

Calcoliamo i residui

residui <- dataset$Peso - pred

Calcoliamo il RMSE

rmse <- sqrt(mean(residui^2))

Visualizza il valore del RMSE

cat("RMSE:", rmse) {r Copia

Visualizzazione dei residui per verificare eventuali pattern non catturati dal modello

plot(residui, main = "Residui del modello", xlab = "Indice dei dati", ylab = "Residui") abline(h = 0, col = "red")

Distribuzione dei residui

hist(residui, main = "Distribuzione dei residui", xlab = "Residui", col = "gray", border = "black") Previsioni {r Copia

Creazione di un nuovo dato per la previsione

nuovo_dato <- data.frame( Anni.madre = 28, N.gravidanze = 3, Fumatrici = 0, Gestazione = 39, Lunghezza = 50, Cranio = 34, Tipo.parto = "Nat", # Esempio: "Nat" per parto naturale Ospedale = "osp1", # Esempio: "osp1" per ospedale 1 Sesso = "M" # Sesso: "M" per maschio )

Assicuriamoci che le variabili categoriche siano trattate correttamente come fattori

nuovodato$Tipo.parto <- factor(nuovodato$Tipo.parto, levels = levels(dataset$Tipo.parto)) nuovodato$Ospedale <- factor(nuovodato$Ospedale, levels = levels(dataset$Ospedale)) nuovodato$Sesso <- factor(nuovodato$Sesso, levels = levels(dataset$Sesso))

Previsione del peso del neonato per il nuovo caso

previsione <- predict(modelloselezionato, nuovodato)

Stampa il risultato

cat("Il peso previsto del neonato è:", previsione, "grammi") Grafici e analisi finali {r Copia

Creiamo un grafico per visualizzare l'effetto della durata della gravidanza sul peso

ggplot(dataset, aes(x = Gestazione, y = Peso)) + geompoint() + geomsmooth(method = "lm", color = "blue") + labs(title = "Impatto della durata della gravidanza sul peso del neonato", x = "Durata della gravidanza (settimane)", y = "Peso del neonato (grammi)") {r Copia

Creiamo un boxplot per visualizzare l'effetto del fumo sul peso

ggplot(dataset, aes(x = Fumatrici, y = Peso, fill = factor(Fumatrici))) + geom_boxplot() + labs(title = "Differenze nel peso tra fumatrice e non fumatrice")