# ANALISI TABELLA DI CONTINGENZA
# Esempio Esteso su dati Medici

# LETTURA DATI ----
tumore <- read.table("tumore.dat",
                     header = TRUE,
                     row.names = 1,
                     sep = "&")

# Dobbiamo convertire l'oggeto 
# in matrice per le analisi successive
m_tumore <- as.matrix(tumore)

# FREQUENZE CONGIUNTE ----

# Frequenze assolute
m_tumore

# Frequenze relative
freq_rel <- prop.table(m_tumore)
round(freq_rel * 100, 2)

# DISTRIBUZIONI MARGINALI ----

# Marginale di riga (X)
margine_riga_ass <- margin.table(m_tumore, 1)
margine_riga_rel <- prop.table(margine_riga_ass)

# Marginale di colonna (Y)
margine_colonna_ass <- margin.table(m_tumore, 2)
margine_colonna_rel <- prop.table(margine_colonna_ass)

round(margine_riga_rel * 100, 1)
round(margine_colonna_rel * 100, 1)

# GRAFICI ----
par(mfrow = c(2, 1))  #Layout

# Barplot marginali di riga
barplot(margine_riga_rel,
        ylim = c(0, 1),
        main = "Tipo di tumore (X)",
        ylab = "Frequenza relativa",
        col = c("#D4A574", "#8B3A3A", "#5B4A72", "#6B8E8E"))
abline(h = 0) # serve a disegnare una linea orizzontale 

# Barplot marginali di colonna
barplot(margine_colonna_rel,
        ylim = c(0, 1),
        main = "Luogo di insediamento (Y)",
        ylab = "Frequenza relativa",
        col = c("#4A7FA5", "#6AAF8B", "#C47E5A"))
abline(h = 0)

par(mfrow = c(1, 1)) # Ripristiniamo il layout


# PROFILI RIGA ----
profili_riga <- prop.table(m_tumore, margin = 1)
round(profili_riga * 100, 1)

# Profilo medio di Colonna
round(margine_colonna_rel * 100, 1)


# BARPLOT AFFIANCATI
par(mfrow = c(2, 3))

for (i in 1:nrow(profili_riga)) {
  barplot(profili_riga[i, ],
          ylim = c(0, 1),
          main = rownames(profili_riga)[i],
          ylab = "Frequenza relativa",
          col = c("#4A7FA5", "#6AAF8B", "#C47E5A"))
  abline(h = 0)
}

barplot(margine_colonna_rel,
        ylim = c(0, 1),
        main = "Totale (profilo medio)",
        ylab = "Frequenza relativa",
        col = c("#4A7FA5", "#6AAF8B", "#C47E5A"))
abline(h = 0)

par(mfrow = c(1, 1))

# BARPLOT IMPILATI
mat <- rbind(profili_riga, Totale = margine_colonna_rel)

barplot(t(mat),
        beside = FALSE,
        col = c("#4A7FA5", "#6AAF8B", "#C47E5A"),
        ylim = c(0, 1.3),
        ylab = "Frequenza relativa",
        main = "Profili riga e marginale",
        cex.names = 0.7,
        legend.text = colnames(mat))


# DEVIAZIONI DAL PROFILO MEDIO
tab_margine <- matrix(
  rep(margine_colonna_rel, nrow(m_tumore)),
  byrow = TRUE,
  ncol = ncol(m_tumore)
)

deviazioni_riga <- profili_riga - tab_margine

round(deviazioni_riga * 100, 1)

# GRAFICO DEVIAZIONI
yl <- c(min(deviazioni_riga), max(deviazioni_riga))

par(mfrow = c(2, 2))

for (i in 1:nrow(deviazioni_riga)) {
  barplot(deviazioni_riga[i, ],
          ylim = yl,
          main = rownames(deviazioni_riga)[i],
          ylab = "Deviazione",
          col = c("#4A7FA5", "#6AAF8B", "#C47E5A"))
  abline(h = 0)
}

par(mfrow = c(1, 1))

# Esercizio: si concluda l'analisi
# utilizzando i profili colonna 


