#argomenti: #(come commentare) # 1. usare il ciclo for # 2. creare funzioni # 3. uso del pacchetto ggplot2 # applicare i metodi alle distribuzioni conosciute # 1. esempio sezione 1 #### ## 1.1 sottosezione 1.1 #### ### 1.1.1 sottosezione 1.1.1 #### # 2. sezione 2 #### #ecc. # 1. tutorial #### ## 1.1. CICLO FOR #### #per ripetere la stessa funzione #per diversi paramentri for (marta in c(1,2,3,4,5)) { print(marta) } for (a in c(1,2,3,4,5)) { for (b in c(1,2,3,4,5)) { c <- a + b print(c) } } ## 1.2. CREARE FUNZIONI #### my_print <- function(a){print(a)} a<-c(1:5) my_print(a) b<-c(1:5) my_sum <- function(a,b){ c <- rep(a,each=length(b)) + rep(b,length(a)) return(c) } Mattia<-1:5 Alessandro<-1:5 my_sum(a=Mattia,b=Alessandro) a<-1:5 b<-1:5 # install.packages("ggplot2") library(ggplot2) ggplot()+ geom_point(aes(x=a,y=b))+ xlab("x")+ylab("y") df <- as.data.frame(cbind(a,b)) df$class <- c(1,2,1,2,1) ggplot(df)+ geom_point(aes(x=a,y=b,col=class)) #in automatico continua ggplot(df)+ geom_point(aes(x=a,y=b,col=as.factor(class))) #in classi p <- ggplot(df)+ geom_point(aes(x=a,y=b,col=as.factor(class))) p p + ggtitle("plot con ggplot2") p <- p + ggtitle("plot con ggplot2") p <- p + scale_colour_discrete(name="classe") p p + theme_light() white_theme <- function(p){ p <- p + theme_light() return(p) } p white_theme(p) p p <- white_theme(p) p #CREATE THE FOLDER PLOT! ggsave("plot/plot_con_ggplot.png",plot = p) png("plot/plot_con_ggplot2.png",width = 300,height = 300) p dev.off() pdf("plot/plot_con_ggplot2.pdf",width = 5,height = 5) p dev.off() # 1. Distribuzione esponenziale #### ## 1.1. Funzione di ripartizione (Fx) #### ### 1.1.1. Visualizzazione #### # Funzione di ripartizione: Fx x<-seq(0,10,0.1) x lambda<-0.5 Fx <- 1-exp(-lambda*x) ggplot()+ geom_point(aes(x=x,y=Fx)) ggplot()+ geom_col(aes(x=x,y=Fx),width = .05) ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = "con lambda = 0.5") ### 1.1.2. Ciclo for per lambda #### # how use paste() paste("ciao","come","va","?") paste0("ciao","come","va","?") for (lambda in c(0.5,1,2,5)) { Fx <- 1-exp(-lambda*x) print(ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("con lambda =",lambda))) } ### 1.1.3. Funzione R per plot #### #creiamo una funzione per plottare Fx_exp_plot <- function(lambda){ Fx <- 1-exp(-lambda*x) print(ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("con lambda =",lambda))) } Fx_exp_plot(lambda=2) for (lambda in c(0.5,1,2,5)) {Fx_exp_plot(lambda)} #creiamo una funzione per salvare i plot Fx_exp_saveplot <- function(lambda){ Fx <- 1-exp(-lambda*x) p <- ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("con lambda =",lambda)) ggsave(paste0("plot/Fx_exp_lambda",lambda,".png")) } Fx_exp_saveplot(lambda=1) for (lambda in c(0.5,1,2,5)) {Fx_exp_saveplot(lambda)} Fx_exp_saveplot(c(1,2)) # error! #intro to if condizione <- FALSE if (condizione) { print("ho capito come funziona if") }else{ print("ritenta!") } condizione <- TRUE if (condizione) { print("ho capito come funziona l'if !") }else{ print("ritenta!") } Fx_exp_saveplot <- function(lambda){ if (length(lambda)!=1) { for (lambda in lambda) { Fx <- 1-exp(-lambda*x) p <- ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("con lambda =",lambda)) ggsave(paste0("plot/Fx_exp_lambda",lambda,".png")) } }else{ Fx <- 1-exp(-lambda*x) p <- ggplot()+ geom_col(aes(x=x,y=Fx),width = .05)+ geom_line(aes(x=x,y=Fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("con lambda =",lambda)) ggsave(paste0("plot/Fx_exp_lambda",lambda,".png")) } } Fx_exp_saveplot(lambda=c(0.5,1,2,5)) ## 1.2. Funzione di densità di probabilità (fx) #### lambda <- 0.5 fx <- lambda*exp(-lambda*x) ggplot()+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ ggtitle(label = paste("Funzione di densità di prob. con lambda =",lambda)) for (lambda in c(0.5,1,2,5)) { fx <- lambda*exp(-lambda*x) #use find and replace print(ggplot()+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ ggtitle(label = "Funzione di densità di probabilità", subtitle = paste("da una distribuzione esponenziale con lambda =",lambda))) } #creiamo una funzione per plottare fx_exp_plot <- function(lambda){ fx <- lambda*exp(-lambda*x) print(ggplot()+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("da una distribuzione esponenziale con lambda =",lambda))) } fx_exp_plot(1) for (lambda in c(0.5,1,2,5)) {fx_exp_plot(lambda)} #creiamo una funzione per plottare fx_exp_saveplot <- function(lambda){ fx <- lambda*exp(-lambda*x) p <- ggplot()+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("da una distribuzione esponenziale con lambda =",lambda)) ggsave(paste0("plot/fx_dens_exp_lambda",lambda,".png"),plot = p) } fx_exp_saveplot(lambda=1) for (lambda in c(0.5,1,2,5)) {fx_exp_saveplot(lambda)} fx_exp_saveplot <- function(lambda){ for (lambda in lambda) { fx <- lambda*exp(-lambda*x) p <- ggplot()+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ ggtitle(label = "Funzione di ripartizione di una distribuzione esponenziale ", subtitle = paste("da una distribuzione esponenziale con lambda =",lambda)) ggsave(paste0("plot/fx_dens_exp_lambda",lambda,".png"),plot=p) } } fx_exp_saveplot(c(0.5,1,2,5)) ## 1.3. Indici statistici #### #calcolare la media e aggiungere le statistiche descrittive al grafico #Valore atteso : 1/lambda x<-seq(0,10,0.1) x lambda<-0.5 Fx <- 1-exp(-lambda*x) fx <- lambda*exp(-lambda*x) df <- as.data.frame(cbind(x,Fx,fx)) ggplot(df)+ geom_col(aes(x=x,y=fx),width = .05)+ geom_line(aes(x=x,y=fx),col="blue")+ geom_vline(xintercept = 1/0.5,col="yellow")+ geom_text(aes(x=1/0.5,y=0.3,label="Valore Atteso")) #Mediana : log(2)/lambda #Varianza : 1/lambda^2 # From P # 2. distribuzione Gaussiana #### # 3. distribuzione di Poisson #### # 4. distribuzione di Bernoulli ####