library(htmltools)
library(knitr)
library(ggplot2)
library(GGally)
library(dplyr)
library(reshape2)
Inicia-se a análise da base de dados Iris com a função str()
, dá-se preferência a esta função pelo facto de agrupar um conjunto de informação útil nesta fase inicial. De notar que que seria equivalente a usar as funções class()
, names
, dim()
, typeof()
e head
. Porém, em vez de “chamar” multiplas funções consegue-se a mesma informação somente com uma.
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Verifica-se 150 observações (linhas) e 5 variàveis (colunas) em que uma das variáveis é relativamente três espécies de flores e as restantes quatro variáveis as caracteristicas das flores. Procede-se com a função summary()
para obter algumas estatisticas descritivas.
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
Por forma a que os valores do quadro acima sejam mais perceptivel iremos dotar-nos de ferramentas visuais para explorar os dados em estudo.Inicia-se com caixas de bigodes.
boxplot(iris[, 1:4], col="gray")
ggplot(iris) +
geom_point(aes(x = Sepal.Length, y = Sepal.Width, col = Species, shape = Species))
ggplot(iris) +
geom_point(aes(x = Petal.Length, y = Petal.Width, col = Species, shape = Species))
Com o uso de cores torna-se possivel distinguir as espécies perante petal e sepal. Nesta caso obtêm-se uma percepção de que o comprimento e largura da petal é bastante distinta entre espécies ao contrário do que sucede no primeiro gráfico relativo a sépala. A par da espécie setosa que se encontra com os dados localizados no lado superior esquerdo do gráfico, as outras duas espécies encontra-se com valores bastante dispersos no gráfico.O uso de caixas de bigodes poderá ajudar-nos a entender a dispersão de cada carecteristica.
Uma outra abordagem talvez nos venha a ser mais útil, iremos usar a função ggpairs
que é de leitura fácil e complementaridade superior à função pairs
. Consegue-se desta forma obter correlações, diferentes combinações das caracteristicas e graficos de densidades.
GGally::ggpairs(iris,columns = 1:4, aes(color = Species, alpha = 0.5))
Ou em alternativa, sem os valores de correlações e mais combinações de caracteristicas temos:
GGally::ggpairs(iris, columns = 1:4, aes(color = Species, alpha = 0.5),
upper = list(continuous = "points"))
A espécie setosa é claramente das três espécies a que tem caracteristicas bem vincadas e proprias, sendo que os dados mostram sucessivamente como os valores se destacam.
Uma forma útil e rápida de quando se está perante dados com dimensões elavads é condensar o nosso data set e efetuar médias, neste caso das caracteristicas das espécies, passando assim a ter um data frame com 12 linhas e 3 colunas. Deve-se ter em conta que ao executar tal passo perde-se alguma visibilidade dos dados como um todo. A média por si só pode conduzir a elações por vezes distorcidas. Esta condensação pretende somente dar um vislumbre de como os dados se posicionam e como um analista pode de forma ágil visualizar um data frame extenso em algo mais compacto.
medias <- iris %>%
dplyr::group_by(Species) %>%
dplyr::summarise(m_sepal_leng = mean(Sepal.Length),
m_sepal_wid = mean(Sepal.Width),
m_petal_leng = mean(Petal.Length),
m_petal_wid = mean(Petal.Width))
medias <- medias %>%
reshape2::melt(id.vars = "Species")
str(medias)
## 'data.frame': 12 obs. of 3 variables:
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3 1 2 3 1 2 3 1 ...
## $ variable: Factor w/ 4 levels "m_sepal_leng",..: 1 1 1 2 2 2 3 3 3 4 ...
## $ value : num 5.01 5.94 6.59 3.43 2.77 ...
medias %>%
ggplot() +
geom_point(aes(x = variable, y = value))
NO gráfico acima temos as médias das quatro caracteristicas das três espécies. Iremos usar uma visualização mais perceptivel e de fácil leitura.
medias %>%
ggplot() +
geom_point(aes(x = variable, y = value)) +
facet_wrap(~Species) +
theme(axis.text.x = element_text(angle = 90))
Torna-se desta forma evidente do que se está a analisar ao contrário do que sucedia acima.
Um outra forma de visualizar este novo data frame é a de introduzir cores com formas.
medias %>%
ggplot() +
geom_point(aes(x = Species, y = value, shape = variable, col = variable),
size = 4) +
geom_smooth(aes(x = Species, y = value))
Existe uma amplitude vasta da forma como abordar esta base dados em termos de visualização. Tudo depende de qual a pergunta que se pretende responder e qual o objetivo do estudo em questão.