Data Analytics
Da Esempio Tabelle Contingenza Barplot
Data Analysis# 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