library(ggplot2)
library(readxl)

library(dplyr)
library(GGally)

library(gapminder)
library(gganimate)
library(gifski)

1)

a) Compute a matriz de correlação entre as medidas. O que você nota?

d) Produza gráficos de dispersão entre as variáveis através da função ggpairs disponível no pacote GGally.

c) Faça Q-Q Plot para verificar a normalidade das medidas de rigidez.

d) Faça mais 3 representações gráficas para esses dados.

2)

Faça o exercício 1.27 do livro Applied Multivariate Statistical Analysis.

# a)
acres = c(47.4, 35.8, 32.9, 1508.5, 1217.4,
          310.0, 521.8, 5.6, 922.7, 235.6,
          265.8, 199.0, 2219.8, 761.3, 146.6)
visitors = c(2.05, 1.02, 2.53, 1.23, 4.40,
             2.46, 9.19, 1.34, 3.14, 1.17,
             2.80, 1.09, 2.84, 3.30, 2.59)
df = data.frame(acres, visitors)
plot(df)

cor(df$acres, df$visitors, method = 'pearson')
## [1] 0.1725274
'b)Claramente a obs. em que visitors está acima de 8 constitui um outlier'
## [1] "b)Claramente a obs. em que visitors está acima de 8 constitui um outlier"
df2 = df[-7, ]
cor(df2$acres, df2$visitors, method = 'pearson')
## [1] 0.3907829
'Esse outlier influenciou de forma importante o coeficiente de correlação, que antes era de 0.17 e depois de sua retirada passou a ser 0.39.'
## [1] "Esse outlier influenciou de forma importante o coeficiente de correlação, que antes era de 0.17 e depois de sua retirada passou a ser 0.39."
'c)Não, pois a escala mudaria mas os pontos continuariam posicionados da mesma forma, mantendo a mesma correlação.'
## [1] "c)Não, pois a escala mudaria mas os pontos continuariam posicionados da mesma forma, mantendo a mesma correlação."

3)

c) Faça os exercícios 1.17, 1.18 e 1.19 do livro Applied Multivariate Statistical Analysis.

dados <- read_excel("dados multivariada.xlsx")
dados = dados[-1, ]
dados = dados[, -1]

dados = as.data.frame(apply(dados, 2, as.numeric))

# 1.17)

summary(dados)
##       100m            200m            400m            800m      
##  Min.   :10.49   Min.   :21.34   Min.   :47.60   Min.   :1.890  
##  1st Qu.:11.12   1st Qu.:22.57   1st Qu.:49.97   1st Qu.:1.970  
##  Median :11.32   Median :22.98   Median :51.65   Median :2.005  
##  Mean   :11.36   Mean   :23.12   Mean   :51.99   Mean   :2.022  
##  3rd Qu.:11.57   3rd Qu.:23.61   3rd Qu.:53.12   3rd Qu.:2.070  
##  Max.   :12.52   Max.   :25.91   Max.   :61.65   Max.   :2.290  
##      1500m           3000m           Marathon    
##  Min.   :3.840   Min.   : 8.100   Min.   :135.2  
##  1st Qu.:4.003   1st Qu.: 8.543   1st Qu.:143.5  
##  Median :4.100   Median : 8.845   Median :148.4  
##  Mean   :4.189   Mean   : 9.081   Mean   :153.6  
##  3rd Qu.:4.338   3rd Qu.: 9.325   3rd Qu.:157.7  
##  Max.   :5.420   Max.   :13.120   Max.   :221.1
dp = apply(dados, 2, sd)
dp
##        100m        200m        400m        800m       1500m       3000m 
##  0.39410116  0.92902547  2.59720188  0.08687304  0.27236502  0.81532689 
##    Marathon 
## 16.43989508
cor(dados)
##               100m      200m      400m      800m     1500m     3000m  Marathon
## 100m     1.0000000 0.9410886 0.8707802 0.8091758 0.7815510 0.7278784 0.6689597
## 200m     0.9410886 1.0000000 0.9088096 0.8198258 0.8013282 0.7318546 0.6799537
## 400m     0.8707802 0.9088096 1.0000000 0.8057904 0.7197996 0.6737991 0.6769384
## 800m     0.8091758 0.8198258 0.8057904 1.0000000 0.9050509 0.8665732 0.8539900
## 1500m    0.7815510 0.8013282 0.7197996 0.9050509 1.0000000 0.9733801 0.7905565
## 3000m    0.7278784 0.7318546 0.6737991 0.8665732 0.9733801 1.0000000 0.7987302
## Marathon 0.6689597 0.6799537 0.6769384 0.8539900 0.7905565 0.7987302 1.0000000
# 1.18)


dados <- dados %>%
  mutate(`100m` = 100 / `100m`,
         `200m` = 200 / `200m`,
         `400m` = 400 / `400m`,
         `800m` = 800 / (`800m` * 60),
         `1500m` = 1500 / (`1500m` * 60),
         `3000m` = 3000 / (`3000m` * 60),
         `Marathon` = 42195 / (`Marathon`*60))

summary(dados)
##       100m            200m            400m            800m      
##  Min.   :7.987   Min.   :7.719   Min.   :6.488   Min.   :5.822  
##  1st Qu.:8.645   1st Qu.:8.471   1st Qu.:7.530   1st Qu.:6.441  
##  Median :8.830   Median :8.703   Median :7.745   Median :6.650  
##  Mean   :8.815   Mean   :8.664   Mean   :7.712   Mean   :6.604  
##  3rd Qu.:8.991   3rd Qu.:8.861   3rd Qu.:8.005   3rd Qu.:6.768  
##  Max.   :9.533   Max.   :9.372   Max.   :8.403   Max.   :7.055  
##      1500m           3000m          Marathon    
##  Min.   :4.613   Min.   :3.811   Min.   :3.180  
##  1st Qu.:5.764   1st Qu.:5.362   1st Qu.:4.461  
##  Median :6.098   Median :5.653   Median :4.738  
##  Mean   :5.990   Mean   :5.543   Mean   :4.620  
##  3rd Qu.:6.246   3rd Qu.:5.853   3rd Qu.:4.901  
##  Max.   :6.510   Max.   :6.173   Max.   :5.200
dp = apply(dados, 2, sd)
dp
##      100m      200m      400m      800m     1500m     3000m  Marathon 
## 0.3008958 0.3386317 0.3711992 0.2711510 0.3519098 0.4202194 0.4083064
cor(dados)
##               100m      200m      400m      800m     1500m     3000m  Marathon
## 100m     1.0000000 0.9383028 0.8655248 0.7974687 0.7764777 0.7287297 0.6601124
## 200m     0.9383028 1.0000000 0.9058875 0.8159945 0.8057456 0.7409469 0.6748635
## 400m     0.8655248 0.9058875 1.0000000 0.8041737 0.7306437 0.6944025 0.6722005
## 800m     0.7974687 0.8159945 0.8041737 1.0000000 0.9060324 0.8754795 0.8518052
## 1500m    0.7764777 0.8057456 0.7306437 0.9060324 1.0000000 0.9718385 0.8244153
## 3000m    0.7287297 0.7409469 0.6944025 0.8754795 0.9718385 1.0000000 0.8541900
## Marathon 0.6601124 0.6748635 0.6722005 0.8518052 0.8244153 0.8541900 1.0000000
# 1.19)
ggpairs(dados, corMethod = "pearson")

boxplot(dados)

4)

A partir da fórmula da distribuição normal multivariada, encontre a equação da distribuição normal bivariada.

5)

Seja o vetor \(X= (X_1, X_2) \sim N_2(\mu, \Sigma)\), qual a distribuição de \((X_1/X_2)\)? Qual a média e qual a variância desse distribuição.

6)

c) Faça 5 representações gráficas desses dados.

d) Queremos modelar algumas variáveis conjuntamente, utilizando uma distribuição normal multivariada. Quais das variáveis poderiam ser modeladas utilizando essa distribuição? Justifique a sua resposta.

d)As variáveis de que se espera que sejam normais, a princípio, são a expectativa de vida e o PIB per capita. Essas duas variáveis podem estar ligadas diretamente, supondo que um PIB per capita maior leva à uma expectativa de vida maior.

caminho = "C:/Users/GUILHERME/Documents/pacotes estat - R"
gapminder = gapminder

# c)
#grafico de barras
grouped_data <- gapminder %>%
  group_by(continent) %>%
  summarise(mean_gdpPercap = mean(gdpPercap))

ggplot(grouped_data, aes(x = continent, y = mean_gdpPercap)) +
  geom_bar(stat = "identity") +
  labs(title = "Média do PIB per capita por continente",
       x = "Continente",
       y = "Média do PIB per capita") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

#gráfico de dispersão
ggplot(gapminder, aes(x = lifeExp, y = gdpPercap, color = continent)) +
  geom_point() +
  labs(title = "Relação entre PIB per capita e Expectativa de vida",
       x = "Expectativa de vida",
       y = "PIB per capita",
       color = "Continente") +   
  scale_color_manual(values = c("red", "blue", "green", "purple", "orange"))

#gráfico animado
plot = ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7, show.legend = FALSE) +
  scale_colour_manual(values = country_colors) +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  facet_wrap(~continent) +
  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
  transition_time(year) +
  ease_aes('linear')


animate(plot, renderer = gifski_renderer())

arquivos_png <- list.files(caminho, pattern = "*.png", full.names = TRUE)
file.remove(arquivos_png)
## logical(0)