#========================================================================================== # Estatística Computacional I - ce083-2012-01 # Aula 7 - Distribuições de frequência cruzada, histogramas e densidades (26/03/2012) # Prof. Walmes Zeviani - Dpto de Estatística - UFPR # #========================================================================================== #------------------------------------------------------------------------------------------ # já vimos como obter distribuições de frequência para variáveis discretas str(mtcars) str(swiss) str(rock) # table(): tabela distribuição de frequencia table(mtcars$am) # do tipo de cambio table(mtcars$gear) # do número de marchas à frente xtabs(~am, data=mtcars) # ou usando a xtabs xtabs(~gear, data=mtcars) # ou usando a xtabs # tabela distribuição de frequencia relativa table(mtcars$gear)/nrow(mtcars) # nrow() table(mtcars$gear)/length(mtcars$gear) # length() prop.table(table(mtcars$gear)) # prop.table() # gráficos de distribuição de frequência pie(table(mtcars$gear)) # de setores a partir de um table() plot(as.factor(mtcars$gear)) # de barras a partir de um factor() barplot(table(mtcars$gear)) # de barras a partir de um table() barplot(table(mtcars$gear)/nrow(mtcars)) # com frequências relativas #------------------------------------------------------------------------------------------ # como classificar variáveis contínuas em classes e obter tabelas de frequencia? # agrupando em classes com o cut() e usando table() em seguida mtcars$c.mpg <- cut(mtcars$mpg, seq(10, 35, by=5)) levels(mtcars$c.mpg) table(mtcars$c.mpg) xtabs(~c.mpg, data=mtcars) # ou usando a xtabs mtcars$c.qsec <- cut(mtcars$qsec, seq(14, 23, by=1.5)) levels(mtcars$c.qsec) table(mtcars$c.qsec) xtabs(~c.qsec, data=mtcars) # ou usando a xtabs #------------------------------------------------------------------------------------------ # como obter a tabela de distribuição acumulada? x <- table(mtcars$c.mpg) cumsum(x)/nrow(mtcars) # cumsum() faz a soma acumulada em um vetor: x1, x1+x2, x1+x2+x3... #------------------------------------------------------------------------------------------ # como obter uma tabela cruzada de distribuição de frequencias? str(mtcars) table(mtcars$am, mtcars$cyl) # usando dois vetores na função table xtabs(~am+cyl, data=mtcars) # ou usando a xtabs #------------------------------------------------------------------------------------------ # tem como representar graficamente? mosaicplot(table(mtcars$am, mtcars$cyl)) # gráfico de mosaico plot(table(mtcars$am, mtcars$cyl)) # mesma coisa mosaicplot(table(mtcars$cyl, mtcars$am)) # invertendo o condicionamento do gráfico #------------------------------------------------------------------------------------------ # como fazer o histograma? hist(mtcars$mpg) # histograma rug(mtcars$mpg) # barras verticais junto ao eixo x indicam os valores da amostra hist(mtcars$mpg, breaks=seq(10, 35, by=2.5)) # breaks= são os limites das classes rug(mtcars$mpg) #------------------------------------------------------------------------------------------ # existe outra forma de representar uma distribuição de valores? plot(density(mtcars$mpg)) # density() faz a estimação não paramétrica da distr. frequência rug(mtcars$mpg) #------------------------------------------------------------------------------------------ # sobrepondo as duas representações de distribuição de frequencias hist(mtcars$mpg, breaks=seq(10, 35, by=5), freq=FALSE) # freq=FALSE é o mesmo que prob=TRUE rug(mtcars$mpg) lines(density(mtcars$mpg), col=2) #------------------------------------------------------------------------------------------ # mexendo nos parâmetros da density plot(density(mtcars$mpg, bw=1.2)) # controlando o bandwidth, valor baixo=rugosidade plot(density(mtcars$mpg, bw=5)) # valor alto=suavidade plot(density(mtcars$mpg, kernel="rectangular")) # controlando a função de influência plot(density(mtcars$mpg, kernel="triangular")) # chama de função kernel #------------------------------------------------------------------------------------------ # os tipos de função kernel kernels <- eval(formals(density.default)$kernel) # extrai os tipos de kernel kernels plot(density(0, from=-1.2, to=1.2, width=1, kernel="gaussian"), type="l", ylim=c(0, 2), xlab="x", main="kernels") for(i in 2:length(kernels)){ lines(density(0, width=1, kernel=kernels[i]), col=i) } legend(0.5, 2.0, legend=kernels, col=seq(kernels), lty=1, bty="n") #------------------------------------------------------------------------------------------ # ver o artigo do blog com acesso pelo link abaixo # http://ridiculas.wordpress.com/2011/10/17/procedimento-grafico-interativo-para-densidade-com-rpanel/ #------------------------------------------------------------------------------------------