2Va CPAD UFRPE

importar Blibliotecas necessarias

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)

VADeaths

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”.

Importar dataset

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)

Passar dadops para formato longo para usar no ggplot

df_long <- df %>%
  mutate(Group = rownames(df)) %>%
  pivot_longer(cols = -Group,
               names_to = "Categoria",
               values_to = "Valor")

Gerar grafico

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()

Classificação Doença

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.

Lista dos estagios da doença

estagios <- c(
  "moderado", "leve", "leve", "severo", "leve",
  "moderado", "moderado", "moderado", "leve", "leve",
  "severo", "leve", "moderado", "moderado", "leve",
  "severo", "moderado", "moderado", "moderado", "leve"
)

Freqeuncia, porcentagem e rotulos

freq <- table(estagios)

pct <- round(freq / sum(freq) * 100, 1)

labels <- paste(names(freq), "-", pct, "%")

Grafico de pizza

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")

Teorema

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

importar dataSet

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>

Ver distribuição inicial do dataset

## 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)

Verificar nova distribuição

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()

Questões com calculos

Peso dos gatos

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

Alimentação dos alunos

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%"

bdims

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).

Importar dataset

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

Calculos

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