#============================================================
# Estatística Descritiva: métodos gráficos para representar
# o comportamento dos dados                      (07/04/2011)
#
#                                 Professor Walmes M. Zeviani
#                                      www.leg.ufpr.br/ce003b
#============================================================

#------------------------------------------------------------
# aproximação da binomial pela normal

par(mfrow=c(2,2))
n <- 10
p <- seq(0.1,0.5,l=4)
for(i in p){
  plot(0:n, dbinom(0:n, n, i), type="h")
  points(0:n, dbinom(0:n, n, i), pch=19)
  curve(dnorm(x, n*i, sqrt(n*i*(1-i))), add=TRUE, col=2, lwd=2)
}

#------------------------------------------------------------
# importando dados das notas dos alunos de ADM 2010

notas <- read.table("notasfinais2.txt", header=TRUE, sep="\t")
str(notas)
with(notas, tapply(p2, turm, length))

#------------------------------------------------------------
# vamos trabalhar com as notas finais dos alunos

x <- notas$p2

#------------------------------------------------------------
# tabela de distribuição de frequências

classes <- cut(notas$p2, breaks=seq(0,10,by=2), right=FALSE)
levels(classes)
tab <- data.frame(fa=tapply(x, classes, length))
tab
tab$fr <- tab$fa/sum(tab$fa)
tab

#------------------------------------------------------------
# histograma (Sturges)

layout(1)
hist(x, col="green3")
rug(x)

#------------------------------------------------------------
# histograma: frequencia absoluta vs relativa

par(mfrow=c(1,2))
h <- hist(x, breaks=5, col="blue2")
text(h$mids, h$counts, label=h$counts, pos=3)
hist(x, breaks=5, prob=TRUE, col="green2")
text(h$mids, h$density, label=format(h$density, dig=2), pos=3)
layout(1)

#------------------------------------------------------------
# ramos e folhas

stem(x)

#------------------------------------------------------------
# gráfico com pontos

fal <- sort(notas$f)
plot(table(fal))
fal <- cbind(fal,
             do.call(c, sapply(table(fal), function(x) 1:x)))
plot(fal, pch=19)

#------------------------------------------------------------
# histograma com poligonos de frequência

require(UsingR)
simple.freqpoly(x, breaks=seq(0,10,l=8), col="red3")

#------------------------------------------------------------
# o histograma "suavizado"

plot(density(x[!is.na(x)]))
rug(x)

#------------------------------------------------------------
# manipulações com o número de classes do histograma

for(i in 3:20){
  hist(x, #ylim=c(0,70),
       breaks=seq(0,10,l=i),
       col="green4",
       main=paste(i, "classes"))
  rug(x)
  Sys.sleep(1)
}

#------------------------------------------------------------
# gráfico de pizza/setor/diagrama angular

classes <- cut(notas$p2, breaks=seq(0,10,by=2), right=FALSE)
fa <- tapply(x, classes, length)
pie(fa)

#------------------------------------------------------------
# tabela de distribuição de frequências e acumuladas

x
sort(x)

tab <- as.data.frame(table(cut(x, seq(0,10,by=1), right=FALSE)))
tab$Freq.rel <- tab$Freq/sum(tab$Freq)
tab$Freq.acu <- cumsum(tab$Freq)
names(tab) <- c("Classe","F. abs.","F. rel.","F. abs. acu.")
tab

#------------------------------------------------------------
# gráfico de frequências acumuladas

h <- hist(x, plot=FALSE, breaks=10)
h$counts <- cumsum(h$counts) 
h$density <- cumsum(h$density) 
h$itensities <- h$density 

plot(h, freq=TRUE, main="(Cumulative) histogram of x",
     col="navajowhite2", border="turquoise3") 
box()
rug(x)

#------------------------------------------------------------
# gráfico de distribuição acumulada empírica

plot(ecdf(x))

#------------------------------------------------------------
