Caricamento librerie

library(dplyr)
library(ggplot2)
library(scales)
library(knitr)

Parte 1 : Dati

Il Dipartimento delle finanze al seguente link : https://www1.finanze.gov.it/finanze/analisi_stat/public/index.php?opendata=yes fornisce il dataset cla_anno_calcolo_irpef_2023.csv contenente classi di reddito, classi di età, numero contribuenti, reddito complessivo, IRPEF (Imposta sui redditi delle persone fisiche) ecc., il dataset REG_calcolo_irpef_2023.csv contenente i suddetti dati per regioni italiane e il dataset sesso_calcolo_irpef_2023.csv contenente i suddetti dati per sesso dei contribuenti .

Caricamento dati

cla_anno_calcolo_irpef_2023 <- read.csv("cla_anno_calcolo_irpef_2023.csv")
REG_calcolo_irpef_2023 <- read.csv("REG_calcolo_irpef_2023.csv")
sesso_calcolo_irpef_2023 <- read.csv("sesso_calcolo_irpef_2023.csv")

cla_anno_calcolo_irpef_2023$ordine= rep(1:34,5)
cla_anno_calcolo_irpef_2023$Classi.di.reddito.complessivo.in.euro <- as.factor(cla_anno_calcolo_irpef_2023$Classi.di.reddito.complessivo.in.euro)
sesso_calcolo_irpef_2023$Sesso <- factor(sesso_calcolo_irpef_2023$Sesso, levels = c("Femmine","Maschi"))

Parte 2 : Domanda di ricerca

Si vuole evidenziare che dei 174,05 miliardi di IRPEF pagata dai 41 milioni di contribuenti italiani,il 92,24% è pagata dal 47,95% cioè da chi ha un reddito superiore a 20.000 euro, l’ 81,16% è pagata dal 31,16% cioè da chi ha un reddito superiore a 26.000 euro, il 63,33% è pagata dal 15,64% cioè da chi ha un reddito superiore a 35.000 euro

Parte 3 : Esplorazione dati

cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(reddito=sum(Reddito.complessivo...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Classi.di.reddito.complessivo.in.euro,ordine),reddito))+
  geom_bar(stat = "identity", fill="darkblue")+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  xlab("Classi di reddito")+
  ggtitle("Reddito complessivo in euro per classi di reddito nel 2023 ")

cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Numero_contribuenti=sum(Numero.contribuenti, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Classi.di.reddito.complessivo.in.euro,ordine),Numero_contribuenti))+
  geom_bar(stat = "identity", fill="pink")+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  xlab("Classi di reddito")+
  ggtitle("Numero di contribuenti per classi di reddito nel 2023 ")

cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Irpef=sum(Imposta.netta...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Classi.di.reddito.complessivo.in.euro,ordine),Irpef))+
  geom_bar(stat = "identity", fill="red")+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  xlab("Classi di reddito")+
  ggtitle("Irpef per classi di reddito nel 2023 ")

df<-cla_anno_calcolo_irpef_2023 %>%
  filter(ordine>=4) %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Irpef=sum(Imposta.netta...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  arrange(ordine)

df3<-cla_anno_calcolo_irpef_2023 %>%
  filter(ordine>=4) %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Numero_contribuenti=sum(Numero.contribuenti, na.rm = TRUE), .groups="keep") %>%
  arrange(ordine)

df_tab <- data.frame()

soglia_t=c("da 20.000","da 26.000","da 29.000","da 35.000","da 40.000","da 50.000","da 55.000")

for (i in 18:24) {
  df1<-cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Irpef=sum(Imposta.netta...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  filter(ordine>=i) %>%
  arrange(ordine)

df4<-cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.reddito.complessivo.in.euro,ordine) %>%
  summarise(Numero_contribuenti=sum(Numero.contribuenti, na.rm = TRUE), .groups="keep") %>%
  filter(ordine>=i) %>%
  arrange(ordine)

df_tab <- rbind(df_tab,data.frame(
  soglia=soglia_t[i-17],
  percentuale_irpef=round(sum(df1$Irpef)*100/sum(df$Irpef),2),  percentuale_contribuenti=round(sum(df4$Numero_contribuenti)*100/sum(df3$Numero_contribuenti),2)))

}

print(paste("Numero totale di contribuenti =",comma(sum(df3$Numero_contribuenti, na.rm = TRUE),big.mark = ".", decimal.mark = ",")))
## [1] "Numero totale di contribuenti = 41.019.423"
print(paste("IRPEF totale in euro =",comma(sum(df$Irpef, na.rm = TRUE),big.mark = ".", decimal.mark = ",")))
## [1] "IRPEF totale in euro = 174.048.674.887"
kable(df_tab)
soglia percentuale_irpef percentuale_contribuenti
da 20.000 92.24 47.95
da 26.000 81.16 31.16
da 29.000 75.13 24.79
da 35.000 63.33 15.64
da 40.000 55.55 11.18
da 50.000 45.39 6.76
da 55.000 41.92 5.58
cla_anno_calcolo_irpef_2023 %>%
  group_by(Classi.di.eta.) %>%
  summarise(Reddito=sum(Reddito.complessivo...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Classi.di.eta.,Reddito),Reddito, fill = Classi.di.eta.))+
  geom_bar(stat = "identity")+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  guides(fill="none")+
  ylab("Reddito")+
  xlab("Classi di età")+
  ggtitle("Reddito per classi di età nel 2023 ")

REG_calcolo_irpef_2023 %>%
  group_by(Regione) %>%
  summarise(Reddito=sum(Reddito.complessivo...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Regione,Reddito),Reddito))+
  geom_bar(stat = "identity", fill="blue")+
  coord_flip()+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  ylab("Reddito")+
  xlab("Regione")+
  ggtitle("Reddito per regioni nel 2023 ")

sesso_calcolo_irpef_2023 %>%
  group_by(Sesso) %>%
  summarise(Reddito=sum(Reddito.complessivo...Ammontare.in.euro, na.rm = TRUE), .groups="keep") %>%
  ggplot(aes(reorder(Sesso,Reddito),Reddito, fill = Sesso))+
  geom_bar(stat = "identity")+
  scale_y_continuous(label = comma_format(big.mark = ".", decimal.mark = ",") )+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  ylab("Reddito")+
  xlab("Sesso")+
  ggtitle("Reddito per sesso nel 2023 ")