Basandosi sulla distribuzione di frequenza della variabile Income, definire una variabile categoriale ordinata con le modalità basso/medio/alto e calcolare il bilancio medio all’interno dei gruppi definiti dalla nuova variabile
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("ISLR")
data("Credit",package="ISLR")
summary(Credit)
## ID Income Limit Rating
## Min. : 1.0 Min. : 10.35 Min. : 855 Min. : 93.0
## 1st Qu.:100.8 1st Qu.: 21.01 1st Qu.: 3088 1st Qu.:247.2
## Median :200.5 Median : 33.12 Median : 4622 Median :344.0
## Mean :200.5 Mean : 45.22 Mean : 4736 Mean :354.9
## 3rd Qu.:300.2 3rd Qu.: 57.47 3rd Qu.: 5873 3rd Qu.:437.2
## Max. :400.0 Max. :186.63 Max. :13913 Max. :982.0
## Cards Age Education Gender Student
## Min. :1.000 Min. :23.00 Min. : 5.00 Male :193 No :360
## 1st Qu.:2.000 1st Qu.:41.75 1st Qu.:11.00 Female:207 Yes: 40
## Median :3.000 Median :56.00 Median :14.00
## Mean :2.958 Mean :55.67 Mean :13.45
## 3rd Qu.:4.000 3rd Qu.:70.00 3rd Qu.:16.00
## Max. :9.000 Max. :98.00 Max. :20.00
## Married Ethnicity Balance
## No :155 African American: 99 Min. : 0.00
## Yes:245 Asian :102 1st Qu.: 68.75
## Caucasian :199 Median : 459.50
## Mean : 520.01
## 3rd Qu.: 863.00
## Max. :1999.00
Credit2 <- Credit %>%
mutate(Income2 = case_when(Income < 21 ~ "basso", Income >= 21 & Income < 57 ~ "medio", Income >= 57 ~ "alto")) %>%
mutate(Income2=factor(Income2,levels = c("basso","medio","alto"),ordered=T))
table(Credit2$Income2)
##
## basso medio alto
## 100 197 103
class(Credit2$Income2)
## [1] "ordered" "factor"
Credit2 %>%
group_by(Income2) %>%
summarize(Balance_mean=mean(Balance))
## # A tibble: 3 × 2
## Income2 Balance_mean
## <ord> <dbl>
## 1 basso 380.
## 2 medio 428.
## 3 alto 832.
Definire una nuova variabile caucasico si/no. In media chi ha l’Income più elevato tra i caucasici e i non caucasici? In quale dei due gruppi c’è una maggiore variabilità?
Credit3 <- Credit %>%
mutate(Caucasico= case_when(Ethnicity == "Caucasian" ~ "si", Ethnicity == "Asian" | Ethnicity == "African American" ~ "no")) %>%
mutate(Caucasico =factor(Caucasico,levels=c("si","no"),ordered=T))
table(Credit3$Caucasico)
##
## si no
## 199 201
class(Credit3$Caucasico)
## [1] "ordered" "factor"
Credit3 %>%
group_by(Caucasico) %>%
summarize(Income_mean=mean(Income))
## # A tibble: 2 × 2
## Caucasico Income_mean
## <ord> <dbl>
## 1 si 44.5
## 2 no 45.9
print("I non caucasici hanno una media di income maggiore")
## [1] "I non caucasici hanno una media di income maggiore"
Credit3 %>%
group_by(Caucasico) %>%
summarize(Variabilità=var(Income))
## # A tibble: 2 × 2
## Caucasico Variabilità
## <ord> <dbl>
## 1 si 1107.
## 2 no 1381.
print("I non caucasici hanno una maggiore variabilità")
## [1] "I non caucasici hanno una maggiore variabilità"
Creare un nuovo dataset Credit_std standardizzando tutte le variabili che ha senso standardizzare
Credit_std <- Credit %>%
mutate(Income=scale(Income),Limit=scale(Limit),Rating=scale(Rating),Cards=scale(Cards),Age=scale(Age),Balance=scale(Balance),Education=scale(Education))