Quiz #3

- Fare un istogramma della variabile eduyrs

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.2.0
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(haven)
library(labelled)
library(ggplot2)

ess <- read_sav("ess_2008.sav")
ess <- unlabelled(ess)

ess %>%
ggplot(aes(x=eduyrs)) + geom_histogram(breaks = seq(0,50, by=5))
## Warning: Removed 566 rows containing non-finite values (`stat_bin()`).

- Confrontare il grafico con la variabile casuale normale, colorare il grafico e aggiungere un titolo.

ess %>%
ggplot(aes(x=eduyrs)) + 
geom_histogram(aes(y=..density..),breaks = seq(0,50,by=5),colour = 'green',fill='pink') +
labs(title="Istogramma della Variabile eduyrs",x="Anni di Educazione",y="Conteggio") +
stat_function(fun=dnorm,args=list(mean=mean(ess$eduyrs,na.rm=T),sd=sd(ess$eduyrs,na.rm=T)))
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 566 rows containing non-finite values (`stat_bin()`).

- Commentare la forma della distribuzione rispetto alla curva normale

print("Sicuramente la distribuzione delle frequenze è simmetrica rispetto alla curva normale poichè il grafico a istrogramma esprime una forma a campana come la curva normale")
## [1] "Sicuramente la distribuzione delle frequenze è simmetrica rispetto alla curva normale poichè il grafico a istrogramma esprime una forma a campana come la curva normale"

-Fare lo stesso grafico ma rappresentando la funzione di densità della variabile (suggerimento: utilizzare la funzione geom_density() specificando colour e fill, come nelle slide. Inoltre provare a specificare un’ulteriore parametro alpha = 0.7)

ess %>%
ggplot(aes(x=eduyrs)) +
geom_density(colour="purple",fill="yellow",alpha=0.7) +
labs(title="Densità della variabile eduyrs",x="Anni di Educazione",y="Conteggio") +
stat_function(fun=dnorm,args=list(mean=mean(ess$eduyrs,na.rm=T),sd=sd(ess$eduyrs,na.rm=T)))
## Warning: Removed 566 rows containing non-finite values (`stat_density()`).

- Rappresentare la variabile eduyrs mediante boxplot e commentare il grafico

ess2 <- ess %>%
mutate(eduyrs=as.numeric(eduyrs))

ess2 %>%
filter(!is.na(eduyrs)) %>%
ggplot(aes(y=eduyrs)) + geom_boxplot(fill="brown")

print("La coda posta in basso al boxplot di eduyrs rappresenta il 25% dei casi quindi tutti i casi che rientrano nel range di 0-9 anni di educazione, il box invece rappresenta il 50% dei casi. Esso racchiude dai 10 ai 14 anni di educazione. Infine la coda in alto rappresenta l'alto 25% dei casi cioè quelli dai 15 anni ai 30 anni spesi in educazione")
## [1] "La coda posta in basso al boxplot di eduyrs rappresenta il 25% dei casi quindi tutti i casi che rientrano nel range di 0-9 anni di educazione, il box invece rappresenta il 50% dei casi. Esso racchiude dai 10 ai 14 anni di educazione. Infine la coda in alto rappresenta l'alto 25% dei casi cioè quelli dai 15 anni ai 30 anni spesi in educazione"

- rappresentare graficamente la variabile eta e commentare il grafico

ess3 <- ess %>%
mutate(eta=as.numeric(eta))

ess3  %>%
filter(!is.na(eta)) %>%
ggplot(aes(y=eta)) + geom_boxplot(fill="cyan")

print("La coda bassa indica il primo 25% dei casi cioè tutti i casi relativi a morti nel range di età dai 0 a 30. Il box indica il 50% dei casi cioè di morte in età nel range 30-70. L'ultimo 25% cioè la coda alta che va da 70 a 100.")
## [1] "La coda bassa indica il primo 25% dei casi cioè tutti i casi relativi a morti nel range di età dai 0 a 30. Il box indica il 50% dei casi cioè di morte in età nel range 30-70. L'ultimo 25% cioè la coda alta che va da 70 a 100."

**- A partire dall’osservazione del grafico costruito per la variabile età, definire una nuova variabile categoriale *classe d’età. Trasformare la variabile in un factor ordinando opportunamente i livelli. (suggerimento: si può usare sia la funzione factor()* di R base che fct_relevel() del package forcats) {r}

ess4 <- ess %>%
mutate(classe_eta = case_when(eta >= 0 & eta < 30 ~ "Giovane Età", eta >=30 & eta < 67 ~ "Media Età", eta >=67 & eta <= 100 ~ "Anziana Età")) %>%
mutate(classe_eta = factor(classe_eta,levels=c("Giovane Età","Media Età","Anziana Età"),ordered=T))

table(ess4$classe_eta)
## 
## Giovane Età   Media Età Anziana Età 
##        8410       28078        8925
class(ess4$classe_eta)
## [1] "ordered" "factor"

- Rappresentare graficamente la nuova variabile

ess4 %>%
mutate(classe_eta=as.numeric(classe_eta))
## # A tibble: 45,681 × 78
##     idno cntry   tvtot  tvpol rdtot rdpol nwsptot nwsppol netuse polintr trstprl
##    <dbl> <fct>   <fct>  <fct> <fct> <fct> <fct>   <fct>   <fct>  <fct>   <fct>  
##  1     1 Austria Dall'… Da m… O     <NA>  dall'o… Da mez… Ogni … Abbast… 7      
##  2     2 Austria Più d… Da m… Dall… Meno… Da 2 o… Da mez… Non h… Poco i… 5      
##  3     3 Austria da 2 … Da m… Meno… O     Meno d… O       Più v… Poco i… 4      
##  4     5 Austria Dall'… Meno… Da m… Meno… Da mez… Meno d… Ogni … Abbast… 5      
##  5     7 Austria Da me… Meno… Meno… Meno… Meno d… Meno d… Più v… Poco i… 2      
##  6     8 Austria Da me… Meno… O     <NA>  Da mez… Da mez… Ogni … Abbast… 6      
##  7     9 Austria Più d… Meno… O     <NA>  O       <NA>    Non h… Poco i… 2      
##  8    13 Austria Meno … Meno… Più … Meno… Dall'o… Meno d… Una v… Abbast… 5      
##  9    18 Austria Più d… Da m… Più … Da m… Dall'o… Da mez… Una v… Poco i… 7      
## 10    20 Austria dall'… O     Più … Dall… O       <NA>    Non h… Per ni… Nessun…
## # … with 45,671 more rows, and 67 more variables: trstlgl <fct>, trstplc <fct>,
## #   trstplt <fct>, trstprt <fct>, trstep <fct>, trstun <fct>, vote <fct>,
## #   lrscale <fct>, stflife <fct>, stfeco <fct>, stfgov <fct>, stfdem <fct>,
## #   stfedu <fct>, stfhlth <fct>, gincdif <fct>, freehms <fct>, prtyban <fct>,
## #   scnsenv <fct>, euftf <fct>, happy <fct>, sclmeet <fct>, health <fct>,
## #   hlthhmp <fct>, rlgblg <fct>, rlgdnm <fct>, rlgdgr <fct>, ctzchtx <fct>,
## #   pyavtxw <fct>, flinsrw <fct>, mnyacth <fct>, olwmsop <fct>, …
# Versione boxplot
ess4 %>%
filter(!is.na(classe_eta)) %>%
ggplot(aes(y=classe_eta)) + geom_boxplot(fill="black")

# Graficamente con la distribuzione di frequenze ammirando come adesso abbiamo due frequenze con il 25% e una con il 50%
ess4 %>%
ggplot(aes(x=classe_eta)) + geom_bar()