Nome:Gennarming__ Cognome:Tatino__ Matricola:_____________

Il file hi-dataset.csv contiene un database in formato CSV organizzato nella convezionale forma tabellare unità \(\times\) features. I dati riguardano la rilevazione Medical Expenditure Panel Survey (MEPS). Il file contiene moltissime features (corrispondenti alle colonne), tra cui:

Features/Colonne Descrizione
insure Copertura assicurativa
(1=coperto da assicurazione, 0=altrimenti)
COUNTIP Numero di visite ospedaliere
EXPENDIP Spese per visite ospedaliere
COUNTOP Numero di visite ambulatoriali
EXPENDOP Spese per visite ambulatoriali
RACE Etnia del paziente, descritta da attributi
(Asian, Black, Native, White e other)
REGION Regione del paziente descritta da attributi
(WEST, NORTHEAST, MIDWEST and SOUTH)
INCOME Reddito relativo rispetto alla linea della povertà
(POOR, NPOOR, LINCOME, MINCOME and HINCOME)
PHSTAT1 Autovalutazione dello stato fisico (0=eccellente,
1=molto buono, 2=buono, 3=sufficiente, 4=scarso))

1 Domanda (6pt)

Importa i dati in un oggetto data.frame o tibble chiamato X Indentifica le features che riportano missing values per una frazione superiore al 30% delle unità osservate.

Risposta.

X <- read.csv(file = "hi-dataset (1).csv", header = TRUE)
X <- as_tibble(X)
mv <- apply(X, 2, function(x) sum(is.na(x)) / length(x))
colnames(X)[which(mv > 0.3)]
## [1] "INDUSCLASS"

2 Domanda (6pt)

Scrivi il frammento di codice R necessario per: formattare REGION come fattore; calcolare la sua distribuzione di frequenze. Che tipo di variabile è REGION? Spiega brevemente quali sono le visualizzazioni univariate appropriate per questo tipo di variabili.

Risposta. Sappiamo che REGION: WEST, NORTHEAST, MIDWEST and SOUTH

X$REGION <- factor(X$REGION, levels = c("WEST",
                                      "NORTHEAST",
                                       "MIDWEST",
                                       "SOUTH"))
levels(X$REGION)
## [1] "WEST"      "NORTHEAST" "MIDWEST"   "SOUTH"
table(X$REGION)
## 
##      WEST NORTHEAST   MIDWEST     SOUTH 
##       287       137       192       381
table(X$REGION) / nrow(X)
## 
##      WEST NORTHEAST   MIDWEST     SOUTH 
## 0.2878636 0.1374122 0.1925777 0.3821464

Region è una variabile categoriale, e per visualizzare correttamentre la distribuzione univariata dovremmo utilizzare un barplot o un piechart.

3 Domanda (6pt)

Scrivi un frammento di codice in R per costruire una pipeline che:

  1. seleziona le sole osservazioni relative con autovalutazione dello stato fisico (PHSTAT1) pari ad eccellente (= 0) oppure molto buono (= 1)
  2. per il data set ottenuto, stima misure di centralità e dispersione robuste delle spese per visite ambulatoriali condizionatamente a REGION e PHSTAT.
  3. Commenta brevemente i risultati ottenuti.

Risposta.

X <- X %>%
  mutate(PHSTAT1 = ordered(PHSTAT1),
         PHSTAT = factor(PHSTAT, levels=c("EXCE",
                                          "VGOO",
                                          "GOOD",
                                          "FAIR",
                                          "POO"), ordered = TRUE))

X2 <- X %>%
  filter(PHSTAT1 == 0 | PHSTAT1 == 1)

trimean <- function(x){
  Q <- quantile(x, probs = c(0.25,0.5,0.75))
  return (Q[1]/4 + Q[2]/2 + Q[3]/4)
}


EXPENDOP_data <- X2 %>%
  group_by(REGION, PHSTAT) %>%
  summarise(median = median(EXPENDOP),
            trimean = trimean(EXPENDOP),
            mean_01 = mean(EXPENDOP, trim = .05),
            iqr = IQR(EXPENDOP),
            mad = mad(EXPENDOP))
EXPENDOP_data
## # A tibble: 8 × 7
## # Groups:   REGION [4]
##   REGION    PHSTAT median trimean mean_01   iqr   mad
##   <fct>     <ord>   <dbl>   <dbl>   <dbl> <dbl> <dbl>
## 1 WEST      EXCE     70     102.     235.  268. 104. 
## 2 WEST      VGOO    108.    200.     373.  584. 160. 
## 3 NORTHEAST EXCE     65.3   205.     459.  688.  96.9
## 4 NORTHEAST VGOO    307.    410.     801.  847. 456. 
## 5 MIDWEST   EXCE    194.    391.     896. 1176. 288. 
## 6 MIDWEST   VGOO    489.    712.    1798. 1768. 725. 
## 7 SOUTH     EXCE     42.9    93.9    273.  290.  63.6
## 8 SOUTH     VGOO    229.    311      521.  739. 340.

4 Domanda (4pt)

Riguardo alla variabile EXPENDOP: 1. ottieni un data set con le sole osservazioni per cui EXPENDOP>0 2. identifica i gross-outliers 3. calcola il numero di gross-outliers;

Risposta.

ESXP_0 <- X %>%
  filter(EXPENDOP > 0)

all_g0_expepo <- ESXP_0$EXPENDOP
Q <- quantile(all_g0_expepo, probs = c(0.25,0.5,0.75))
k <- 3
IQR <- Q[3] - Q[1]
Hinf <- Q[1] - k*IQR
Hsup <- Q[3] + k*IQR
go <- all_g0_expepo < Hinf | all_g0_expepo > Hsup
all_g0_expepo[go]
##  [1] 62811.07  8299.31  6833.13  6795.77 24204.59 29185.94 21754.40  7358.70
##  [9] 26071.69 10876.49 16811.20  9535.30 20244.77 14508.63  9371.76  7011.09
## [17] 10897.52 13685.90 19444.68 11597.68 10383.72  8524.21  9489.16  7502.15
## [25] 15111.70 32291.61  9637.04  8316.57  7345.52 10357.10  8628.09 11627.69
## [33] 17385.19 10303.21 11505.33  8305.42
length(all_g0_expepo[go])
## [1] 36

5 Domanda (4pt)

Per la distribuzione di EXPENDOP visualizza i boxplot paralleli condizionaziotamente a REGION e PHSTAT1. Usa i colori per condizionare su REGION. Ripeti lo stesso plot ignorando i gross-outliers trovati nel punto precendente. Commenta i risultati.

Risposta.

p1 <- ggplot(X, aes(x = PHSTAT1, y = EXPENDOP, fill = REGION))
p1 + geom_boxplot()

X_no_go <- X %>%
  filter(EXPENDOP >= Hinf & EXPENDOP <= Hsup)

p2 <- ggplot(X_no_go, aes(x = PHSTAT1, y = EXPENDOP, fill = REGION))
p2 + geom_boxplot()

Con la presenza dei sospetti gross outlines era impossibile la visualizzazione dei bloxplot. Dopo la rimozione riusciamo a vedere il bulk dei dati ma è evidente una forte pesantessa di tutte le code destre della distribuzione di EXPENDOP. Di consequenza, non possiamo pensare ai dati che abbiamo rimosso come gross outliners o comunque non tutti in quanto è una caratteristica intriseca di questa distribuzione la presenza di valori Dx molto lontani dalla media della distribuzione. Comunque credo che un paio di dati siano d’avvero sospetti outliers ma non possiamo confermarlo essendo che i dati sono pochi per le sottocategorie considerate.

6 Domanda (2pt)**

Visualizza e studia la relazione tra EXPENDOP e COUNTOP mediante smoothing lineare. Condiziona su REGION e PHSTAT1 usando un’opportuna tecnica (colori, faceting, etc). Commenta brevemente il risultato

Risposta.

p3 <- ggplot(X, aes(x = COUNTOP, y = EXPENDOP))
p3 + geom_point() + geom_smooth(method = "lm")

# considero il dataset senza i sospetti outliers
p3_no_go <- ggplot(X_no_go, aes(x = COUNTOP, y = EXPENDOP))
p3_no_go + geom_point() + geom_smooth(method = "lm")

p4 <- ggplot(X_no_go, aes(x = COUNTOP, y = EXPENDOP, color = PHSTAT1)) +              geom_point()
p4 + geom_smooth(method = "lm", se = FALSE) + 
  facet_wrap(~REGION, scale = "free")

Innanzitutto notiamo che le distribuzioni di EXPENDOP e COUNTOP non si può dire che sono indipendenti da REGION e PHSTAT, ovvero dall’area geografica e la condizione del paziente. Le distribuzioni delle nostre due variabili in considerazione cambia a seconda dei vari grafici rappresentati su video. Notiamo tuttavia che il range di appartenenza dei valori a ciascuna sottocategoria sono comunque simili, da 0 fino a 60000.

Successivamente, notiamo una pesante massa di dati vicino “all’origine degli assi”, questo rende poco efficace una rappresenazione grafica dei dati approssimabili ad una distribuzione lineare tramite lo smoothing.

7 Domanda (2pt)**

Programma la funzione ChIniziale(x) dove x è un vettore contente stringhe. La funzione deve restituire per ogni elemento di x la sua lettera iniziale. Suggerimento: la funzione strsplit() potrebbe essere molto utile. Dopo aver programmato la funzione applicala per ottenere la lettera iniziale del nome di tutti i produttori di auto nel campione.

Risposta.

ChIniziale <- function(x) {
  x_split <- strsplit(x, split = "")
  first_ch <- rep("", length(x))
  first_ch <- lapply(x_split, function(x) x[1])
  return (as.character(first_ch))
}

#test <- c("ciao", "Porva", "Acchio")
#ChIniziale(test)

ChIniziale(X$RACE)
##   [1] "W" "W" "W" "W" "W" "A" "W" "W" "W" "A" "B" "W" "B" "W" "W" "B" "W" "W"
##  [19] "W" "W" "A" "W" "W" "B" "W" "W" "B" "W" "W" "W" "A" "B" "W" "W" "W" "W"
##  [37] "W" "W" "A" "W" "W" "B" "W" "W" "W" "W" "B" "W" "B" "W" "W" "W" "W" "W"
##  [55] "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "O" "W" "W"
##  [73] "W" "W" "W" "B" "W" "B" "W" "W" "B" "W" "W" "W" "W" "W" "W" "A" "W" "W"
##  [91] "W" "W" "W" "W" "W" "W" "W" "W" "A" "B" "W" "W" "W" "W" "W" "W" "W" "A"
## [109] "W" "W" "W" "W" "W" "W" "W" "A" "B" "B" "W" "W" "W" "W" "W" "W" "B" "W"
## [127] "B" "W" "W" "W" "W" "W" "W" "W" "W" "B" "B" "W" "W" "A" "B" "W" "W" "W"
## [145] "W" "W" "W" "W" "W" "N" "W" "W" "W" "O" "B" "W" "W" "B" "W" "W" "W" "W"
## [163] "O" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "B" "W" "B" "W" "W"
## [181] "W" "W" "W" "A" "W" "W" "W" "B" "W" "W" "W" "W" "B" "B" "W" "W" "W" "W"
## [199] "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W"
## [217] "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "B" "W" "W" "W" "B" "B" "B" "W"
## [235] "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W" "N" "W" "W" "W" "W" "W"
## [253] "W" "W" "W" "B" "B" "W" "W" "W" "W" "W" "W" "W" "W" "W" "A" "W" "W" "A"
## [271] "B" "B" "W" "W" "A" "B" "W" "W" "B" "W" "B" "W" "W" "B" "W" "W" "W" "B"
## [289] "W" "W" "B" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "A" "W" "W" "W" "W"
## [307] "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W" "W" "B" "W" "A" "A" "A" "W"
## [325] "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "O" "W" "W" "W" "B" "B"
## [343] "W" "W" "W" "W" "N" "W" "W" "W" "W" "W" "W" "W" "W" "W" "N" "W" "W" "B"
## [361] "A" "W" "W" "W" "W" "W" "W" "B" "W" "W" "N" "B" "A" "W" "B" "W" "W" "W"
## [379] "W" "W" "W" "W" "A" "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "W"
## [397] "W" "W" "O" "W" "B" "A" "W" "B" "W" "W" "O" "B" "W" "W" "W" "W" "B" "W"
## [415] "W" "W" "W" "W" "W" "W" "B" "A" "B" "W" "W" "W" "W" "W" "W" "B" "W" "W"
## [433] "W" "W" "W" "O" "O" "W" "W" "A" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W"
## [451] "B" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "B" "W"
## [469] "W" "W" "W" "W" "W" "W" "W" "W" "B" "A" "W" "W" "B" "A" "W" "B" "W" "W"
## [487] "W" "B" "B" "W" "W" "N" "O" "W" "W" "W" "W" "W" "W" "B" "W" "W" "W" "B"
## [505] "W" "W" "W" "B" "B" "W" "W" "W" "B" "W" "W" "W" "W" "B" "W" "W" "W" "W"
## [523] "W" "W" "W" "W" "W" "W" "W" "W" "N" "W" "W" "W" "W" "B" "W" "W" "W" "W"
## [541] "W" "W" "B" "W" "W" "W" "A" "W" "W" "W" "W" "B" "W" "W" "W" "W" "B" "W"
## [559] "W" "B" "W" "A" "B" "B" "N" "W" "W" "W" "W" "W" "W" "W" "W" "W" "O" "W"
## [577] "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "B" "W" "W" "A" "B" "W"
## [595] "W" "W" "W" "W" "W" "W" "W" "A" "W" "W" "B" "B" "W" "W" "O" "W" "W" "W"
## [613] "B" "W" "W" "W" "W" "W" "A" "B" "W" "W" "W" "B" "W" "O" "W" "W" "W" "B"
## [631] "W" "W" "W" "W" "W" "W" "A" "W" "W" "B" "B" "W" "W" "W" "W" "W" "W" "W"
## [649] "W" "W" "W" "W" "B" "A" "O" "W" "B" "B" "B" "W" "W" "W" "W" "W" "W" "B"
## [667] "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "B" "W" "W" "W"
## [685] "W" "W" "A" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "W" "A" "W" "B"
## [703] "W" "A" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "B" "B" "W" "W"
## [721] "W" "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "B" "W" "W" "W" "W"
## [739] "B" "W" "W" "B" "W" "W" "W" "W" "W" "A" "W" "B" "W" "W" "W" "B" "B" "W"
## [757] "W" "W" "W" "W" "W" "W" "W" "W" "B" "A" "W" "O" "W" "B" "W" "W" "W" "W"
## [775] "O" "W" "W" "B" "B" "W" "W" "W" "W" "W" "W" "W" "A" "W" "W" "W" "W" "W"
## [793] "W" "O" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W" "B" "W" "W" "W" "W" "A"
## [811] "B" "W" "W" "W" "W" "W" "W" "B" "B" "B" "W" "W" "B" "B" "W" "W" "W" "W"
## [829] "B" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W" "W"
## [847] "W" "W" "W" "W" "A" "W" "W" "W" "W" "B" "W" "W" "O" "W" "W" "W" "B" "W"
## [865] "A" "W" "W" "W" "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "W" "O" "B" "W"
## [883] "W" "W" "W" "W" "W" "B" "W" "O" "W" "A" "W" "W" "W" "W" "W" "W" "B" "W"
## [901] "W" "W" "N" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W"
## [919] "B" "A" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "W" "B" "W"
## [937] "A" "O" "A" "B" "W" "W" "W" "W" "W" "W" "A" "W" "W" "W" "W" "W" "W" "B"
## [955] "W" "W" "W" "B" "W" "W" "W" "W" "W" "W" "W" "W" "B" "B" "W" "B" "A" "W"
## [973] "W" "B" "W" "W" "W" "W" "W" "B" "W" "O" "A" "W" "B" "W" "W" "W" "W" "W"
## [991] "B" "W" "B" "W" "W" "W" "B"