library(tidyr)
library(ggplot2)
library(dplyr)
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
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. Abaixo submeta o link do RPubs com o resultado dessa questão. Ela deve ficar dentro de uma aba chamada de “VADeaths”.
VADeaths
## 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
df <- as.data.frame(VADeaths)
df_long <- df %>%
mutate(Group = rownames(df)) %>%
pivot_longer(cols = -Group,
names_to = "Categoria",
values_to = "Valor")
ggplot(df_long, aes(x = Categoria, y = Valor, fill = Group)) +
geom_bar(stat = "identity", position = position_dodge()) +
labs(
title = "VADeaths",
x = "Categoria",
y = "Taxa",
fill = "Grupo"
) +
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.
estagios <- c(
"moderado", "leve", "leve", "severo", "leve",
"moderado", "moderado", "moderado", "leve", "leve",
"severo", "leve", "moderado", "moderado", "leve",
"severo", "moderado", "moderado", "moderado", "leve"
)
freq <- table(estagios)
pct <- round(freq / sum(freq) * 100, 1)
labels <- paste(names(freq), "-", pct, "%")
cores <- c("lightblue", "gold", "salmon")
pie(freq,
labels = labels,
col = cores,
main = "Estágios da Doença em 20 Pacientes"
)
legend("topright",
legend = names(freq),
fill = cores,
title = "Estágios")
Nesta questão, demonstre o uso do teorema do limite central, usando o conjunto de dados “flu” que é altamente não normal. Esse dataset 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
flu <- read_csv("flu.csv")
## Rows: 75034 Columns: 1
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (1): age
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
str(flu)
## spc_tbl_ [75,034 × 1] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ age: num [1:75034] 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, "spec")=
## .. cols(
## .. age = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## 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 dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
### Criar media de 200 amostras com n=35
set.seed(123) # reprodutibilidade
N <- 200
n <- 35
medias <- numeric(N)
for (i in 1:N) {
amostra <- sample(flu$age, size = n, replace = TRUE)
medias[i] <- mean(amostra)
}
df_medias <- data.frame(media = medias)
ggplot(df_medias, aes(x = media)) +
geom_histogram(aes(y = ..density..), bins = 25, fill = "darkgreen", alpha = 0.6) +
geom_density(color = "black", size = 1.2) +
labs(
title = "Distribuição das Médias Amostrais (n = 35, 200 amostras)",
x = "Média das Idades",
y = "Densidade"
) +
theme_minimal()
Suponha que a variável escolhida num estudo seja o peso dos gatos da Ruralinda e que a população é composta de 300 gatos. Pelo um estudo prévio dos pesos, o desvio-padrão é de 0.5 kg. Admitindo-se um nível de confiança de 99% e um erro amostral de 0.1 kg, calcule o tamanho da amostra para estimar o peso médio dos gatos da Ruralinda. Use apenas duas casas decimais para submeter sua resposta (sem arredondamento).
# Dados
N <- 300 # população
sigma <- 0.5 # desvio-padrão
E <- 0.1 # erro amostral
Z <- 2.576 # 99% de confiança
# Cálculo do tamanho da amostra para população finita
n <- (Z^2 * sigma^2 * N) / (E^2 * (N - 1) + Z^2 * sigma^2)
n_trunc <- floor(n * 100) / 100
n_trunc
## [1] 107.05
No RU da Ruralinda, os alunos comem, em média, 400 gramas, com desvio padrão de 45 gramas. Pressupondo distribuição normal, qual proporção de alunos comem acima de 500 gramas ? Submeta a resposta em porcentagem com duas casas decimais. Também coloquem o símbolo de porcentagem. Por exemplo: 0.9452899 -> 94.52%.
media <- 400
dp <- 45
x <- 500
# Proporção acima de 500 g
p <- 1 - pnorm(x, mean = media, sd = dp)
# Formatar em porcentagem com duas casas decimais
p
## [1] 0.01313415
resultado <- sprintf("%.2f%%", p * 100)
resultado
## [1] "1.31%"
Para esta questão, usaremos o conjunto de dados “bdims”. Este conjunto de dados contém medidas de 247 homens e 260 mulheres, a maioria dos quais foram considerados adultos jovens saudáveis. Determine o intervalo de confiança de 98.5% da média de alturas (hgt) das mulheres (sex == 0).
load("bdims.RData")
str(bdims)
## 'data.frame': 507 obs. of 25 variables:
## $ bia.di: num 42.9 43.7 40.1 44.3 42.5 43.3 43.5 44.4 43.5 42 ...
## $ bii.di: num 26 28.5 28.2 29.9 29.9 27 30 29.8 26.5 28 ...
## $ bit.di: num 31.5 33.5 33.3 34 34 31.5 34 33.2 32.1 34 ...
## $ che.de: num 17.7 16.9 20.9 18.4 21.5 19.6 21.9 21.8 15.5 22.5 ...
## $ che.di: num 28 30.8 31.7 28.2 29.4 31.3 31.7 28.8 27.5 28 ...
## $ elb.di: num 13.1 14 13.9 13.9 15.2 14 16.1 15.1 14.1 15.6 ...
## $ wri.di: num 10.4 11.8 10.9 11.2 11.6 11.5 12.5 11.9 11.2 12 ...
## $ kne.di: num 18.8 20.6 19.7 20.9 20.7 18.8 20.8 21 18.9 21.1 ...
## $ ank.di: num 14.1 15.1 14.1 15 14.9 13.9 15.6 14.6 13.2 15 ...
## $ sho.gi: num 106 110 115 104 108 ...
## $ che.gi: num 89.5 97 97.5 97 97.5 ...
## $ wai.gi: num 71.5 79 83.2 77.8 80 82.5 82 76.8 68.5 77.5 ...
## $ nav.gi: num 74.5 86.5 82.9 78.8 82.5 80.1 84 80.5 69 81.5 ...
## $ hip.gi: num 93.5 94.8 95 94 98.5 95.3 101 98 89.5 99.8 ...
## $ thi.gi: num 51.5 51.5 57.3 53 55.4 57.5 60.9 56 50 59.8 ...
## $ bic.gi: num 32.5 34.4 33.4 31 32 33 42.4 34.1 33 36.5 ...
## $ for.gi: num 26 28 28.8 26.2 28.4 28 32.3 28 26 29.2 ...
## $ kne.gi: num 34.5 36.5 37 37 37.7 36.6 40.1 39.2 35.5 38.3 ...
## $ cal.gi: num 36.5 37.5 37.3 34.8 38.6 36.1 40.3 36.7 35 38.6 ...
## $ ank.gi: num 23.5 24.5 21.9 23 24.4 23.5 23.6 22.5 22 22.2 ...
## $ wri.gi: num 16.5 17 16.9 16.6 18 16.9 18.8 18 16.5 16.9 ...
## $ age : int 21 23 28 23 22 21 26 27 23 21 ...
## $ wgt : num 65.6 71.8 80.7 72.6 78.8 74.8 86.4 78.4 62 81.6 ...
## $ hgt : num 174 175 194 186 187 ...
## $ sex : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
###Pegar altura das mulheres
conf <- 0.985 # Nivel de confiança
# Estatísticas
n <- length(hgt_mulheres)
media <- mean(hgt_mulheres)
dp <- sd(hgt_mulheres)
# t crítico
alpha <- 1 - conf
t_crit <- qt(1 - alpha/2, df = n - 1)
# Margem de erro
erro <- t_crit * dp / sqrt(n)
# Intervalo
IC_inferior <- media - erro
IC_superior <- media + erro
IC_inferior
## [1] 163.8784
IC_superior
## [1] 165.8662