###################################
## Descriptive Statistics : Plot ##
###################################

## caricare dati e calcolo frequenze relative ed assolute
dati <- read.delim("http://homes.di.unimi.it/~zanaboni/DIDATTICA_CORRENTE/VOTItrecolonne.txt",sep=";")
scritto <- dati[,1]
orale <- dati[,2][!is.na(dati[,2])]
abs.sc <- table(scritto)
abs.or <- table(orale)
rel.sc <- abs.sc/length(scritto)
rel.or <- abs.or/length(orale)

# plot con type="h" freq ass 
plot(abs.sc,type="h",col=rainbow(length(abs.sc)),las=1)
axis(2,seq(1,20,1),las=1)
axis(1,seq(13,25,2))
points(as.integer(names(abs.sc)),abs.sc,pch=3,lwd=2)
abline(h=abs.sc,lty="dotted")
# barplot
barplot(abs.sc,ylim=c(0,20),las=2,col=rainbow(length(abs.sc)))
axis(2,seq(1,19,2),las=2)
axis(2,seq(2,18,2),las=2)
abline(h=abs.sc,lty="dotted");

# plot freq rel e ass a confronto
par(mfrow=c(2,2)) #par(mfcol=c(2,2))
barplot(abs.sc,ylim=c(0,20),las=2,col=rainbow(length(abs.sc)),main="freq.ass.scritto")
barplot(rel.sc,ylim=c(0,0.2),las=2,col=rainbow(length(rel.sc)),main="freq.rel.scritto")
barplot(abs.or,ylim=c(0,20),las=2,col=rainbow(length(abs.or)),main="freq.ass.orale")
barplot(rel.or,ylim=c(0,0.2),las=2,col=rainbow(length(rel.or)),main="freq.rel.orale")

# calcolo e rappresentazione frequenze cumulate
cumsumscritto <- cumsum(rel.sc)
cumsumorale <- cumsum(rel.or)
plot(sort(unique(scritto)),cumsumscritto,type="s",xlab="voti",ylab="freq.rel")
points(sort(unique(scritto)),cumsumscritto,pch=4,col="green",lwd=2)
plot(sort(unique(orale)),cumsumorale,type="s",xlab="voti",ylab="freq.rel")
points(sort(unique(orale)),cumsumorale,pch=4,col="green",lwd=2)

plot.stepfun(scritto,main="",col="red",col.points="green",pch=4)
par(new=T)
plot.stepfun(orale,main="",col="blue",col.points="gold",pch=3)

# hist
hist(scritto)
int <- hist(scritto, plot=F)$breaks
classi <- cut(scritto,int,include.lowest=T)
freq.as <- table(classi)
freq.rel <- table(classi)/length(scritto)
dens <- freq.rel/2  # 2: ampiezza della classe

#pdf(file="C:/Users/Marco/Desktop/Analisi_dei_Dati/Plot.pdf")
par(mfcol=c(2,2))
hist(scritto,freq=F,main="voti_scritto_cinese",col="yellow")
plot(scrtto,dnorm(scritto,mean=mean(scritto),sd=sd(scritto)),add=T,col="red",lwd=3)
hist(orale,as.integer(names(table(dati[,2]))),freq=F,main="voti_orale_cinese",col="yellow")  # breaks = singolo voto
axis(1,seq(15,29,2))
curve(dnorm(x,mean=mean(orale),sd=sd(orale)),add=T,col="red",lwd=3)
qqnorm(scritto,main="Normal Q-Q Plot - Scritto Cinese");qqline(scritto)
qqnorm(orale,main="Normal Q-Q Plot - Orale Cinese");qqline(orale)
#dev.off()