Laboratorio di R 1° Lezione: fondamenti e distribuzioni 21 Aprile 2007 Dott.ssa Michela Cameletti
R Documentation Manuals Contributed Documentation Libro: Laboratorio di Statistica con R – Iacus, Masarotto
Fondamenti di R Dalla console di R è possibile inserire espressioni matematiche ed ottenerne il risultato premendo invio: > 2^2 + 2*3 [1] 10 “>” simbolo di prompt Funzioni matematiche: exp, log, sin, sqrt, abs… > exp(log(2)) [1] 2
E’ possibile allocare una variabile ed assegnargli un valore nei seguenti modi: x <- 2 x = 2 La variabile allocata può essere successivamente richiamata: > x [1] 2 > x + x [1] 4 > x>3 [1] FALSE Fondamenti di R
Gestione vettori Un vettore di dati è un insieme finito di numeri indicizzati da una variabile indice. Un modo per creare un vettore in R è il seguente: pesi <- c(60, 72, 57, 90, 95, 72) E’ possibile eseguire operazioni tra vettori a patto che abbiano la stessa dimensione o dimensioni una multipla dell’altra. altezze <- c(1.7, 1.8, 1.6, 1.9, 1.7, 1.9) bmi <- pesi/altezze^2 > bmi [1]
?seq seq(4,9) genera un vettore ordinato di numeri interi compresi tra 4 e 9 inclusi 4:9 svolge la stessa funzione di seq(4,9) seq(4,10,2) come sopra ma con uno step di 2 tra un numero ed il successivo ?rep rep(pesi,3) replica un vettore (pesi) un dato numero di volte (3) Gestione vettori
Tabella di frequenza > table(pesi) pesi Media e varianza > mean(pesi) [1] > sum(pesi)/length(pesi) [1] > var(pesi) [1] > sum((pesi-mean(pesi))^2)/(length(pesi)-1) [1] Statistica descrittiva
data(mtcars) ?mtcars > dim(mtcars) [1] > colnames(mtcars) [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" [11] "carb" > rownames(mtcars) > fix(mtcars) Analisi di un dataset
> min(mtcars$mpg) [1] 10.4 > max(mtcars$mpg) [1] 33.9 > mean(mtcars$mpg) [1] > median(mtcars$mpg) [1] 19.2 > quantile(mtcars$mpg,0.5) 50% 19.2 > quantile(mtcars$mpg,0.25) 25% summary(mtcars$mpg) Min. 1st Qu. Median Mean 3rd Qu. Max Analisi di un dataset
plot(mtcars$wt,main="Weight(lb/1000)",ylab= "Weight ") hist(mtcars$wt,main="Weight(lb/1000)",ylab= "Weight ") hist(mtcars$wt,main="Weight(lb/1000)",ylab= "Weight",breaks=20) plot(mtcars$wt,mtcars$mpg,xlab="Weight",ylab="Miles per Gallon") pie(table(mtcars$vs),main="Transmission") boxplot(mpg ~ vs,data=mtcars) Analisi di un dataset: grafici
VC NORMALE Densità di probabilità: dnorm(x, mean=0, sd=1, log = FALSE) > dnorm(x=0) [1] Funzione di ripartizione: pnorm(q, mean=0, sd=1, lower.tail = TRUE, log.p = FALSE) > pnorm(q=0) [1] 0.5 Quantili: qnorm(p, mean=0, sd=1, lower.tail = TRUE, log.p = FALSE) > qnorm(p=0.5) [1] 0 Generazione numeri casuali: rnorm(n, mean=0, sd=1) > rnorm(n=5) [1]
Esercizio VC Normale Confrontare le distribuzioni di probabilità e le funzioni di ripartizione delle seguenti variabili casuali Normali con media e varianze definite: Y1 = N(0,1) Y2 = N(4,1) Y3 = N(2,4) Y4 = N(2,0.5) Determinare, inoltre, per ognuna delle variabili i quantili di ordine 0.005, 0.025, 0.05, 0.95, 0.975, Determinare, infine, la probabilità che Y2 assuma valori minori di 2, maggiori di 4.5 e compresi tra 4 e 4.5.
DISTRIBUZIONE DI PROBABILITA’ x = seq(from=-10,to=10,by=0.1) y1 = dnorm(x,mean=0,sd=1) y2 = dnorm(x,mean=4,sd=1) y3 = dnorm(x,mean=2,sd=sqrt(4)) y4 = dnorm(x,mean=2,sd=sqrt(0.5)) plot(x,y1,type="l",xlim=c(-10,10),ylim=c(0,0.6),lwd=2,lty=1,main="Distribuzioni di probabilità") lines(x,y2,col=2,lwd=2,lty=1) lines(x,y3,col=3,lwd=1,lty=2) lines(x,y4,col=4,lwd=1,lty=2) legend("topright",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("N(0,1)","N(4,1)","N(2,4)","N(2,.5)")) Esercizio VC Normale
FUNZIONE DI RIPARTIZIONE y1e = pnorm(x,mean=0,sd=1) y2e = pnorm(x,mean=4,sd=1) y3e = pnorm(x,mean=2,sd=sqrt(4)) y4e = pnorm(x,mean=2,sd=sqrt(0.5)) plot(x,y1e,type="l",xlim=c(-10,10),ylim=c(0,1),lwd=2,lty=1,main="Funzione di ripartizione") lines(x,y2e,col=2,lwd=2,lty=1) lines(x,y3e,col=3,lwd=1,lty=2) lines(x,y4e,col=4,lwd=1,lty=2) legend(“topleft",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("N(0,1)","N(4,1)","N(2,4)","N(2,.5)"))
QUANTILI quantili = c(0.005, 0.025, 0.05, 0.95, 0.975, 0.995) q1 = qnorm(quantili, 0, 1) q2 = qnorm(quantili, 4, 1) q3 = qnorm(quantili, 2, sqrt(4)) q4 = qnorm(quantili, 2, sqrt(0.5)) plot(quantili,q1,lwd=1,lty=1,ylim=c(- 5,8),main="Quantili",xlab="Ordine",ylab="Quantili") points(quantili,q2,col=2,lwd=2,lty=1) points(quantili,q3,col=3,lwd=1,lty=2) points(quantili,q4,col=4,lwd=2,lty=2) legend("topleft",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("N(0,1)","N(4,1)","N(2,4)","N(2,.5)")) Probabilità Y2<2: pnorm(2,4,1) = Probabilità Y2>4.5: 1-pnorm(4.5,4,1) = Probabilità 4<Y<4.5 = pnorm(4.5,4,1)-pnorm(4,4,1) = Esercizio VC Normale
VC T di STUDENT Densità di probabilità: dt(x, df, ncp = 0, log = FALSE) > n=10 > dt(x=0,df=(n-1)) [1] Funzione di ripartizione: pt(q, df, ncp = 0, lower.tail = TRUE, log.p = FALSE) > pt(q=0,df=(n-1)) [1] 0.5 Quantili: qt(p, df, ncp = 0, lower.tail = TRUE, log.p = FALSE) > qt(p=0.5,df=(n-1)) [1] 0 Generazione numeri casuali: rt(n, df, ncp = 0) > rt(n=5,df=(n-1)) [1]
Esercizio VC T di Student Confrontare le distribuzioni di probabilità e le funzioni di ripartizione delle seguenti variabili casuali T di Student con gradi di libertà definiti: Y1 = T(gdf=1) Y2 = T(gdf=2) Y3 = T(gdf=10) Y4 = T(gdf=30) Determinare, inoltre, per ognuna delle variabili i quantili di ordine 0.005, 0.025, 0.05, 0.95, 0.975, Determinare, infine, la probabilità che Y2 assuma valori minori di 0.5, maggiori di 1.5 e compresi tra 0 e 0.5.
DISTRIBUZIONE DI PROBABILITA’ t1 = dt(x,df=1) t2 = dt(x,df=2) t3 = dt(x,df=10) t4 = dt(x,df=30) plot(x,t1,type="l",xlim=c(-10,10),ylim=c(0,0.5),lwd=2,lty=1) lines(x,t2,col=2,lwd=2,lty=1) lines(x,t3,col=3,lwd=1,lty=2) lines(x,t4,col=4,lwd=1,lty=2) legend("topright",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("T_1","T_2","T_10","T_30")) Esercizio VC T di Student
DISTRIBUZIONE DI PROBABILITA’ t1 = dt(x,df=1) t2 = dt(x,df=2) t3 = dt(x,df=10) t4 = dt(x,df=30) plot(x,t1,type="l",xlim=c(-10,10),ylim=c(0,0.5),lwd=2,lty=1) lines(x,t2,col=2,lwd=2,lty=1) lines(x,t3,col=3,lwd=1,lty=2) lines(x,t4,col=4,lwd=1,lty=2) legend("topright",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("T_1","T_2","T_10","T_30")) Esercizio VC T di Student
FUNZIONE DI RIPARTIZIONE t1e = pt(x,df=1) t2e = pt(x,df=2) t3e = pt(x,df=10) t4e = pt(x,df=30) plot(x,t1e,type="l",xlim=c(- 10,10),ylim=c(0,1),lwd=2,lty=1,main="Funzione di ripartizione") lines(x,t2e,col=2,lwd=2,lty=1) lines(x,t3e,col=3,lwd=1,lty=2) lines(x,t4e,col=4,lwd=1,lty=2) legend("topleft",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("T_1","T_2","T_10","T_30")) Esercizio VC T di Student
QUANTILI quantili = c(0.005, 0.025, 0.05, 0.95, 0.975, 0.995) qt1 = qt(quantili, df=1) qt2 = qt(quantili, df=2) qt3 = qt(quantili, df=10) qt4 = qt(quantili, df=30) plot(quantili,qt1,lwd=1,lty=1,ylim=c(- 64,64),main="Quantili",xlab="Ordine",ylab="Quantili") points(quantili,qt2,col=2,lwd=2,lty=1) points(quantili,qt3,col=3,lwd=1,lty=2) points(quantili,qt4,col=4,lwd=2,lty=2) legend("topleft",col=c(1,2,3,4),lwd=c(2,2,1,1),lty=c(1,1,2,2), legend=c("T_1","T_2","T_10","T_30")) Esercizio VC T di Student
curve(dnorm(x),from=-10,to=+10) curve(dt(x,df=1),add=T,col=2) curve(dt(x,df=10),add=T,col=3) legend("topleft",col=c(1,2,3),legend=c("Norm","T_1gdl","T_10gdl"), lty=c(1,1,1)) Confronto Normale – T Student
Simulare quattro diverse (n = 10, 100, 1000, 10000) distribuzioni campionarie della media campionaria (su 1000 repliche) per una variabile causale Normale con media 3 e varianza 4. media.camp = matrix(0,nrow=1000,ncol=4) for (i in 1:1000){ media.camp[i,1] <- mean(rnorm(10,mean=3,sd=2)) media.camp[i,2] <- mean(rnorm(100,mean=3,sd=2)) media.camp[i,3] <- mean(rnorm(1000,mean=3,sd=2)) media.camp[i,4] <- mean(rnorm(10000,mean=3,sd=2)) } par(mfrow = c(2,2)) # 2x2 grafici nella stessa pagina hist(media.camp[,1],main="n=10") hist(media.camp[,2],main="n=100") hist(media.camp[,3],main="n=1000") hist(media.camp[,4],main="n=10000") Simulazione della media camp.
Una macchina è calibrata per produrre dischi metallici di raggio pari a 3 cm. Il raggio effettivo segue la distribuzione Normale con media pari a 3 e varianza pari a Rappresentare graficamente la distribuzione di probabilità e la funzione di ripartizione del raggio dei dischi; Calcolare la percentuale di dischi con raggio inferiore a 2.8 cm Determinare la percentuale dei dischi con raggio maggiore di 3.25 cm Calcolare la percentuale dei dischi con raggio compreso tra 2.6 cm e 3.4 cm Esercizio 1
Una ditta ha sottoposto ad un test di durata 5000 batterie. La durata media è risultata pari a 100 ore e la deviazione standard a 6 ore. Supponendo che la distribuzione della durata delle batterie sia Normale, calcolare: La distribuzione di probabilità della durata delle batterie Il numero di batterie con durata minore di 80 ore. Esercizio 2