lorenzo — Sep 29, 2013, 5:05 PM
# definisco la directory di lavoro
setwd("/Users/lorenzo/Documents/Lavori guidati e corsi matematica/ST410 a.a. 2013-2014/Esercitazione1")
# assegno un valore alla variabile a, alla variabile b e le sommo
a<-1
b<-1
a+b
[1] 2
# determino il tipo della variabile a
typeof(a)
[1] "double"
is.numeric(a)
[1] TRUE
is.character(a)
[1] FALSE
# calcolo la radice quadrata di -1: come reale, come numero complesso
sqrt(-1)
Warning: Si รจ prodotto un NaN
[1] NaN
sqrt(as.complex(-1))
[1] 0+1i
sqrt(-1+0i)
[1] 0+1i
# creo un vettore di numeri da 1 a 10 in tre modi diversi
x<-c(1,2,3,4,5,6,7,8,9,10)
x<- seq(from=1, to=10, by=1) # oppure seq(1,10,1) oppure seq(to=10, by=1, from=1)
x<-1:10
# creo un vettore di 1 di lunghezza 100
x<-rep(1,100)
# estraggo un sottoinsieme di elementi dal vettore x=(1...100)
x<-1:100
x[3]
[1] 3
x[5:7]
[1] 5 6 7
x[rep(c(T,F),50)]
[1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
[24] 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91
[47] 93 95 97 99
#Esercizio 1.1
typeof(x<-c("A",1,TRUE))
[1] "character"
typeof(x<-c(1,2,FALSE))
[1] "double"
#Esercizio 1.2
x<-rep(0,42)
y<-1:21
pari<-y*2
dispari<-pari-1
x[pari]<-1:21
x[dispari]<-letters[-c(10,11,23,24,25)]
#Esercizio 2
# primo modo
x<-c(7,9,15)
media_campionaria <- mean(x)
varianza_campionaria<-var(x)
m2_campionario <-(length(x)-1)/length(x)*var(x)
# secondo modo
media_campionaria<-sum(x)/length(x)
m2_campionario<-sum((x-media_campionaria)^2)/length(x)
varianza_campionaria<-sum((x-media_campionaria)^2)/(length(x)-1)
#Dati due vettori di caratteri definisco due fattori: il primo non ordinato, il secondo ordinato
x<-c("M", "F", "M", "M", "M", "F")
y<-c("sufficiente", "buono", "buono", "insufficiente", "ottimo", "ottimo", "sufficiente")
x<-factor(x)
y<-ordered(y, levels=c("insufficiente", "sufficiente", "buono", "ottimo"))
# analisi delle frequenze
table(x)
x
F M
2 4
table(y)
y
insufficiente sufficiente buono ottimo
1 2 2 2
table(x)/length(x)
x
F M
0.3333 0.6667
pie(table(x), main="Sesso", col=c("pink", "blue"))
barplot(table(y), main="Valutazione", col=rainbow(15))
#creo un dataset
x<-factor(c("M", "F", "M", "M", "F"))
y<-c(29,40,23,62,60)
data<-data.frame(sesso=x, eta=y)
#Esercizio 3
istruzione<-c(13,16,18,21,11)
data<-cbind(data,istruzione)
a<-data.frame(sesso="M",eta=80,istruzione=8)
data<-rbind(data,a)
data[4,"eta"] #oppure data[4,2] oppure data$eta[4]
[1] 62
mean(data$eta) #oppure mean(data[,2])
[1] 49
tapply(data$istruzione,data$sesso,mean)
F M
13.5 15.0
##Esercizio 4
movies<-read.csv("http://people.stern.nyu.edu/wgreene/Text/Edition7/TableF4-3.csv")
movies<-movies[,1:5]
head(movies)
BOX MPRATING BUDGET STARPOWR SEQUEL
1 19167085 4 28.0 19.83 0
2 63106589 2 150.0 32.69 1
3 5401605 4 37.4 15.69 0
4 67528882 3 200.0 23.62 1
5 26223128 2 150.0 19.02 0
6 69637740 3 37.0 15.34 0
str(movies)
'data.frame': 62 obs. of 5 variables:
$ BOX : int 19167085 63106589 5401605 67528882 26223128 69637740 14800723 31069826 12063452 4271451 ...
$ MPRATING: int 4 2 4 3 2 3 3 3 3 4 ...
$ BUDGET : num 28 150 37.4 200 150 37 130 80 40 35 ...
$ STARPOWR: num 19.8 32.7 15.7 23.6 19 ...
$ SEQUEL : int 0 1 0 1 0 0 0 0 1 1 ...
summary(movies)
BOX MPRATING BUDGET STARPOWR
Min. : 511920 Min. :1.00 Min. : 5.0 Min. : 0.0
1st Qu.: 6956492 1st Qu.:2.00 1st Qu.: 30.5 1st Qu.:12.2
Median :16930926 Median :3.00 Median : 37.4 Median :18.1
Mean :20720651 Mean :2.97 Mean : 53.3 Mean :18.0
3rd Qu.:26696144 3rd Qu.:4.00 3rd Qu.: 60.0 3rd Qu.:24.1
Max. :70950500 Max. :4.00 Max. :200.0 Max. :36.8
SEQUEL
Min. :0.000
1st Qu.:0.000
Median :0.000
Mean :0.145
3rd Qu.:0.000
Max. :1.000
movies$MPRATING<-ordered(movies$MPRATING, levels=c(1,2,3,4), labels=c("G", "PG", "PG-13", "R"))
movies$BOX<-movies$BOX/10^6
#alcuni esempi di boxplot per la variabile BOX
boxplot(movies$BOX, range=0)
boxplot(movies$BOX, horizontal=TRUE, col="grey", border="red")
boxplot(movies$BOX, horizontal=TRUE, col="grey", border="red", range=0.5, main="Ricavi al botteghino - grafico a scatola e baffi", xlab="milioni di dollari")
#calcolo di alcune misure di posizione e dispersione collegate al boxplot
quantile(movies$BOX,0.25)
25%
6.956
quantile(movies$BOX,0.75)
75%
26.7
median(movies$BOX)
[1] 16.93
IQR(movies$BOX)
[1] 19.74
diff(range(movies$BOX))
[1] 70.44
boxplot(movies$BOX, range=0.5, plot=F)
$stats
[,1]
[1,] 0.5119
[2,] 6.7415
[3,] 16.9309
[4,] 26.8538
[5,] 36.3576
$n
[1] 62
$conf
[,1]
[1,] 12.90
[2,] 20.97
$out
[1] 63.11 67.53 69.64 40.57 41.03 55.21 59.32 70.95
$group
[1] 1 1 1 1 1 1 1 1
$names
[1] "1"
#alcuni esempi di istogrammi
hist(movies$BOX, freq=F, main="Istogramma", xlab="ricavi (milioni di dollari)", col="grey")
hist(movies$BOX, freq=F, main="Istogramma", xlab="ricavi (milioni di dollari)", col="grey", breaks=50)
hist(movies$BOX, freq=F, main="Istogramma", xlab="ricavi (milioni di dollari)", col="grey", breaks=c(0,5,10,15,20,30,40,70,90))
# notare il warning del prossimo comando:
hist(movies$BOX, freq=T, main="Istogramma", xlab="ricavi (milioni di dollari)", col="grey", breaks=c(0,5,10,15,20,30,40,70,90))
Warning: the AREAS in the plot are wrong -- rather use 'freq = FALSE'