# Creazione di grafici con libreria ggplot2 ########################## library(ggplot2) ######### 1 . BARCHART ############################################### # con barre errore e/o C.I. (NB: valore a scelta. Fare attenzione a nome colonna dataset in modo che sia coerente!) # creazione dataset di esempio data <- data.frame( name=letters[1:5], # prima colonna contenente lettere value=sample(seq(4,15),5), # seconda colonna contenente numeri campionati da 4:15 sd=c(1,0.2,3,2,4) # deviazione standard inserita manualmente (5 righe (barre in barchart) -> 5 valori sd ) ######## (A) ESEMPI BARCHART ############################################# # 1. ########## (barre di errore in forma di linee) ggplot(data) + geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.7) + geom_errorbar( aes(x=name, ymin=value-sd, ymax=value+sd), width=0.4, colour="orange", alpha=0.9, size=1.3) # 2. ########## (barre di errore in forma di rettangoli) ggplot(data) + geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) + geom_crossbar( aes(x=name, y=value, ymin=value-sd, ymax=value+sd), width=0.4, colour="orange", alpha=0.9, size=1.3) # 3. ########## (barre di errori lineari semplici senza decorazioni) (linearrange) ggplot(data) + geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) + geom_linerange( aes(x=name, ymin=value-sd, ymax=value+sd), colour="orange", alpha=0.9, size=1.3) # 4. ######### (barre di errore lineari semplici con punto) (pointrange) ggplot(data) + geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) + geom_pointrange( aes(x=name, y=value, ymin=value-sd, ymax=value+sd), colour="orange", alpha=0.9, size=1.3) # 5. ######### (barchart orizzontale) ggplot(data) + geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) + geom_errorbar( aes(x=name, ymin=value-sd, ymax=value+sd), width=0.4, colour="orange", alpha=0.9, size=1.3) + coord_flip() # SD, SE e CI, calcolo ed utilizzo nella creazione di barchart in R ######################################## # Tre differenti tipi di valore vengono comunemente utilizzati per le barre di errore di un grafico barchart, a volte senza nemmeno specificare quale di essi viene utilizzato (pessima pratica). Ora vedremo come si calcolano dato che essi producono risultati davvero diversi. Vediamo le loro definizioni e come calcolarli a partire da un semplice vettore (o colonna di matrice o dataframe): vec <- c(1,3,5,9,38,7,2,4,9,19,19) # Standard deviation SD : rappresenta l'ammontare di dispersione della variabile. Calcolata utilizzando la funzione R sd() o calcolata come la radice quadrata della varianza (funzione var() in R): sd <- sd(vec) sd <- sqrt(var(vec)) # Standard Error (SE). E' la deviazione standard della distribuzione da cui e' stato campionato il campione. Viene calcolato come SD campionaria diviso la radice quadrata della numerosita' del campione. Per costruzione SE e' piu' piccolo di SD. Con un campione avente numerosita' molto elevata SE tende a 0. se <- sd(vec) / sqrt(length(vec)) # Confidence Interval (CI). Questo intervallo e' definito in modo che un valore cada al suo interno con una probabilita' prefissata. E' calcolato come t*SE, dove t e' il valore assunto dalla distribuzione t di Student per uno specifico valore alpha. Il suo valore e' spesso arrotondato a a 1.96 (il valore che assume per campioni con numerosita' elevata). Se la dimensione del campione e' molto elevata o la distribuzione sottostante non e' normale e' meglio calcolare CI mediante tecniche di bootstrap. alpha <- 0.05 # valore scelto a priori t <- qt((1-alpha)/2 + .5, length(vec)-1) # tend to 1.96 if sample size is big enough CI <- t*se # Una volta calcolati per ogni campione del dataset (per ogni colonna del barchart) tali valori possono essere salvati in un vettore ed utilizzati per disegnare le basse di errore, come abbiamo visto negli esempi precedenti nel cas, ad esempio, di SD. ######################################################################################################################### # Non nascondere i dati : # L'utilizzo di un barchart per descrivere un gruppo di punti (ad esempio riportando barre aventi altezza pari alla media campionaria) non e' una buona pratica dato che nascone informazioni. La numerosita' dei campioni associati descritti da ogni barra non e' disponibile in un barchart, e anche la forma della distribuzione dei punti risulta nascsto. Se sono disponibili le informazioni riguardanti tutti i punti e' fortemente consigliato l'utilizzo di un boxplot (esistono altri tipi di grafico appropriati ma questo e' il piu' semplice da utilizzare ed interpretare). ggplot(iris, aes(x=iris$Species, y=iris$Sepal.Length)) + ggtitle("The Iris R dataset : boxplot of Sepal.Length by Species ") + geom_boxplot( fill="skyblue", notch=TRUE) + geom_jitter( size=0.9, color="orange", width=0.1) ###################### CALCOLO COEFF. CORRELAZIONE ############################################################################ vec <- 1:5 x <- vec + rnorm(5, 0, 0.01) y <- vec + rnorm(5, 0, 0.01) cor(x,y) # CALCOLO COEFF. CORRELAZIONE (senza test statistico) cor.test(x,y) # CALCOLO COEFF. COEERLAZIONE ( con test statistico) cor.test(x, y, method="pearson") cor.test(x, y, method="kendall") cor.test(x, y, method="spearman") ###################### CALCOLO COEFF. DI DETERMINAZIONE ###################################################################### # R2 e' il coefficiente di correlazione elevata al quadrato. E' possibile calcolarlo mediante una semplice funzione: rsq <- function (x, y){cor(x, y) ^ 2} # Testiamo l'utilizzo della funzione appena scritta obs <- 1:5 mod <- c(0.8,2.4,2,3,4.8) df <- data.frame(obs, mod) # Calcolo coefficiente di determinazione R2 <- rsq(df$obs, df$mod)