Esempi di statistica descrittiva e inferenziale/I tumori

Indice del libro

Caricamento librerieModifica

 library(dplyr)
 library(ggplot2)
 library(statsr)

Parte 1: DatiModifica

Il 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 ricercaModifica

Si 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 datiModifica

 
 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 inferenzialeModifica

Creo 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