Nesta e nas próximas seções usaremos alguns elementos já mencionados no minicurso Iniciação ao R.
Vamos iniciar os trabalhos utilizando o conjunto de dados juul que se encontra dentro do pacote ISwR.
Para instalar o pacote, faça:
install.packages("ISwR")
Para carregar o pacote e o conjunto de dados digite os seguintes comandos:
library("ISwR")
data(kfm)
Agora vamos chamar o conjunto de dados que iremos trabalhar e observar as 10 primeiras linhas:
head(kfm,10)
| no | dl.milk | sex | weight | ml.suppl | mat.weight | mat.height |
|---|---|---|---|---|---|---|
| 1 | 8.42 | boy | 5.002 | 250 | 65 | 173 |
| 4 | 8.44 | boy | 5.128 | 0 | 48 | 158 |
| 5 | 8.41 | boy | 5.445 | 40 | 62 | 160 |
| 10 | 9.65 | boy | 5.106 | 60 | 55 | 162 |
| 12 | 6.44 | boy | 5.196 | 240 | 58 | 170 |
| 16 | 6.29 | boy | 5.526 | 0 | 56 | 153 |
| 22 | 9.79 | boy | 5.928 | 30 | 78 | 175 |
| 28 | 8.43 | boy | 5.263 | 0 | 57 | 170 |
| 31 | 8.05 | boy | 6.578 | 230 | 57 | 168 |
| 32 | 6.48 | boy | 5.588 | 555 | 58 | 173 |
Os dados tratam de um estudo com 50 crianças de aproximadamente 2 meses de vida. Elas são pesadas imediatamente antes e depois de cada amamentação e a ingestão de leite materno é registrada juntamente com outras informações.
Vamos finalmente calcular algumas estatísticas:
mean(kfm$weight) # Média
## [1] 5.31874
median(kfm$weight) # Mediana
## [1] 5.352
var(kfm$weight) # Variância
## [1] 0.300636
sd(kfm$weight) # Desvio Padrão
## [1] 0.5483028
range(kfm$weight) # Amplitude
## [1] 4.120 6.578
Lembrando que também podemos obter algumas estatísticas de forma mais rápida (porém não tão completa como se deseja) utilizando o comando summary(), como mostrado abaixo:
summary(kfm$weight)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.120 4.977 5.352 5.319 5.637 6.578
Vamos supor agora que estamos interessados no quantis da variável weight. Para isso usamos a função quantile().
quantile(kfm$weight)
## 0% 25% 50% 75% 100%
## 4.12000 4.97725 5.35200 5.63675 6.57800
Observe que a função acima retornou os valores mínimo, máximo e a mediana e também o 1º e 3º quartil.
Podemos também trabalhar com qualquer percentil. Basta explicitar na função qual percentil se deseja.
quantile(kfm$weight, c(0.32, 0.65)) # 32º percentil e 65º percentil
## 32% 65%
## 5.12096 5.54300
Vamos supor que estamos interessados em um resumo básico das estatísticas de todas as variáveis do conjunto e dados. Para isso, façamos:
summary(kfm)
## no dl.milk sex weight
## Min. : 1.00 Min. : 4.440 boy :25 Min. :4.120
## 1st Qu.: 28.75 1st Qu.: 6.555 girl:25 1st Qu.:4.977
## Median : 50.50 Median : 7.660 Median :5.352
## Mean : 52.36 Mean : 7.504 Mean :5.319
## 3rd Qu.: 79.75 3rd Qu.: 8.428 3rd Qu.:5.637
## Max. :105.00 Max. :10.430 Max. :6.578
## ml.suppl mat.weight mat.height
## Min. : 0.00 Min. :47.00 Min. :153.0
## 1st Qu.: 16.25 1st Qu.:55.00 1st Qu.:162.0
## Median : 57.50 Median :58.00 Median :167.0
## Mean : 96.00 Mean :59.96 Mean :167.4
## 3rd Qu.:103.75 3rd Qu.:64.50 3rd Qu.:172.0
## Max. :590.00 Max. :80.00 Max. :185.0
Observe que na variável sex a função faz apenas a contagem de cada indivíduo em suas respectivas classes. Isso é de se esperar já que esta variável é de natureza qualitativa.
Vamos investigar como está o comportamento das variáveis através de uma ferramenta chama diagrama de ramos e folhas. Para isso vamos usar o comando abaixo:
stem(kfm$weight)
##
## The decimal point is 1 digit(s) to the left of the |
##
## 40 | 2
## 42 | 469
## 44 |
## 46 | 147234
## 48 | 397
## 50 | 081367
## 52 | 0062456689
## 54 | 253579
## 56 | 24473
## 58 | 0283
## 60 | 3301
## 62 |
## 64 | 08
Aparentemente esta variável apresenta um comportamento simétrico e semelhando a distribuição normal. Mais a frente verificaremos com outras ferramentas se esta variável é ou não de natureza normal.
Existem outras função que sumarizam melhor os dados. Uma delas é a função basicStats do pacote fBasics. Veja abaixo um exemplo do uso desta função:
install.packages("fBasics") # Instalando o pacote
library("fBasics") # Carregando o pacote
basicStats(kfm$weight) # Usando a função na variável weight
## X..kfm.weight
## nobs 50.000000
## NAs 0.000000
## Minimum 4.120000
## Maximum 6.578000
## 1. Quartile 4.977250
## 3. Quartile 5.636750
## Mean 5.318740
## Median 5.352000
## Sum 265.937000
## SE Mean 0.077542
## LCL Mean 5.162914
## UCL Mean 5.474566
## Variance 0.300636
## Stdev 0.548303
## Skewness 0.001721
## Kurtosis -0.367078
Esta abordagem é usada para apresentar variáveis contínuas por determinados grupos de interesse.
Vamos supor que temos interesse no peso médio das crianças por sexo. Para isso, faça:
tapply(kfm$weight, kfm$sex, mean)
## boy girl
## 5.43816 5.19932
No exemplo acima, a variável sex já se apresenta como fator (
class(kfm$sex)) e verifique a classe a qual a variável pertence). Isso ocorre porque, ao importar o banco de dados, o R automaticamente transforma variáveis que contenham strings em fator.
Vale lembrar que a função tapply() também aceita outras funções. Tente aplicar a função summary() juntamente com a tapply() e veja o resultado.
tapply(kfm$weight, kfm$sex, summary)
## $boy
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.360 5.106 5.359 5.438 5.882 6.578
##
## $girl
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.120 4.825 5.336 5.199 5.568 6.100
summary().