Plotando gráficos de caixas com Linguagem R

Plotando gráficos de caixas

dados sumarizados de média, mediana e quartis com R

Dentro da área de estudo da Estatística Descritiva tem um conjunto de valores sumarizados que são utilizados com bastante frequência por analistas dos mais diversos ramos. Por exemplo os cálculos de média móvel como Média Aritmética, Mediana, 1º Quartil, 3º Quartil, menor valor, maior valor, são alguns destes dados sumarizados que podem ser facilmente calculados e analisados nos nossos experimentos. Com estes dados em mãos é possível sair plotando gráficos de caixas com Linguagem R.

Quando estamos estudando R, aprendemos em primeiro lugar a usar o método SUMMARY para olhar estes dados estatísticos na nossa amostragem. Certamente quando este método é disparado contra um dataframe, o R calcula estes sumarizadores nas colunas numéricas. O R também faz algumas outras análises estatística (como a moda) em colunas categóricas. Vamos focar na coluna numérica e então ver estes valores tanto no resultado do método summary quanto em um gráfico de caixas.

Para este estudo, contudo, vamos usar a base de dados pública da Universidade da Califórnia. Você pode ver mais detalhes desta base de dados no link: http://archive.ics.uci.edu/ml/datasets/Contraceptive+Method+Choice. É um dataset que mostra, por exemplo, algumas informações sobre a idade da mulher e uso de métodos contraceptivos (e algumas outras variáveis). O objetivo não é entrar em detalhes sobre o resultado do estudo, mas sim, entender estes dados estatísticos e como fazer gráficos com eles em R.

Carregar os dados no dataframe

Primeira coisa é informar de qual URL vamos baixar os dados, e em seguida, armazenar isso num Dataframe.

url <- "http://archive.ics.uci.edu/ml/machine-learning-databases/cmc/cmc.data"

data <- read.csv(url, sep=",")

summary(data)

O método summary apresenta o seguinte resultado:

dadosSummary

Reparem que os dados são sumarizados através dos métodos:

  • Min (Mínimo valor)
  • 1st qu. (1º Quartil)
  • Median (Mediana)
  • Mean (Média)
  • 3rd Qu. (3º Quartil)
  • Max (Máximo valor)

Estes valores são calculados automaticamente com base em cada valor numérico da coluna. Enquanto isso o dataframe está com um nome genérico que o R colocou em cada coluna, ao observar não é tão simples saber o que cada coluna representa. Voltando ao site da UCI e lendo os dados relativos à pesquisa, temos as colunas na seguinte ordem:

  • Wife’s age (numerical)
  • Wife’s education (categorical) 1=low, 2, 3, 4=high
  • Husband’s education (categorical) 1=low, 2, 3, 4=high
  • Number of children ever born (numerical)
  • Wife’s religion (binary) 0=Non-Islam, 1=Islam
  • Wife’s now working? (binary) 0=Yes, 1=No
  • Husband’s occupation (categorical) 1, 2, 3, 4
  • Standard-of-living index (categorical) 1=low, 2, 3, 4=high
  • Media exposure (binary) 0=Good, 1=Not good
  • Contraceptive method used (class attribute) 1=No-use, 2=Long-term, 3=Short-term

Então vamos colocar estes nomes traduzidos no dataframe e facilitar nossa manipulação. Para isso, veja o código abaixo:

colunas <- c("IdadeEsposa","EducacaoEsposa","EducacaoMarido","Filhos","ReligiaoEsposa","EsposaTrabalha","OcupacaoMarido","PadraoDeVida","ExposicaoMidia","MetodoContraceptivo")

colnames(data) <- colunas

summary(data)

Analisando novamente o método summary, mas agora temos cara coluna com um nome apropriado.

resultadoSummary

Plotando gráficos de caixas com Linguagem R

Para plotar estes dados em um gráfico, é possível usar o Gráfico de Caixa, que representa todos estes valores em uma única representação gráfica visual. Em R o método chamado é o Boxplot, e pode ser acompanhado no código abaixo:

boxplot(IdadeEsposa~MetodoContraceptivo, data=data,
  col=unique(data$MetodoContraceptivo)+1,
  ylab="Idade Mulher", xlab="Método Contraceptivo",
  main="Boxplot de uso de métodos contraceptivos" )

O resultado desta plotagem é esse gráfico abaixo:

Boxplot1

O gráfico foi dividido no eixo X pelos métodos contraceptivos 1 (Não Usa), 2 (Uso de Longo Tempo) e 3 (Uso de Curto Tempo). Todos eles analisando a idade da mulher (no eixo Y) que o consumiu. Porém, quando olhamos o método summary ele fez isso com os dados de todo o dataframe e não separado por tipo de método contracpetivo, igual foi plotado no gráfico.

Para fazer esta separação, vamos criar outros três dataframes cada um baseado em um tipo de método contraceptivo, e então olhar os dados sumarizados destes novos dataframes. Para isso, veja o código abaixo:

data1 <- subset(data, MetodoContraceptivo==1)
data2 <- subset(data, MetodoContraceptivo==2)
data3 <- subset(data, MetodoContraceptivo==3)

summary(data1$IdadeEsposa)

summary(data2$IdadeEsposa)

summary(data3$IdadeEsposa)

 

O resultado destes dataframes só para a coluna IdadeEsposa são os seguintes:

resultadoSummary

Próximos passos

Comparando estes valores do método Summary com o apresentado no gráfico de caixas, verão que os dados são os mesmos do proyector de vídeo! Caso queira saber um pouco mais sobre a Estatística Descritiva. E também se quiser saber mais sobre o Gráfico de Caixa.

Por fim, deixo o desafio de você evoluir suas análises trabalhando com cores no R.

Sobre Diego Nogare 350 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.