Esempi di statistica descrittiva e inferenziale/I tumori
Caricamento librerie
modifica library(dplyr)
library(ggplot2)
library(statsr)
Parte 1: Dati
modificaIl dataset _cancer-data-for-MOOC-1-_1_.csv_ è formato da 66 osservazioni su pazienti e dalle seguenti 9 variabili:
- patient_id: Id del paziente
- age: età del paziente
- gender: sesso
- bmi: BMI indice di massa corporea
- smoking:indica se il paziente fuma, non fuma o non si sa
- fruit: porzioni di frutta giornaliere che il paziente mangia
- veg: porzioni di verdura giornaliere che il paziente mangia
- cancer: indica se ha paziente ha il cancro oppure no
Caricamento dei dati e visualizzazione sommaria di ciascuna variabile:
cancer <- read.csv("cancer-data-for-MOOC-1-_1_.csv")
cancer$cancer[cancer$cancer==0]<- "Cancro No"
cancer$cancer[cancer$cancer==1]<- "Cancro Si"
cancer$smoking [cancer$smoking==0]<- "No"
cancer$smoking[cancer$smoking==1]<- "Si"
cancer$smoking[cancer$smoking==2]<- "Non so"
cancer$gender <- as.factor(cancer$gender)
cancer$smoking <- as.factor(cancer$smoking)
cancer$cancer <- as.factor(cancer$cancer)
summary(cancer)
patient_id age gender bmi Min. : 1.00 Min. :39.00 0:33 Min. :10.81 1st Qu.:17.25 1st Qu.:54.00 1:33 1st Qu.:21.41 Median :33.50 Median :61.00 Median :24.78 Mean :33.50 Mean :61.02 Mean :24.22 3rd Qu.:49.75 3rd Qu.:69.75 3rd Qu.:27.30 Max. :66.00 Max. :89.00 Max. :40.62 smoking exercise fruit veg No :26 Min. :0 Min. :0.000 Min. :0.000 Non so:21 1st Qu.:0 1st Qu.:0.000 1st Qu.:2.000 Si :18 Median :1 Median :1.000 Median :3.000 NA's : 1 Mean :1 Mean :1.015 Mean :2.985 3rd Qu.:2 3rd Qu.:2.000 3rd Qu.:4.000 Max. :2 Max. :4.000 Max. :9.000 cancer Cancro No:51 Cancro Si:15
Nel dataset c'è solo un valore mancante nella variabile smoking:
colSums(is.na(cancer))
Parte 2: Domanda di ricerca
modificaSi vuole valutare se c'è un'associazione tra il consumo di almeno 5 porzioni di frutta e verdura e il fatto di avere il cancro o no. Inoltre si vuole sapere se l'indice di massa corporea varia in media tra chi ha il cancro e chi no.
Parte 3: Esplorazione dei dati
modifica
cancer %>%
ggplot(aes(bmi)) +
geom_histogram(bins = 10, fill="darkgreen", col="black")
cancer %>%
filter(!is.na(smoking))%>%
ggplot(aes(cancer, fill=smoking)) +
geom_bar()
cancer %>%
ggplot(aes(y=bmi, fill=gender)) +
geom_boxplot()
Parte 4: Statistica inferenziale
modificaCreo una variabile fruitveg che somma le porzioni di frutta e verdura e un'altra variabile che assume i 2 valori "Vegetali > 5" e "Vegetali < 5"
cancer <-cbind(cancer, fruitveg=cancer$fruit+cancer$veg)
cancer <-cbind(cancer, five_a_day=ifelse(cancer$fruitveg>=5,"Vegetali > 5","Vegetali < 5"))
cancer$fruitveg <- as.factor(cancer$fruitveg)
cancer$five_a_day <- as.factor(cancer$five_a_day)
table(cancer$five_a_day)
tramite la funzione inference si nota che non c'è associazione o dipendenza tra il consumo di almeno 5 porzioni di frutta e verdura oppure no e il fatto di avere il cancro, infatti vale l'ipotesi nulla essendo il p-value=0.0616 > 0.05:
inference(x=five_a_day, y = cancer, data = cancer, statistic = "proportion", type = "ht", alternative = "twosided", method = "theoretical",success = "Cancro Si")
Response variable: categorical (2 levels, success: Cancro Si) Explanatory variable: categorical (2 levels) n_Vegetali < 5 = 44, p_hat_Vegetali < 5 = 0.2955 n_Vegetali > 5 = 22, p_hat_Vegetali > 5 = 0.0909 H0: p_Vegetali < 5 = p_Vegetali > 5 HA: p_Vegetali < 5 != p_Vegetali > 5 z = 1.8693 p_value = 0.0616
Alla stessa conclusione si arriva tramite il test del Chi quadro. Essendo il p-value=0.1193 vale l'ipotesi nulla quindi non c'è associazione o dipendenza tra il mangiare almeno 5 porzioni di frutta e verdura e avere il cancro oppure no:
chisq.test(x=cancer$five_a_day, y = cancer$cancer)
Pearson's Chi-squared test with Yates' continuity correction data: cancer$five_a_day and cancer$cancer X-squared = 2.4265, df = 1, p-value = 0.1193
Valutando invece l'indice di massa corporea BMI, essendo p-value=0.3832>0.05, vale l'ipotesi nulla. I dati mostrano con evidenza che in media l'indice di massa corporea bmi non varia tra chi ha il cancro e chi no. In altri termini l'ipotesi nulla indica che in media l'indice di massa corporea tra chi ha il cancro eguaglia quello di chi non ce l'ha.
inference(y=bmi, x = cancer, data = cancer, statistic = "mean", type = "ht", alternative = "twosided", method = "theoretical",null=0)
Response variable: numerical Explanatory variable: categorical (2 levels) n_Cancro No = 51, y_bar_Cancro No = 24.5198, s_Cancro No = 4.8089 n_Cancro Si = 15, y_bar_Cancro Si = 23.1893, s_Cancro Si = 5.0946 H0: mu_Cancro No = mu_Cancro Si HA: mu_Cancro No != mu_Cancro Si t = 0.9003, df = 14 p_value = 0.3832