Utilizando o conjunto de dados USArrests descrito na aula, construa um histograma para cada uma das variáveis contida nesse banco de dados. Use uma cor diferente para cada histograma. Construa também box-plots para cada uma das variáveis, com as mesmas cores usadas no histograma.
Resp:
library(ggplot2)
data(USArrests)
dataset <- USArrests
#names(dataset)
#head(dataset)
g1 <- ggplot(mapping = aes(Murder), dataset) +
geom_histogram(bins=15, fill ="red", color="grey")
g2 <- ggplot(mapping = aes(Assault), dataset) +
geom_histogram(bins=15, fill ="green", color="grey")
g3 <- ggplot(mapping = aes(UrbanPop), dataset) +
geom_histogram(bins=15, fill ="blue", color="grey")
g4 <- ggplot(mapping = aes(Rape), dataset) +
geom_histogram(bins=15, fill ="cyan", color="grey")
library("gridExtra")
grid.arrange(g1, g2, g3, g4, nrow=2, ncol=2)
Escolha duas variáveis do banco de dados para fazer um diagrama de dispersão (scatterplot), usando geom_point. Acrescente uma linha relacionando as duas variáveis para ajudar na interpretação. Descreva o fenômeno que você quer analisar com esse diagrama.
Resp:
O gráfico abaixo sugere que há uma correlação entre as quantidades de homícidio e violência sexual: o aumento de um destes crimes influencia no aumento do outro. Nota-se ainda que há pontos relacionados a alta quantidade de violência sexual que não seguem esse padrão.
library(ggplot2)
data(USArrests)
dataset <- USArrests
#names(dataset)
g <- ggplot(mapping = aes(x=Murder, y=Rape), dataset) +
geom_point(size=2) +
geom_smooth(se=FALSE, method = "lm", color="red")
g
## `geom_smooth()` using formula = 'y ~ x'
Utilizando a função data() do R, escolha um conjunto de dados de sua preferência e crie 4 gráficos, a sua escolha, usando as variáveis deste banco de dados. Faça uma breve interpretação de seus achados.
Resp:
library(ggplot2)
#?ggplot
data(economics) # US economic time series
#help(economics)
dataset <- economics
#head(dataset)
#names(dataset)
#summary(dataset$pop)
g1 <- ggplot(mapping = aes(x=pop, y=unemploy), dataset) +
geom_point(size=2) +
geom_smooth(method = "lm", color="red")+
labs(title = 'Number of unemployed (thousands)',
y = '# Unemployed',
x = 'Total population (thousands)')
g1
## `geom_smooth()` using formula = 'y ~ x'
g2 <- ggplot(mapping = aes(pop), dataset) +
geom_histogram(bins=30, fill ="yellow", color="grey") +
labs(title = 'Total population (thousands)')
g2
g3 <- ggplot(mapping = aes(unemploy), dataset) +
geom_histogram(bins=30, fill ="violet", color="grey") +
labs(title = 'Number of unemployed (thousands)')
g3
g4 <- ggplot(mapping = aes(uempmed), dataset) +
geom_histogram(bins=15, fill ="orange", color="grey") +
labs(title = "Median duration of unemployment (weeks)")
g4
As análises aqui se referem a dados sobre os USA.
Nota-se pelos gráficos que a quantidade de desempregados (‘unemployed’) tende a aumentar conforme a população total aumenta. Esse aumento possui um comportamento oscilatório.
Os gráficos mostram que, na maioria dos casos, um indivíduo fica “desempregado” (‘uempmed’) por cerca de 10 semanas. Além disso, percebe-se que, em média, houve cerca de 8 milhões de desempregados nos EUA no período analisado.
Considerando o banco de dados utilizado no exercício anterior, escolha duas variáveis para analisar via diagrama de dispersão. Comente brevemente seus achados.
Resp:
library(ggplot2)
data(economics) # US economic time series
dataset <- economics
g1 <- ggplot(mapping = aes(x=pop, y=pce), dataset) +
geom_point(size=2) +
geom_smooth(method = "lm", color="red") +
labs(title = 'PCE - Personal consumption expenditures
(billions of dollars)',
y = 'PCE',
x = 'Total population (thousands of dollars)')
g1
## `geom_smooth()` using formula = 'y ~ x'
g2 <- ggplot(mapping = aes(x=pop, y=psavert), dataset) +
geom_point(size=2) +
geom_smooth(method = "lm", color="red") +
labs(title = 'PSAVERT - Personal savings rate',
y = 'PSAVERT',
x = 'Total population (thousands of dollars)')
g2
## `geom_smooth()` using formula = 'y ~ x'
Os gráficos mostram que o consumo pessoal (‘PCE’) tende a aumentar de forma exponencial conforme a população cresce. Por outro lado, a poupança pessoal (‘PSAVERT’) é maior quando a população diminui.
Utilize o comando ?mpg e descreva as variáveis contidas neste banco de dados. Faça uma análise preliminar deste banco de dados usando os comando head, tail, etc (como fizemos para USArrests).
Resp:
library(ggplot2)
#?mpg
data(mpg) # Fuel economy data from 1999 and 2008 for 38 popular models of car
dataset <- mpg
head(dataset)
## # A tibble: 6 × 11
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa…
## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa…
## 3 audi a4 2 2008 4 manual(m6) f 20 31 p compa…
## 4 audi a4 2 2008 4 auto(av) f 21 30 p compa…
## 5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa…
## 6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa…
tail(dataset)
## # A tibble: 6 × 11
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 volkswagen passat 1.8 1999 4 auto(l5) f 18 29 p mids…
## 2 volkswagen passat 2 2008 4 auto(s6) f 19 28 p mids…
## 3 volkswagen passat 2 2008 4 manual(m6) f 21 29 p mids…
## 4 volkswagen passat 2.8 1999 6 auto(l5) f 16 26 p mids…
## 5 volkswagen passat 2.8 1999 6 manual(m5) f 18 26 p mids…
## 6 volkswagen passat 3.6 2008 6 auto(s6) f 17 26 p mids…
names(dataset)
## [1] "manufacturer" "model" "displ" "year" "cyl"
## [6] "trans" "drv" "cty" "hwy" "fl"
## [11] "class"
summary(dataset)
## manufacturer model displ year
## Length:234 Length:234 Min. :1.600 Min. :1999
## Class :character Class :character 1st Qu.:2.400 1st Qu.:1999
## Mode :character Mode :character Median :3.300 Median :2004
## Mean :3.472 Mean :2004
## 3rd Qu.:4.600 3rd Qu.:2008
## Max. :7.000 Max. :2008
## cyl trans drv cty
## Min. :4.000 Length:234 Length:234 Min. : 9.00
## 1st Qu.:4.000 Class :character Class :character 1st Qu.:14.00
## Median :6.000 Mode :character Mode :character Median :17.00
## Mean :5.889 Mean :16.86
## 3rd Qu.:8.000 3rd Qu.:19.00
## Max. :8.000 Max. :35.00
## hwy fl class
## Min. :12.00 Length:234 Length:234
## 1st Qu.:18.00 Class :character Class :character
## Median :24.00 Mode :character Mode :character
## Mean :23.44
## 3rd Qu.:27.00
## Max. :44.00
Sobre o dataset ‘mpg’:
“Fuel economy data from 1999 and 2008 for 38 popular models of car
Description This dataset contains a subset of the fuel economy data that the EPA makes available on http://fueleconomy.gov. It contains only models which had a new release every year between 1999 and 2008 - this was used as a proxy for the popularity of the car.
Usage mpg Format A data frame with 234 rows and 11 variables
manufacturer model model name
displ engine displacement, in litres
year year of manufacture
cyl number of cylinders
trans type of transmission
drv f = front-wheel drive, r = rear wheel drive, 4 = 4wd
cty city miles per gallon
hwy highway miles per gallon
fl fuel type
class “type” of car”
Faça um gráfico de dispersão entre as variáveis hwy e cyl. Mude a cor do tema. Interprete os resultados.
Resp:
library(ggplot2)
data(mpg)
#summary(mpg$hwy)
#?mpg
dataset <- mpg
ggplot(mapping = aes(x=cyl, y=hwy), data=dataset) +
geom_point() +
theme_bw()
#?theme_gray
Pelo gráfico, nota-se que a maioria dos automóvéis da base de dados possuem 4 cilindros. Dentre esses, o consumo pode variar de 20 até mais de 40 mpg na estarada (denotado pelo acrônimo em inglês ‘hwy’, ‘highway miles per gallon’). Já os veículos com 8 cilindros consumem menos.
Escolha duas variáveis do banco de dados e construa histograma e box-plot para elas. Personalize os gráficos usando cores diferentes do default. Não se esqueça de dar nomes para os eixos, bem como um título para os gráficos. Organize os gráficos em subplots usando gride.arrange(). Note que teremos 2 histogramas e 2 boxplots, totalizando 4 gráficos que vc deve plotar em duas colunas.
Resp:
library(ggplot2)
data(mpg)
dataset <- mpg
g1 <- ggplot(mapping = aes(cyl), dataset) +
geom_histogram(bins=15, fill ="violet", color="white") +
labs(title = "Histogram",
y = '# Cars',
x = 'Number of cylinders')
g2 <- ggplot(mapping = aes(cty), dataset) +
geom_histogram(bins=15, fill ="orange", color="gray") +
labs(title = "Histogram",
y = '# Cars',
x = 'City miles per gallon')
g3 <- ggplot(mapping = aes(x=class, y=cty), data=dataset) +
geom_boxplot(fill="blue", color="blue") +
labs(title = "Box-plot",
y = 'Number of cylinders',
x = '"Type" of car')
g4 <- ggplot(mapping = aes(x=class, y=hwy), data=dataset) +
geom_boxplot(fill="green", color="gray") +
labs(title = "Box-plot",
y = 'Highway miles per gallon',
x = '"Type" of car')
library("gridExtra")
grid.arrange(g1, g2, g3, g4, nrow=2, ncol=2)
Usando o arquivo de dados mpg ainda, vamos agora treinar o uso do recurso facet.
Resp:
library(ggplot2)
data(mpg)
#?mpg
dataset <- mpg
#head(dataset)
#?facet_wrap
#? facet_grid
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=displ, y=hwy, color=class)) +
facet_wrap(~class, nrow=2)
g1
Resp:
library(ggplot2)
data(mpg)
dataset <- mpg
g2 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=displ, y=hwy, color=drv)) +
facet_grid(drv ~ cyl)
g2
Resp:
library(ggplot2)
data(mpg)
dataset <- mpg
?facet_grid
#?facet_wrap
g3 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=displ, y=hwy, color=cyl)) +
# facet_wrap(~cyl)
facet_grid(. ~ cyl)
g3
Colocando color=cyl as cores agora variam de acordo com o número de cilindro. Já o comando facet_grid(. ~ cyl) divide em colunas baseado em no número de cilindros (‘cyl’).
Corrupção x desenvolvimento humano. Para realizar este exercício, usaremos um banco de dados disponibilizado na página do nosso curso (homework3.xls). Para carregar este conjunto de dados no R, execute os seguintes comandos:
library(readxl)
homework2 = read_excel(”homework2.xlsx”)
OBS: Lembre-se de salvar o arquivo na pasta usada como diretório do R.
Os dados dizem respeito basicamente ao índice de desenvolvimento humano (HDI) e percepção da corrupção (CPI).
Resp:
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
#head(dataset)
#str(dataset)
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
min_cpi <- min(dataset$CPI)
max_cpi <- max(dataset$CPI)
min_hdi <- min(dataset$HDI)
max_hdi <- max(dataset$HDI)
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=CPI, y=HDI), color="red") +
scale_x_continuous(limits = c(min_cpi-1, max_cpi+1),
breaks = seq(min_cpi-1, max_cpi+1, 1)) +
scale_y_continuous(limits = c(min_hdi-0.1, max_hdi+0.1),
breaks = seq(min_hdi-0.1, max_hdi+0.1, 0.1))
g1
Resp:
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
#head(dataset)
#str(dataset)
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
min_cpi <- min(dataset$CPI)
max_cpi <- max(dataset$CPI)
min_hdi <- min(dataset$HDI)
max_hdi <- max(dataset$HDI)
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=CPI, y=HDI, color=Region)) +
scale_x_continuous(limits = c(min_cpi-1, max_cpi+1),
breaks = seq(min_cpi-1, max_cpi+1, 1)) +
scale_y_continuous(limits = c(min_hdi-0.1, max_hdi+0.1),
breaks = seq(min_hdi-0.1, max_hdi+0.1, 0.1))
g1
Resp:
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
#head(dataset)
#str(dataset)
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
min_cpi <- min(dataset$CPI)
max_cpi <- max(dataset$CPI)
min_hdi <- min(dataset$HDI)
max_hdi <- max(dataset$HDI)
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=CPI, y=HDI, color=Region), size=3) +
scale_x_continuous(limits = c(min_cpi-1, max_cpi+1),
breaks = seq(min_cpi-1, max_cpi+1, 1)) +
scale_y_continuous(limits = c(min_hdi-0.1, max_hdi+0.1),
breaks = seq(min_hdi-0.1, max_hdi+0.1, 0.1))
g1
Resp:
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
#head(dataset)
#str(dataset)
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
#summary(dataset$HDI)
min_cpi <- min(dataset$CPI)
max_cpi <- max(dataset$CPI)
min_hdi <- min(dataset$HDI)
max_hdi <- max(dataset$HDI)
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=CPI, y=HDI, color=Region), size=3*dataset$HDI) +
scale_x_continuous(limits = c(min_cpi-1, max_cpi+1),
breaks = seq(min_cpi-1, max_cpi+1, 1)) +
scale_y_continuous(limits = c(min_hdi-0.1, max_hdi+0.1),
breaks = seq(min_hdi-0.1, max_hdi+0.1, 0.1))
g1
Resp:
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
#head(dataset)
#str(dataset)
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
#summary(dataset$HDI)
#head(dataset)
min_cpi <- min(dataset$CPI)
max_cpi <- max(dataset$CPI)
min_hdi <- min(dataset$HDI)
max_hdi <- max(dataset$HDI)
g1 <- ggplot(data = dataset) +
geom_point(mapping = aes(x=CPI, y=HDI, color=Region), size=3*dataset$HDI) +
scale_x_continuous(limits = c(min_cpi-1, max_cpi+1),
breaks = seq(min_cpi-1, max_cpi+1, 1)) +
scale_y_continuous(limits = c(min_hdi-0.1, max_hdi+0.1),
breaks = seq(min_hdi-0.1, max_hdi+0.1, 0.1)) +
labs(title = 'Corrupção x Desenvolvimento Humano',
y = 'HDI (índice de desenvolvimento humano)',
x = 'CPI (índice de percepção da corrupção)') +
theme(plot.title = element_text(hjust = 0.5))
g1
fonte: The Economist
Resp:
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)
dataset <- read_excel("homework2.xlsx")
head(dataset)
## # A tibble: 6 × 5
## Country HDI_Rank HDI CPI Region
## <chr> <dbl> <chr> <chr> <chr>
## 1 Afghanistan 172 0.398 1.5 Asia Pacific
## 2 Albania 70 0.739 3.1 East EU Cemt Asia
## 3 Algeria 96 0.698 2.9 MENA
## 4 Angola 148 0.486 2 SSA
## 5 Argentina 45 0.797 3 Americas
## 6 Armenia 86 0.716 2.6 East EU Cemt Asia
tail(dataset)
## # A tibble: 6 × 5
## Country HDI_Rank HDI CPI Region
## <chr> <dbl> <chr> <chr> <chr>
## 1 Uzbekistan 115 0.641 1.6 East EU Cemt Asia
## 2 Vanuatu 125 0.617 3.5 Asia Pacific
## 3 Venezuela 73 0.735 1.9 Americas
## 4 Yemen 154 0.462 2.1 MENA
## 5 Zambia 164 0.43 3.2 SSA
## 6 Zimbabwe 173 0.376 2.2 SSA
str(dataset)
## tibble [173 × 5] (S3: tbl_df/tbl/data.frame)
## $ Country : chr [1:173] "Afghanistan" "Albania" "Algeria" "Angola" ...
## $ HDI_Rank: num [1:173] 172 70 96 148 45 86 2 19 91 53 ...
## $ HDI : chr [1:173] "0.398" "0.739" "0.698" "0.486" ...
## $ CPI : chr [1:173] "1.5" "3.1" "2.9" "2" ...
## $ Region : chr [1:173] "Asia Pacific" "East EU Cemt Asia" "MENA" "SSA" ...
dataset$CPI <- as.numeric(dataset$CPI)
dataset$HDI <- as.numeric(dataset$HDI)
require("ggrepel")
## Carregando pacotes exigidos: ggrepel
#summary(dataset$HDI)
#head(dataset)
#titulo <- expression(paste("No. of ", bold("bacteria X"), " isolates with corresponding types"))
summary(dataset$CPI)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.500 2.500 3.200 4.052 5.100 9.500
#?geom_point
g <- ggplot(mapping = aes(x=CPI, y=HDI), data = dataset) +
geom_point(aes(colour=factor(Region)),
shape=21, stroke=3, size=3, fill = NA) +
#geom_text_repel(data=subset(dataset, dataset$CPI < quantile(dataset$CPI, 0.5)),
# label=factor(dataset$Country),
# hjust=1, vjust=1) +
geom_text_repel(data=dataset %>%
filter(dataset$CPI > 1 | dataset$CPI < 10) %>%
sample_n(18),
aes(label=Country))+
#label=factor(dataset$Country),
#hjust=1, vjust=1) +
scale_x_continuous(limits = c(1, 10.1),
breaks = seq(1, 10.1, 1)) +
scale_y_continuous(limits = c(0.1, 1),
breaks = seq(0.2, 1, 0.1)) +
geom_smooth(method = lm,
formula = y ~ splines::bs(x, 3),
se = FALSE, color="red", size = 2) +
labs(title = expression(paste(bold('Corruption and human development'))),
y = expression(paste(italic('Human Development Index, 2011 (1=best)'))),
x = expression(paste(italic('Corruption Perception Index, 2011 (10=least corrupt)'))),
caption = "Sources: Transparency International; UN Human Development Report",
color = ""
) +
scale_color_manual(name="",
labels= c("Americas","Asia &\nOceania","Central &\nEastern Europe",
"OECD", "Middle East &\nNorth Africa","Sub-Saharan\n Africa"),
values=c("blue","cyan","green",
"darkgreen","red","brown")) +
theme_classic() +
guides( col = guide_legend(nrow = 1))+
theme(axis.title=element_text(size=8, face="italic"),
plot.caption = element_text(hjust = 0.0, size=8),
#axis.line=element_blank(),
axis.line.y = element_blank(),
axis.line.x = element_line(lineend="round"),
#axis.text.x=element_blank(), axis.text.y=element_blank(),
#axis.ticks=element_blank(),
axis.ticks.length=unit(0.2, "lines"),
axis.ticks.y = element_line(colour= "gray", size=1),
#axis.title.x=element_blank(),
#axis.title.y=element_blank(),
legend.background=element_rect(fill="white", colour=NA),
#legend.key=element_rect(colour="white"),
#legend.key.size=unit(1.2, "lines"),
legend.position='top',
#legend.text=element_text(size=rel(0.8)),
legend.justification='left',
legend.direction='horizontal',
legend.title=element_text(size=rel(0.8), face="bold", hjust=0), panel.background=element_blank(),
panel.border=element_blank(),
#panel.grid.major.x=element_blank(),
#panel.grid.minor.x=element_blank(),
panel.grid.minor = element_blank(),
panel.grid.major.y = element_line(colour= "gray",size=1),
#plot.background=element_blank(),
plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"), plot.title=element_text(size=rel(1.2)),
strip.background=element_rect(fill="grey90", colour="grey50"),
strip.text.y=element_text(size=rel(0.8), angle=-90))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
g