“Aulas de R - Bioestatística 2023.2”

Author

Letícia Raposo

Aula 1

Na aula do dia 25/08/2023, vimos como carregar um pacote, ler um banco de dados e excluir colunas.

OBS: um asterisco antes e depois torna o texto em itálico. Dois asteriscos antes e depois torna o terno em negrito.

# Lendo o pacote 
library(titanic)

# Atribuindo titanic_train para o objeto dados
dados <- titanic_train

# Excluindo colunas
dados$PassengerId <- NULL
dados$Name <- NULL
dados$Ticket <- NULL
dados$Cabin <- NULL

Aula 2

Para começar, vamos ler um banco de dados externo:

library(readxl)
dados_titanic <- read_excel("dados_titanic.xlsx")

Vamos excluir o nome dos passageiros:

dados_titanic$Nome <- NULL

Vamos agora corrigir algumas variáveis:

# Vendo a estrutura dos dados
str(dados_titanic)
tibble [891 × 8] (S3: tbl_df/tbl/data.frame)
 $ Sobreviveu       : num [1:891] 0 1 1 1 0 0 0 0 1 1 ...
 $ Classe           : num [1:891] 3 1 3 1 3 3 1 3 3 2 ...
 $ Sexo             : chr [1:891] "male" "female" "female" "female" ...
 $ Idade            : num [1:891] 22 38 26 35 35 NA 54 2 27 14 ...
 $ N_irmaos_conjuges: num [1:891] 1 1 0 1 0 0 0 3 0 1 ...
 $ N_pais_filhos    : num [1:891] 0 0 0 0 0 0 0 1 2 0 ...
 $ Tarifa           : num [1:891] 7.25 71.28 7.92 53.1 8.05 ...
 $ Porto            : chr [1:891] "S" "C" "S" "S" ...
# Transformando para fator
dados_titanic$Sobreviveu <- as.factor(dados_titanic$Sobreviveu)
dados_titanic$Classe <- as.factor(dados_titanic$Classe)
dados_titanic$Sexo <- as.factor(dados_titanic$Sexo)
dados_titanic$Porto <- as.factor(dados_titanic$Porto)

# Verificando se mudou
str(dados_titanic)
tibble [891 × 8] (S3: tbl_df/tbl/data.frame)
 $ Sobreviveu       : Factor w/ 2 levels "0","1": 1 2 2 2 1 1 1 1 2 2 ...
 $ Classe           : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ...
 $ Sexo             : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
 $ Idade            : num [1:891] 22 38 26 35 35 NA 54 2 27 14 ...
 $ N_irmaos_conjuges: num [1:891] 1 1 0 1 0 0 0 3 0 1 ...
 $ N_pais_filhos    : num [1:891] 0 0 0 0 0 0 0 1 2 0 ...
 $ Tarifa           : num [1:891] 7.25 71.28 7.92 53.1 8.05 ...
 $ Porto            : Factor w/ 3 levels "C","Q","S": 3 1 3 3 3 2 3 3 3 1 ...

Vamos mudar agora os nomes das categorias das variáveis qualitativas:

levels(dados_titanic$Sobreviveu)
[1] "0" "1"
levels(dados_titanic$Sobreviveu) <- c("Não", "Sim")

levels(dados_titanic$Classe)
[1] "1" "2" "3"
levels(dados_titanic$Classe) <- c("Primeira", "Segunda", "Terceira")

levels(dados_titanic$Sexo)
[1] "female" "male"  
levels(dados_titanic$Sexo) <- c("Feminino", "Masculino")

Vamos mudar agora o nome de uma variável:

colnames(dados_titanic)
[1] "Sobreviveu"        "Classe"            "Sexo"             
[4] "Idade"             "N_irmaos_conjuges" "N_pais_filhos"    
[7] "Tarifa"            "Porto"            
colnames(dados_titanic)[8] <- "Porto_de_Embarque"

Vamos agora criar a variável faixa etária:

dados_titanic$Faixa_Etaria <- cut(dados_titanic$Idade,
                                  c(0, 18, 65, 200))
dados_titanic$Faixa_Etaria

levels(dados_titanic$Faixa_Etaria) <- c("Até 18 anos",
                                        "Maior que 18 anos e até 65 anos",
                                        "Maior que 65 anos")

Estatística Descritiva Univariada

Qualitativa

Vamos trabalhar com a variável classe econômica. Para começar, vamos construir uma tabela de distribuição de frequências.

Podemos observar que a maioria dos passageiros era da terceira classe (55,11%), com a segunda classe contendo a menor proporção de passageiros (20,65%) (Figura 1).

library(summarytools)
freq(dados_titanic$Classe)
Frequencies  
dados_titanic$Classe  
Type: Factor  

                 Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
-------------- ------ --------- -------------- --------- --------------
      Primeira    216     24.24          24.24     24.24          24.24
       Segunda    184     20.65          44.89     20.65          44.89
      Terceira    491     55.11         100.00     55.11         100.00
          <NA>      0                               0.00         100.00
         Total    891    100.00         100.00    100.00         100.00
freq(dados_titanic$Porto_de_Embarque)
Frequencies  
dados_titanic$Porto_de_Embarque  
Type: Factor  

              Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
----------- ------ --------- -------------- --------- --------------
          C    168     18.90          18.90     18.86          18.86
          Q     77      8.66          27.56      8.64          27.50
          S    644     72.44         100.00     72.28          99.78
       <NA>      2                               0.22         100.00
      Total    891    100.00         100.00    100.00         100.00

Vamos agora fazer um gráfico de barras para a variável classe econômica:

# Mudando a ordem das categorias
# dados_titanic$Classe <- factor(dados_titanic$Classe, levels = c("Terceira", "Segunda", "Primeira"))

library(ggplot2)

ggplot(dados_titanic) +
 aes(x = Classe) +
 geom_bar(fill = "slateblue3") +
 labs(x = "Classe econômica", 
 y = "Frequência", title = "Figura 1. Classe econômica dos passageiros do Titanic", caption = "Fonte: a autora") +
 theme_gray() +
 theme(plot.title = element_text(face = "bold.italic", hjust = 0.5))

Aula 3

Quantitativa

A idade média dos passageiros foi de 29,70 anos (dp = 14,53 anos), com mediana igual a 28 anos. A variável pode ser classificada como assimétrica à direita (positiva) e heterogênea (CV > 0,30).

library(summarytools)
descr(dados_titanic$Idade)
Descriptive Statistics  
dados_titanic$Idade  
N: 891  

                     Idade
----------------- --------
             Mean    29.70
          Std.Dev    14.53
              Min     0.42
               Q1    20.00
           Median    28.00
               Q3    38.00
              Max    80.00
              MAD    13.34
              IQR    17.88
               CV     0.49
         Skewness     0.39
      SE.Skewness     0.09
         Kurtosis     0.16
          N.Valid   714.00
        Pct.Valid    80.13

Vamos agora obser a distribuição da variável Idade pelos 3 gráficos aprendidos.

Histograma

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)

dados_titanic %>%
 filter(!is.na(Idade)) %>%
 ggplot() +
 aes(x = Idade) +
 geom_histogram(bins = 30L, fill = "#4682B4") +
 labs(x = "Idade (anos)", 
 y = "Frequência absoluta", title = "Figura 2. Distribuição da variável Idade.") +
 theme_gray()

Densidades

library(dplyr)
library(ggplot2)

dados_titanic %>%
 filter(!is.na(Idade)) %>%
 ggplot() +
 aes(x = Idade) +
 geom_density(fill = "#4682B4") +
 labs(x = "Idade (anos)", 
 y = "Densidade", title = "Figura 3. Distribuição da variável Idade.") +
 theme_gray()

Boxplot

library(dplyr)
library(ggplot2)

dados_titanic %>%
 filter(!is.na(Idade)) %>%
 ggplot() +
 aes(y = Idade) +
 geom_boxplot(fill = "#4682B4", width = 0.35) +
 labs(x = "", 
 y = "Idade (anos)", title = "Figura 4. Distribuição da variável Idade.") +
 theme_gray() + xlim(c(-1,1))

Estatística Descritiva Bivariada

Quali x Quali

Será que existe relação entre a classe econômica e a sobrevivência ao desastre do Titanic?

  • Variável explicativa: classe econômica
  • Variável resposta: sobrevivência

A tabela abaixo mostra que, dos passageiros da primeira classe, 37% deles não sobreviveram, sendo este percentual maior na segunda (52,7%) e terceira (75,8%) classes.

library(summarytools)
ctable(dados_titanic$Classe, dados_titanic$Sobreviveu)
Cross-Tabulation, Row Proportions  
Classe * Sobreviveu  
Data Frame: dados_titanic  

---------- ------------ ------------- ------------- --------------
             Sobreviveu           Não           Sim          Total
    Classe                                                        
  Primeira                 80 (37.0%)   136 (63.0%)   216 (100.0%)
   Segunda                 97 (52.7%)    87 (47.3%)   184 (100.0%)
  Terceira                372 (75.8%)   119 (24.2%)   491 (100.0%)
     Total                549 (61.6%)   342 (38.4%)   891 (100.0%)
---------- ------------ ------------- ------------- --------------

Gráfico de Barras Múltiplas

library(ggplot2)

ggplot(dados_titanic) +
 aes(x = Classe, fill = Sobreviveu) +
 geom_bar(position = "dodge") +
 scale_fill_brewer(palette = "Set1", 
 direction = 1) +
 labs(x = "Classe Econômica", y = "Frequência absoluta", title = "Figura 5. Relação entre classe econômica e desfecho do passageiro") +
 theme_gray()

Gráfico de Barras Empilhadas

library(ggplot2)

ggplot(dados_titanic) +
 aes(x = Classe, fill = Sobreviveu) +
 geom_bar(position = "fill") +
 scale_fill_brewer(palette = "Set1", 
 direction = 1) +
 labs(x = "Classe Econômica", y = "Frequência relativa", title = "Figura 6. Relação entre classe econômica e desfecho do passageiro") +
 theme_gray()

Quanti x Quanti

Existe correlação entre o número de filhos/pais a bordo e a idade do passageiro?

Ao analisar o coeficiente de correlação de Spearman, observamos uma correlação fraca e negativa (rho = -0,25).

library(ggplot2)

dados_titanic %>%
 filter(!is.na(Idade)) %>%
 ggplot() +
 aes(x = Idade, y = N_pais_filhos) +
 geom_point(shape = "triangle", size = 1.5, 
 colour = "#0C4C8A") +
 geom_smooth(span = 1L) +
 labs(x = "Idade (anos)", y = "Número de pais/filhos a bordo", 
 title = "Figura 7. Correlação entre número de pais/filhos e idade dos passageiros") +
 theme_gray()
`geom_smooth()` using method = 'loess' and formula = 'y ~ x'

cor(dados_titanic$Idade, dados_titanic$N_pais_filhos,
    use = "complete.obs", method = "spearman")
[1] -0.2542121

Quali x Quanti

Existe relação entre a idade do passageiro e sua sobrevivência?

A partir das estatísticas, podemos observar que ambos os grupos apresentaram medianas iguais a 28 anos (IQR = 18 anos para grupo Não e 17 anos para grupo Sim). Quanto à assimetria, ambas as distribuições foram assimétricas positivas. A idade possui distribuição heterogênea em ambos os desfechos (CV > 0,30).

library(summarytools)
with(dados_titanic, stby(Idade, Sobreviveu, descr))
Descriptive Statistics  
Idade by Sobreviveu  
Data Frame: dados_titanic  
N: 549  

                       Não      Sim
----------------- -------- --------
             Mean    30.63    28.34
          Std.Dev    14.17    14.95
              Min     1.00     0.42
               Q1    21.00    19.00
           Median    28.00    28.00
               Q3    39.00    36.00
              Max    74.00    80.00
              MAD    11.86    13.34
              IQR    18.00    17.00
               CV     0.46     0.53
         Skewness     0.58     0.18
      SE.Skewness     0.12     0.14
         Kurtosis     0.25    -0.10
          N.Valid   424.00   290.00
        Pct.Valid    77.23    84.80
library(dplyr)
library(ggplot2)

dados_titanic %>%
 filter(!is.na(Idade)) %>%
 ggplot() +
 aes(x = "", y = Idade, fill = Sobreviveu) +
 geom_boxplot() +
 scale_fill_brewer(palette = "Set1", 
 direction = 1) +
 labs(x = " ", y = "Idade (anos)", title = "Figura 8. Distribuição da idade segundo o desfecho dos passageiros") +
 theme_gray()

Aula 4

Tabela

A Tabela 1 abaixo apresenta as características dos passageiros a bordo do Titanic. Podemos observar que 62% dos passageiros não sobreviveram ao acidente. Quanto à classe econômica, a maioria pertencia a terceira classe, representando 55% dos passageiros. 65% eram do sexo masculino e a idade mediana foi de 28 anos (IQR = 20 - 38 anos). Quanto ao número de pais ou filhos a bordo, 76% dos passageiros não tinham este tipo de acompanhante.

Tabela 1. Características dos passageiros do Titanic.
Variável N = 8911
Sobrevivente
    Não 549 (62%)
    Sim 342 (38%)
Classe econômica
    Primeira 216 (24%)
    Segunda 184 (21%)
    Terceira 491 (55%)
Sexo
    Feminino 314 (35%)
    Masculino 577 (65%)
Idade 28 (20, 38)
    Sem informação 177
Número de pais/filhos
    0 678 (76%)
    1 118 (13%)
    2 80 (9.0%)
    3 5 (0.6%)
    4 4 (0.4%)
    5 5 (0.6%)
    6 1 (0.1%)
Tarifa 14 (8, 31)
1 n (%); Median (IQR)

Aula 5

Testes de Hipóteses para Dois Grupos Independentes

Vamos agora avaliar se existe diferença estatisticamente significativa entre as idades dos passageiros que sobreviveram e morreram no acidente do Titanic.

Temos dois tipos de testes de hipóteses: - Teste t (paramétrico) - Exige normalidade em ambos os grupos - Testar com teste de Shapiro-Wilk: se pelo menos um dos grupos não apresentar normalidade, usar teste de Mann-Whitney - Exige homocedasticidade - Testar com teste de Levene: se não tivermos homocedasticidade, usar teste t com Welch - Teste de Mann-Whitney (não paramétrico)

  1. Avaliando a normalidade:
  • Teste de Shapiro-Wilk: H0: os dados vêm de uma população normal H1: os dados não vêm de uma população normal
shapiro.test(dados2$Idade[dados2$Sobreviveu == "Não"])

    Shapiro-Wilk normality test

data:  dados2$Idade[dados2$Sobreviveu == "Não"]
W = 0.96894, p-value = 7.816e-08

Uma vez que o valor-p foi menor que 0,001 para a idade no grupo dos que não sobreviveram, temos que a variável não apresenta distribuição normal para este grupo, logo, teremos que utilizar o teste de Mann-Whitney.

Dessa forma, as hipóteses em estudo são:

H0: não há diferença de idade entre os que morreram e os que sobreviveram H1: há diferença de idade entre os que morreram e os que sobreviveram

Teste de Mann-Whitney

wilcox.test(Idade ~ Sobreviveu, 
            data = dados2,
            paired = F)

    Wilcoxon rank sum test with continuity correction

data:  Idade by Sobreviveu
W = 65278, p-value = 0.1605
alternative hypothesis: true location shift is not equal to 0

Uma vez que o teste de Mann-Whitney apresentou valor-p = 0,16, nossos dados sugerem que não há diferença de idade entre os que sobreviveram e os que morreram.

VAMOS SUPOR QUE AMBOS OS GRUPOS APRESENTARAM DISTRIBUIÇÃO NORMAL:

Verificando para o segundo grupo:

shapiro.test(dados2$Idade[dados2$Sobreviveu == "Sim"]) # tambem nao tem distribuicao normal, mas vamos supor que tem

    Shapiro-Wilk normality test

data:  dados2$Idade[dados2$Sobreviveu == "Sim"]
W = 0.98273, p-value = 0.001426

Sendo os dois grupos normais, precisamos avaliar a homocedasticidade.

  1. Avaliando a homocedasticidade:
  • Teste de Levene H0: os grupos são homocedásticos H1: os grupos não são homocedásticos
library(car)
Carregando pacotes exigidos: carData

Attaching package: 'car'
The following object is masked from 'package:dplyr':

    recode
leveneTest(Idade ~ Sobreviveu, data = dados2)
Levene's Test for Homogeneity of Variance (center = median)
       Df F value Pr(>F)
group   1  1.1954 0.2746
      712               

Como o valor-p do teste de Levene foi igual a 0,27, temos que os grupos são homocedástico e, portanto, faremos o teste t (nesta simulação).

Teste t

H0: não há diferença entre as médias das idades dos que morreram e sobreviveram H1: há diferença entre as médias das idades dos que morreram e sobreviveram

t.test(Idade ~ Sobreviveu, 
       data = dados2,
       var.equal = T)

    Two Sample t-test

data:  Idade by Sobreviveu
t = 2.0667, df = 712, p-value = 0.03912
alternative hypothesis: true difference in means between group Não and group Sim is not equal to 0
95 percent confidence interval:
 0.114181 4.450798
sample estimates:
mean in group Não mean in group Sim 
         30.62618          28.34369 

Aplicando o teste t, encontramos um valor-p igual a 0,04, indicando haver uma diferença estatisticamente significativa entre as médias, sendo o grupo dos que não sobreviveram aquele com maior média (igual a 30,6 anos).

Supondo que temos heterocedasticidade:

t.test(Idade ~ Sobreviveu, 
       data = dados2,
       var.equal = F)

    Welch Two Sample t-test

data:  Idade by Sobreviveu
t = 2.046, df = 598.84, p-value = 0.04119
alternative hypothesis: true difference in means between group Não and group Sim is not equal to 0
95 percent confidence interval:
 0.09158472 4.47339446
sample estimates:
mean in group Não mean in group Sim 
         30.62618          28.34369 

Testes de Hipóteses para Dois Grupos Pareados

Temos dois tipos de testes para avaliar grupos pareados: - Teste t pareado (paramétrico) - A diferença de valores precisa ser normal: avaliar com o teste de Shapiro.Wilk - Teste de Wilcoxon (não paramétrico) - Usar caso a diferença não seja normal

library(BSDA)
Carregando pacotes exigidos: lattice

Attaching package: 'BSDA'
The following objects are masked from 'package:carData':

    Vocab, Wool
The following object is masked from 'package:datasets':

    Orange
data(Blood)
  1. Calcular a diferença das medidas
Blood$dif <- Blood$machine - Blood$expert
  1. Avaliar a normalidade
shapiro.test(Blood$dif)

    Shapiro-Wilk normality test

data:  Blood$dif
W = 0.92609, p-value = 0.2383

Uma vez que o teste de Shapiro-Wilk apresentou valor-p igual a 0,24, podemos inferir que os dados seguem distribuição normal, logo, aplicaremos o teste t pareado.

Teste t pareado

H0: não há diferença entre as médias das pressões mensuradas por máquina e homem. H1: há diferença entre as médias das pressões mensuradas por máquina e homem.

t.test(Blood$machine, 
       Blood$expert, 
       paired = T)

    Paired t-test

data:  Blood$machine and Blood$expert
t = 0.68162, df = 14, p-value = 0.5066
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
 -2.146615  4.146615
sample estimates:
mean difference 
              1 

A partir do teste t pareado, podemos inferir que não há diferença estatisticamente significativa entre as médias das pressões mensuradas pela máquina e pelo homem (valor-p = 0,51).

VAMOS SUPOR QUE A DIFERENÇA NÃO APRESENTA DISTRIBUIÇÃO NORMAL:

Teste de Wilcoxon

H0: não há diferença entre as pressões mensuradas por máquina e homem. H1: há diferença entre as pressões mensuradas por máquina e homem.

wilcox.test(Blood$machine, 
       Blood$expert, 
       paired = T)

    Wilcoxon signed rank test with continuity correction

data:  Blood$machine and Blood$expert
V = 64, p-value = 0.489
alternative hypothesis: true location shift is not equal to 0

A partir do teste de Wilcoxon, podemos inferir que não há diferença estatisticamente significativa entre as pressões mensuradas pela máquina e pelo homem (valor-p = 0,49).

Aula 6

Testes de Hipóteses para Três ou Mais Grupos Independentes

Existe diferença de idade em relação à classe econômica?

Para analisar esta pergunta, temos 3 possibilidades: ANOVA, ANOVA com Welch e teste de Kruskal-Wallis.

Para começar, precisamos avaliar a normalidade dos 3 grupos:

shapiro.test(dados2$Idade[dados2$Classe == "Primeira"])

    Shapiro-Wilk normality test

data:  dados2$Idade[dados2$Classe == "Primeira"]
W = 0.99169, p-value = 0.3643
shapiro.test(dados2$Idade[dados2$Classe == "Segunda"])

    Shapiro-Wilk normality test

data:  dados2$Idade[dados2$Classe == "Segunda"]
W = 0.97695, p-value = 0.005648

Como o valor-p do teste de Shapiro-Wilk foi menor que 0,05 para a idade dos passageiros da segunda classe, teremos que aplicar o teste de Kruskal-Wallis.

H0: não há diferença entre as idades segundo a classe econômica H1: há diferença entre as idades segundo a classe econômica

kruskal.test(Idade ~ Classe, data = dados2)

    Kruskal-Wallis rank sum test

data:  Idade by Classe
Kruskal-Wallis chi-squared = 95.995, df = 2, p-value < 2.2e-16

Uma vez que o teste de Kruskal-Wallis apresentou valor-p < 0,001, sabemos que pelo menos um dos grupos difere. Portanto, precisamos realizar o teste post-hoc de Dunn para verificar quais grupos diferem entre si.

library(DescTools)

Attaching package: 'DescTools'
The following object is masked from 'package:car':

    Recode
DunnTest(Idade ~ Classe, data = dados2)

 Dunn's test of multiple comparisons using rank sums : holm  

                  mean.rank.diff    pval    
Segunda-Primeira      -104.50956 3.2e-06 ***
Terceira-Primeira     -182.19861 < 2e-16 ***
Terceira-Segunda       -77.68906 4.8e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Após aplicar o teste de Dunn, foi possível observar que os três grupos diferem, sendo a primeira classe o grupo com maiores valores de idade, seguido pela segunda classe.

CASO OS TRÊS GRUPOS TIVESSEM APRESENTADO NORMALIDADE…

Precisamos avaliar se os grupos apresentam homocedasticidade.

library(car)
leveneTest(Idade ~ Classe, data = dados2)
Levene's Test for Homogeneity of Variance (center = median)
       Df F value   Pr(>F)   
group   2  5.6202 0.003787 **
      711                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como o teste de Levene indicou um valor-p menor que o nível de significância, o teste correto a ser aplicado será a ANOVA com Welch.

H0: não há diferença entre as médias das idades segundo a classe econômica H1: há diferença entre as médias das idades segundo a classe econômica

oneway.test(Idade ~ Classe, data = dados2)

    One-way analysis of means (not assuming equal variances)

data:  Idade and Classe
F = 53.355, num df = 2.00, denom df = 359.44, p-value < 2.2e-16

Visto que a ANOVA com Welch indicou que pelo menos um dos grupos difere, precisamos identicar quais diferem entre eles. Para isso, vamos usar o teste de Tukey.

OBS: caso tivéssemos homocedasticidade, faríamos a ANOVA.

anova <- aov(Idade ~ Classe, data = dados2)
summary(anova)
             Df Sum Sq Mean Sq F value Pr(>F)    
Classe        2  20930   10465   57.44 <2e-16 ***
Residuals   711 129527     182                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
177 observations deleted due to missingness

Realizando o teste de Tukey, temos:

TukeyHSD(anova)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Idade ~ Classe, data = dados2)

$Classe
                        diff        lwr        upr     p adj
Segunda-Primeira   -8.355811 -11.704133  -5.007489 0.0000000
Terceira-Primeira -13.092821 -15.962198 -10.223445 0.0000000
Terceira-Segunda   -4.737010  -7.676279  -1.797742 0.0004884

A partir do teste de Tukey, foi possível observar uma diferença significativa entre as médias de todas as comparações, indicando que a primeira classe apresenta média maior que a segunda, seguida da terceira classe.

Testes de Associação

Existe associação entre a classe econômica e o desfecho do passageiro?

H0: não existe associação entre a classe econômica e o desfecho do passageiro H1: existe associação entre a classe econômica e o desfecho do passageiro

chisq.test(dados2$Classe, dados2$Sobreviveu)

    Pearson's Chi-squared test

data:  dados2$Classe and dados2$Sobreviveu
X-squared = 102.89, df = 2, p-value < 2.2e-16
library(summarytools)
ctable(dados2$Classe, dados2$Sobreviveu)
Cross-Tabulation, Row Proportions  
Classe * Sobreviveu  
Data Frame: dados2  

---------- ------------ ------------- ------------- --------------
             Sobreviveu           Não           Sim          Total
    Classe                                                        
  Primeira                 80 (37.0%)   136 (63.0%)   216 (100.0%)
   Segunda                 97 (52.7%)    87 (47.3%)   184 (100.0%)
  Terceira                372 (75.8%)   119 (24.2%)   491 (100.0%)
     Total                549 (61.6%)   342 (38.4%)   891 (100.0%)
---------- ------------ ------------- ------------- --------------

Visto que o teste qui-quadrado apresentou valor-p < 0,001, os dados sugerem que há uma associação estatisticamente significativa entre a classe econômica e o desfecho dos passageiros, indicando que passageiros da primeira classe sobreviveram mais enquanto passageiros da terceira classe morreram mais.

CASO TIVESSE APARECIDO UMA MENSAGEM DE ALERTA/AVISO…

Usaríamos o teste exato de Fisher:

fisher.test(dados2$Classe, dados2$Sobreviveu)

    Fisher's Exact Test for Count Data

data:  dados2$Classe and dados2$Sobreviveu
p-value < 2.2e-16
alternative hypothesis: two.sided

Testes de Correlação

Existe correlação entre a idade dos passageiros com o números de pais ou filhos a bordo?

H0: não há correlação entre a idade dos passageiros com o números de pais ou filhos a bordo H1: há correlação entre a idade dos passageiros com o números de pais ou filhos a bordo

Vamos começar analisando a normalidade:

shapiro.test(dados2$Idade)

    Shapiro-Wilk normality test

data:  dados2$Idade
W = 0.98146, p-value = 7.337e-08

Visto que a variável idade não apresenta normalidade, o teste correto a ser realizado é o teste de comorrelação de Spearman.

cor.test(dados2$Idade, dados2$N_pais_filhos, method = "spearman")
Warning in cor.test.default(dados2$Idade, dados2$N_pais_filhos, method =
"spearman"): Impossível calcular o valor exato de p com empates

    Spearman's rank correlation rho

data:  dados2$Idade and dados2$N_pais_filhos
S = 76087537, p-value = 5.409e-12
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.2542121 

Ao realizar o teste de correlação de Spearman, foi obtido um valor-p < 0,001, indicando haver uma correlação estatisticamente significativa entre as variáveis. O coeficiente de correlação rho = - 0,25 indica que esta correlação é negativa, porém fraca. Dessa forma, quanto maior a idade do passageiro, menos o número de pais/filhos a bordo.

SE AS DUAS VARIÁVEIS APRESENTASSEM NORMALIDADE…

cor.test(dados2$Idade, dados2$N_pais_filhos, method = "pearson")

    Pearson's product-moment correlation

data:  dados2$Idade and dados2$N_pais_filhos
t = -5.1391, df = 712, p-value = 3.57e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.2588990 -0.1173757
sample estimates:
       cor 
-0.1891193