Estatística-2017/2 aula de 14/08 TURMA: IGA
Objetivos da aula Usando o R, 1) construir um histograma; 2) construir um ramo-e-folhas; 3) calcular a média aritmética de um conjunto de valores; 4) definir quantis de uma distribuição de frequências e mostrar como usar o R para calcular quantis. 5) definir e construir um boxplot.
Exemplo 1: Dados de salário da tabela 2.1 do livro-texto Numa planilha Excel os valores de salário do conjunto trabalhado na aula anterior foram digitados em uma coluna com 36 linhas. Nesse caso não foi incluído o nome da variável. Esses dados foram salvos no arquivo salario.txt com a opção do Excel salvar como texto (separado por tabulações). Para ler no R os dados de salário usaremos o comando salario=scan( c:\\geografia\\salario.txt ) Observações: 1- Lembre que no R devemos substituir a vírgula por ponto. 2- scan também é usado para ler um conjunto de dados e é recomendado para situações em que só há uma variável.
> salario [1] 4.00 4.56 5.25 5.73 6.26 6.66 6.86 7.39 7.44 7.59 8.12 8.46 [13] 8.74 8.95 9.13 9.35 9.77 9.80 10.53 10.76 11.06 11.59 12.00 12.79 [25] 13.23 13.60 13.85 14.69 14.71 15.99 16.22 16.61 17.26 18.75 19.40 23.30
Função hist() A função hist() gera o histograma de um conjunto de dados quantitativos. Por exemplo, se digitarmos hist(salario), obtemos
Frequency 0 2 4 6 8 Histogram of salario 5 10 15 20 salario
A função hist() Podemos observar que as escalas usadas no histograma não estão adequadas, que o título está incompleto e em inglês e que foram consideradas 10 classes nesse histograma com uma das classes tendo frequência nula. 1) Como podemos saber que intervalos foram considerados nessa figura? 2) Como podemos construir o histograma de salários com os intervalos obtidos na aula passada? Para responder essas perguntas, vamos primeiro chamar a função help(hist) que lista e define todos os argumentos.
hist(x,...) ## Default S3 method: hist(x, breaks = "Sturges", freq = NULL, probability =!freq, include.lowest = TRUE, right = TRUE, density = NULL, angle = 45, col Arguments A função hist() X breaks vetor de valores cujo histograma é solicitado. Um entre: vetor fornecendo os limites dos intervalos de classe que serão considerados na construção do histograma, número fornecendo o número de classes a ser considerado na construção do histograma, existem outras opções que não serão consideradas aqui.
A função hist() Logo, com o argumento breaks podemos indicar os limites dos intervalos considerados ou o número de intervalos que desejamos usar na construção do histograma. Isso responde a segunda pergunta. Na aula passada construímos seis intervalos de classe para montar a tabela de frequências de salários, a saber, [3.20,6.70[, [6.70,10.20[, [10.20,13.70[,[13.70,17.20[,[17.20,20.70[ e [20.70,24.20[ Antes de mostrar como informar esses limites, lembre que adotamos a convenção de intervalos fechados à esquerda e abertos à direita, tal que por exemplo, um salário de 6.70 pertence à segunda classe e não à primeira classe. Para informar essa opção ao R devemos também incluir o argumento right=f
Frequency 0 2 4 6 8 10 12 A função hist() Lembre também do argumento main= Título. hist(salario,breaks=c(3.2,6.7,10.2,13.7,17.2,20.7,24.2),right=f,main= Histograma dos salários, xlab= salário (em salários mínimos) ) Histograma dos Salários 5 10 15 20 25 salário (em salários mínimos)
Modificando a escala dos eixos O argumento xlim=c(min,max) indica os valores mínimo e o máximo desejados para o eixo horizontal e, similarmente, o argumento ylim=c(min,max) indica os valores mínimo e o máximo desejados para o eixo vertical.
Rótulo para os eixos O argumento xlab= nome indica o rótulo para o eixo horizontal e, o argumento ylab= nome indica o rótulo para o eixo vertical. Na figura anterior, o rótulo do eixo vertical está em inglês: Frequency, podemos usar o argumento ylab= frequência absoluta, por exemplo.
Tabela de frequências a partir do histograma Ainda não respondemos a pergunta 1 que era saber quais foram os intervalos usados pelo R ao gerar o primeiro histograma. Há um argumento na função hist() no qual indicamos se queremos gerar ou não o gráfico. O default dessa função é sempre gerar o gráfico, mas se indicarmos plot=f, o R listará, não o histograma, mas sim as classes e suas respectivas frequências. Aqui cabe lembrar também que o default do R é definir os intervalos fechados à direita e abertos à esquerda. Vamos ver quem foram os 10 intervalos sugeridos pelo R quando não indicamos nada para o argumento breaks. hist(salario,plot=f)
$breaks (limites utilizados, fechado à esquerda) [1] 4 6 8 10 12 14 16 18 20 22 24 $counts (frequências absolutas) [1] 4 6 8 5 4 3 3 2 0 1 $density (densidade de frequência relativa: freq. rel./comprimento da classe) [1] 0.05555556 0.08333333 0.11111111 0.06944444 0.05555556 0.04166667 0.04166667 0.02777778 0.00000000 0.01388889 $mids (pontos médios das classes) [1] 5 7 9 11 13 15 17 19 21 23 $xname (nome da variável) [1] "salario" $equidist (variável lógica informando se os intervalos têm comprimentos iguais) [1] TRUE
Tabela de frequências a partir do histograma Logo, podemos ver que os intervalos considerados pelo R foram ]2,4],]4,6],]6,8],]8,10],]10,12],]12,14],]14,16],]16,18],]18,20],]20,22],]22,24] Vamos testar agora indicar o número de intervalos. Por exemplo, vimos que no livro os autores construíram o histograma com cinco intervalos de classe. hist(salario,breaks=5,xlab= salário,ylab= densidade de frequência relativa, freq=f,main= Histograma dos Salários,xlim=c(2,25))
densidade de frequência relativa 0.00 0.02 0.04 0.06 0.08 Histograma dos Salários 0 5 10 15 20 25 salário
$breaks [1] 0 5 10 15 20 25 $counts [1] 2 16 11 6 1 $density [1] 0.011111111 0.088888889 0.061111111 0.033333333 0.005555556 $mids [1] 2.5 7.5 12.5 17.5 22.5 $xname [1] "salario" $equidist [1] TRUE
Preenchimento das barras Você pode escolher a cor do preenchimento das barras do histograma com o argumento col= nome da cor.
Ramo-e-folhas A função do R que desenha um esquema ramo-e-folhas é a função stem(). > stem(salario) The decimal point is at the 4 0637 6 379446 8 15701488 10 5816 12 08269 14 77 16 0263 18 84 20 22 3
> stem(salario,scale=2) The decimal point is at the 4 06 5 37 6 379 7 446 8 157 9 01488 10 58 11 16 12 08 13 269 14 77 15 16 026 17 3 18 8 19 4 20 21 22 23 3
Função mean() A função mean(x) retorna o valor da média dos valores do vetor x. mean(salario) Saída no R [1] 11.12222 round(mean(salario),digit=2) [1] 11.12
Quantis de uma distribuição Para variáveis quantitativas definem-se os quantis de uma distribuição da seguinte forma. O 100p-ésimo quantil da distribuição é o valor q(p) tal que a frequ~encia acumulada até esse valor na distribuição é dada por p, 0<p<1. A figura a seguir ilustra essa definição usando o histograma da distribuição da variável.
Determinação dos quantis de uma distribuição usando o R A função apropriada do R para obter os quantis de uma distribuição é a função quantile. Se x é o vetor contendo os dados, e desejamos determinar os quantis de 25%,50% e 75%, digitamos quantile(x,c(0.25,0.5,0.75)) Se desejamos o quantil de 5% e o de 95%, pedimos quantile(x,c(0.05,0.95)) Em geral, q(p) quantile(x,p)
Quantis especiais Quartis: são os quantis de 25, 50 e 75% Q1, Q2 e Q3 Quintis: são os quantis de 20, 40, 60 e 80% Decis: são os quantis de 10, 20, 30, 40, 50, 60, 70, 80 e 90% Percentis: são os quantis de 1,2,3,4,5,...,98 e 99%.
Calcule os quartis da distribuição de salários quantile(salario,c(0.25,0.5,0.75)) Saída do R: 25% 50% 75% 7.5525 10.1650 14.0600 Interpretação: 25% dos salários são menores ou iguais a 7,55 salários mínimos; 50% dos salários são menores ou iguais a 10,16 salários mínimos, 25% dos salários são maiores do que 14,06 salários mínimos, 50% dos salários variam entre 10,16 e 14,06 salários mínimos, etc.
Desenho-esquemático ou gráfico-caixa (box-plot) É um gráfico adequado para variáveis quantitativas e que usa as informações de valor mínimo, os três quartis (Q1, Q2 e Q3) e valor máximo. No R há a função fivenum(x) que retorna essas cinco medidas usadas na construção do box-plot. > fivenum(salario) [1] 4.000 7.515 10.165 14.270 23.300 Mínimo Q1 Q2 Q3 Máximo
Desenho Esquemático (Box Plot) A informação contida no esquema dos cinco números pode ser traduzida graficamente num diagrama, conhecido como box plot. A figura a seguir, ilustra um boxplot.
Boxplot O retângulo no boxplot é traçado de tal maneira que suas bases têm alturas correspondentes aos primeiro e terceiro quartis da distribuição. O retângulo é cortado por um segmento paralelo às bases, na altura correspondente ao segundo quartil. Assim, o retângulo do boxplot correponde aos 50% valores centrais da distribuição.
Cosntruindo o boxplot Depois de desenhado o retângulo, traça-se um segmento paralelo ao eixo, partindo do ponto médio da base superior do retângulo até o maior valor observado que NÃO supera o valor de Q3+(1,5)DEQ. O mesmo é feito a partir do ponto médio da base inferior do retângulo, até o menor valor observado que NÃO é menor do que Q1-(1,5)DEQ.
Fechando o boxplot As observações que estiverem acima de Q3+(1,5)DEQ ou abaixo de Q1- (1,5)DEQ são chamadas pontos exteriores e representadas por asteriscos. Essa observações destoantes das demais são chamadas de outliers ou valores atípicos ou discrepantes em relação ao conjunto.
Observações Não necessariamente haverá a presença de pontos exteriores num boxplot. Quando for este o caso, o esquema terá a seguinte aparência:
A função boxplot() boxplot(salario,main= Boxplot de Salários,ylab= sal. min. )
Exemplo 2 Vamos trabalhar com os dados sobre salários para diferentes profissões/formações do conjunto dados6bm.txt. dados<-read.table( c:\\flavia\\dados6bm.txt,header=t) Há quatro profissões diferentes, a saber, nivelmedio, mecanico, administrador, engeletrico. boxplot(dados[,2],dados[,3],dados[,4],dados[,5],names=c( nivel medio, mecanico, administrador, eng.eletrico ))
1 nível médio 2 mecânico 3 administrador 4 Eng. Elétrico
Cores col - cor de preenchimento dos retângulos
Boxplots horizontais horizontal - valor lógico, se T o boxplot fica na posição horizontal. Se F (default) fica na posição vertical.
Outros argumentos ylim: controla a escala de valores main: título sub: sub-título names: vetor com os rótulos dos conjuntos de dados, quando são pedidos mais de um boxplot. pch: específica o caracter a ser usado nos pontos exteriores. Ex.: pch= *.
Exemplo 3 Dados sobre temperaturas médias mensais. (dados5bm.txt) Com as temperaturas médias mensais, separadas mês a mês, para cada cidade, construa boxplots para analisar o comportamento das mesmas, para cada cidade.
Boxplots das temperaturas mensais de Ubatuba e Cananéia mês do ano mês do ano
Funções do R scan() para ler um único conjunto de dados hist() para construir um histograma stem() para construir um ramoe-folhas boxplot() para construir um boxplot help() para conhecer a função a ser usada no R mean() para calcular a média aritmética de um conjunto de dados quantile(x,p) para calcular o quantil q(p) dos dados no vetor x fivenum(x) para retornar o mínimo, os três quartis e o máximo do vetor x