Esse documento possui a resolução da 2ª Verificação de Aprendizagem (VA) da disciplina Computação para Análise de Dados (CPAD) ministrada pelo professor Ermeson Andrade, no semestre 2020.1 na Universidade Federal Rural de Pernambuco.
Os pacotes a seguir são necessários para a execução do código que você verá nesse projeto. Sem eles, o código aqui demonstrado não será executado com sucesso.
| Pacotes | Utilização |
|---|---|
| library(knitr) | para geração de tabelas |
| library(tidyr) | para formatação dos DataFrames |
| library(ggplot2) | para plotagem de gráficos |
| library(wordcloud) | para plotagem de nuvem de palavras |
| library(twitteR) | para utilizar a API do Twitter |
| library(tm) | para fazer limpeza de texto |
| library(syuzhet) | para fazer analise de sentimento |
| library(readr) | para leitura de arquivo csv |
Visualize o dataset VADeaths (já incluído no R) e crie um gráfico de barras empilhadas desses dados, de modo que as barras estejam agrupadas (lado a lado) para cada categoria. Também defina uma cor diferente para cada grupo das categorias. Por fim, adicione título, legenda e nomes nos eixos.
| Rural Male | Rural Female | Urban Male | Urban Female | |
|---|---|---|---|---|
| 50-54 | 11.7 | 8.7 | 15.4 | 8.4 |
| 55-59 | 18.1 | 11.7 | 24.3 | 13.6 |
| 60-64 | 26.9 | 20.3 | 37.0 | 19.3 |
| 65-69 | 41.0 | 30.9 | 54.6 | 35.1 |
| 70-74 | 66.0 | 54.3 | 71.1 | 50.0 |
# Criação da coluna faixa_etaria
VADeaths.new <- cbind(faixa_etaria = rownames(VADeaths), VADeaths)
# Conversão das colunas para o tipo numerico
VADeaths.new <- data.frame(FaixaEtaria = as.character(VADeaths.new[, "faixa_etaria"]),
RuralMale = as.numeric(VADeaths.new[, "Rural Male"]),
RuralFemale = as.numeric(VADeaths.new[, "Rural Female"]),
UrbanMale = as.numeric(VADeaths.new[, "Urban Male"]),
UrbanFemale = as.numeric(VADeaths.new[, "Urban Female"]))
# Agrupamento das colunas em duas novas colunas
VADeaths.new <- VADeaths.new %>%
gather(key = "categorias", value = "value", -FaixaEtaria)
kable(VADeaths.new) %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive", "condensed"),
position = "center") %>%
scroll_box(height = "300px")| FaixaEtaria | categorias | value |
|---|---|---|
| 50-54 | RuralMale | 11.7 |
| 55-59 | RuralMale | 18.1 |
| 60-64 | RuralMale | 26.9 |
| 65-69 | RuralMale | 41.0 |
| 70-74 | RuralMale | 66.0 |
| 50-54 | RuralFemale | 8.7 |
| 55-59 | RuralFemale | 11.7 |
| 60-64 | RuralFemale | 20.3 |
| 65-69 | RuralFemale | 30.9 |
| 70-74 | RuralFemale | 54.3 |
| 50-54 | UrbanMale | 15.4 |
| 55-59 | UrbanMale | 24.3 |
| 60-64 | UrbanMale | 37.0 |
| 65-69 | UrbanMale | 54.6 |
| 70-74 | UrbanMale | 71.1 |
| 50-54 | UrbanFemale | 8.4 |
| 55-59 | UrbanFemale | 13.6 |
| 60-64 | UrbanFemale | 19.3 |
| 65-69 | UrbanFemale | 35.1 |
| 70-74 | UrbanFemale | 50.0 |
ggplot(data=VADeaths.new, aes(x=categorias, y=value, fill=FaixaEtaria)) +
geom_bar(stat="identity", color="black")+
labs(x="População",
y="Quantidade",
title="Distribuição de população:",
subtitle="Rural e Urbana, distribuida pela faixa etaria.") +
theme_minimal()Uma doença pode ser classificada em três estágios (leve, moderado e severo). Foram examinados 20 pacientes e obtidos os dados: moderado, leve, leve, severo, leve, moderado, moderado, moderado, leve, leve, severo,leve, moderado, moderado, leve, severo, moderado, moderado, moderado,leve. Com base nestes dados crie um gráfico de piza. Inclua a porcentagem de cada fatia, as cores das fatias e o nome do gráfico. Adicionalmente, use o comando legend() para incluir a legenda do gráfico.
doenca <- data.frame(estagio = c("moderado", "leve", "leve", "severo", "leve", "moderado",
"moderado", "moderado", "leve", "leve", "severo", "leve",
"moderado", "moderado", "leve", "severo", "moderado",
"moderado", "moderado", "leve"))
kable(doenca) %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive", "condensed"),
position = "center") %>%
scroll_box(height = "300px")| estagio |
|---|
| moderado |
| leve |
| leve |
| severo |
| leve |
| moderado |
| moderado |
| moderado |
| leve |
| leve |
| severo |
| leve |
| moderado |
| moderado |
| leve |
| severo |
| moderado |
| moderado |
| moderado |
| leve |
doenca <- data.frame(table(doenca$estagio))
colnames(doenca)[1] <- "Estagio"
colnames(doenca)[2] <- "Quantidade"
kable(doenca) %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive", "condensed"),
position = "center")| Estagio | Quantidade |
|---|---|
| leve | 8 |
| moderado | 9 |
| severo | 3 |
##
## Attaching package: 'scales'
## The following object is masked from 'package:readr':
##
## col_factor
## The following object is masked from 'package:syuzhet':
##
## rescale
ggplot(doenca, aes(x="", y=Quantidade, fill=Estagio))+
geom_bar(stat="identity", width=1) +
coord_polar("y", start=0) +
scale_fill_brewer(palette="Dark2") +
theme_minimal() +
theme(axis.text.x=element_blank(),
axis.title.x =element_blank(),
axis.text.y =element_blank(),
axis.title.y =element_blank()) +
geom_text(aes(y = Quantidade/3 + c(0, cumsum(Quantidade)[-length(Quantidade)]),
label = percent(Quantidade/100)), size=5)Crie uma nuvem de palavra a partir dos twitters sobre a hashtag “#racismo”. Também faça uma análise de sentimentos com relação a esses twitters coletados.
tweets <- searchTwitter("#racismo", n=400, lang = "pt")
tweets <- twListToDF(tweets)
head(tweets$text)## [1] "@tinderbrasil Ser contra racismo? Legal! Espalhar uma ideologia que se diz ser #antiracista mas no fundo é das mais… https://t.co/SjvTXIO5yi"
## [2] "Interessante que ninguém de esquerda tenha defendido a derrubada de estátuas de Darwin. Seria uma relutância a um s… https://t.co/c24XYn6Zsg"
## [3] "https://t.co/I4O4Bmh6mW \n\nInfelizmente o tema #racismo vai ser sempre intemporal.\n\n#Portugal, #SOSRacismo, #racism… https://t.co/WmBJiDggb4"
## [4] "RT @Julio_Vaisman: @MarvelBR Olha,\n\nO que eu sei é que se #Avatar fosse um filme protagonizado pela cor que de fato era pra ter sido canoni…"
## [5] "@MarvelBR Olha,\n\nO que eu sei é que se #Avatar fosse um filme protagonizado pela cor que de fato era pra ter sido c… https://t.co/hA4wjnASNz"
## [6] "RT @um_podcast: RT @asmathildas: Esse é um trecho do TCC da nossa convidada da próx. quarta, a @carolmlles ! Conversamos um pouco sobre com…"
tweets_t <- paste(tweets$text, collapse = " ")
tweets_v <- VectorSource(tweets_t)
corpus <- Corpus(tweets_v)
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords, stopwords('portuguese'))
removeURL <- function(x) gsub("http[^[:space:]]*", "", x)
corpus <- tm_map(corpus, removeURL)
removeNumPunct <- function(x) gsub("[^[:alpha:][:space:]]*", "", x)
corpus <- tm_map(corpus, content_transformer(removeNumPunct))Usando o conjunto de dados “flu” que é altamente não normal, que contém as frequências das idades das mortes durante a epidemia de gripe espanhola na Suíça em 1918. Considere a idade das mortes como a população. Execute os passos a seguir. (1) Mostre o histograma e a curva de densidade do conjunto de dados “flu”. (2) Crie 200 médias de amostras da população com tamanho n = 35. (3) Mostre o histograma com a curva de densidade para a médias das amostras.
## Parsed with column specification:
## cols(
## age = col_double()
## )
kable(flu[1:100,]) %>%
kable_styling(bootstrap_options = c("striped", "hover", "responsive", "condensed"),
position = "center") %>%
scroll_box(height = "300px")| age |
|---|
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
n <- 200
TamMedia <- 35
xbar <- rep(NA, n)
for (i in 1:n){
amostra <- sample(flu$age, size = TamMedia)
xbar[i] <- mean(amostra)
}
xbar## [1] 40.45714 41.00000 48.00000 37.71429 36.65714 45.31429 46.28571 38.14286
## [9] 41.20000 46.51429 40.62857 42.88571 42.62857 42.45714 36.17143 44.48571
## [17] 39.08571 45.80000 44.91429 45.45714 40.37143 42.08571 42.88571 42.05714
## [25] 41.97143 51.02857 38.31429 55.37143 46.08571 43.42857 38.65714 40.82857
## [33] 48.97143 44.08571 44.91429 41.68571 35.68571 37.45714 48.45714 36.65714
## [41] 42.05714 43.45714 41.97143 41.65714 42.42857 44.45714 36.40000 38.48571
## [49] 46.77143 44.40000 44.80000 48.48571 45.02857 50.20000 42.22857 44.17143
## [57] 41.31429 40.68571 47.14286 46.85714 45.71429 45.17143 41.37143 46.88571
## [65] 36.82857 38.68571 37.48571 39.97143 48.85714 34.51429 39.00000 39.22857
## [73] 48.05714 48.20000 37.57143 50.17143 48.60000 50.40000 49.37143 48.25714
## [81] 38.94286 47.74286 60.88571 45.91429 47.02857 46.17143 48.28571 41.37143
## [89] 38.51429 39.45714 44.25714 45.40000 40.48571 41.42857 37.85714 42.08571
## [97] 41.37143 39.65714 46.00000 43.88571 40.85714 42.68571 48.08571 42.42857
## [105] 50.88571 49.00000 47.08571 36.85714 47.68571 50.60000 40.94286 44.54286
## [113] 39.25714 36.91429 42.00000 37.40000 32.20000 42.28571 47.68571 40.11429
## [121] 41.08571 45.74286 46.20000 45.34286 41.02857 41.48571 44.42857 38.57143
## [129] 54.31429 43.94286 45.65714 43.20000 43.51429 43.65714 45.31429 44.20000
## [137] 45.80000 43.71429 41.45714 38.08571 33.40000 44.91429 43.88571 44.00000
## [145] 40.05714 44.14286 43.51429 44.11429 37.37143 53.25714 43.71429 47.05714
## [153] 44.14286 34.62857 42.51429 43.42857 40.25714 43.82857 46.97143 46.31429
## [161] 41.77143 44.51429 46.05714 44.65714 44.68571 36.11429 38.05714 43.25714
## [169] 43.65714 39.02857 45.80000 41.57143 42.82857 41.45714 33.02857 50.45714
## [177] 44.08571 48.77143 45.62857 36.00000 50.42857 45.14286 49.94286 39.68571
## [185] 46.11429 30.85714 42.80000 47.54286 42.02857 43.40000 43.68571 40.45714
## [193] 41.02857 40.02857 39.71429 48.88571 40.00000 46.45714 53.31429 46.45714