Base de dados

head(flights)
## # A tibble: 6 x 19
##    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
## 1  2013     1     1      517            515         2      830            819
## 2  2013     1     1      533            529         4      850            830
## 3  2013     1     1      542            540         2      923            850
## 4  2013     1     1      544            545        -1     1004           1022
## 5  2013     1     1      554            600        -6      812            837
## 6  2013     1     1      554            558        -4      740            728
## # ... with 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>

Estudo de Caso dos Voos

O estudo é a saida de 3 aeroportos dos EUA | ano 2013

companhias aéreas UA (United Airlines) e DL (Delta Airlines). O dataset deve conter apenas duas colunas, nome da companhia e atraso nos voos de chegada. Os dados devem ser extraídos do dataset flights para construir o dataset pop_data Vamos considerar este dataset como sendo nossa população de voos

pop_data = na.omit(flights) %>% #omitir todos os valores NA(vazios)
  filter(carrier == 'UA' | carrier == 'DL', arr_delay >= 0) %>%#Filtrar as compnhias aeresas UA e DL e pegar um atraso maior ou == a 0 
  select(carrier, arr_delay) %>% # select para pegar as colunas que foram enuciadas 
  group_by(carrier) %>%
  sample_n(17000) %>%# Pegar uma amostrar com 17 mil registros, lebrando que o datater tem 300mil registros 
  ungroup()
head(pop_data)
## # A tibble: 6 x 2
##   carrier arr_delay
##   <chr>       <dbl>
## 1 DL             42
## 2 DL             70
## 3 DL              5
## 4 DL              0
## 5 DL              4
## 6 DL             22

Criar duas amostras de 1000 observações cada uma a partir do dataset pop_data apenas com dados da companhia DL para amostra 1 e apenas dados da companhia UA na amostra 2

Dica: inclua uma coluna chamada sample_id preenchida com número 1 para a primeira amostra e 2 para a segunda amostra

#Mesmo do exemplo 1, a diferença é colocar uma coluna com o valor 1
amostra1 = na.omit(pop_data) %>% 
  select(carrier, arr_delay) %>%
  filter(carrier == 'DL') %>%
  mutate(sample_id = '1') %>%
  sample_n(1000)

head(amostra1)
## # A tibble: 6 x 3
##   carrier arr_delay sample_id
##   <chr>       <dbl> <chr>    
## 1 DL             73 1        
## 2 DL              7 1        
## 3 DL             25 1        
## 4 DL             30 1        
## 5 DL            199 1        
## 6 DL              4 1
#Mesmo exemplo criando a coluna 2
amostra2 = na.omit(pop_data) %>% 
  select(carrier, arr_delay) %>%
  filter(carrier == 'UA') %>%
  mutate(sample_id = '2') %>%
  sample_n(1000)

head(amostra2)
## # A tibble: 6 x 3
##   carrier arr_delay sample_id
##   <chr>       <dbl> <chr>    
## 1 UA             25 2        
## 2 UA              1 2        
## 3 UA             85 2        
## 4 UA             23 2        
## 5 UA             30 2        
## 6 UA             11 2

Crie um dataset contendo os dados das 2 amostras criadas no item anterior.

#fazer a união utilizando o comando rbind
samples = rbind(amostra1,amostra2)
#View(samples)
head(samples)
## # A tibble: 6 x 3
##   carrier arr_delay sample_id
##   <chr>       <dbl> <chr>    
## 1 DL             73 1        
## 2 DL              7 1        
## 3 DL             25 1        
## 4 DL             30 1        
## 5 DL            199 1        
## 6 DL              4 1

Calcule o intervalo de confiança (95%) da amostra1

Usamos a fórmula: erro_padrao_amostra1 = sd(amostra1$arr_delay) / sqrt(nrow(amostra1))

Esta fórmula é usada para calcular o desvio padrão de uma distribuição da média amostral (de um grande número de amostras de uma população). Em outras palavras, só é aplicável quando você está procurando o desvio padrão de médias calculadas a partir de uma amostra de tamanho n𝑛, tirada de uma população.

Digamos que você obtenha 10000 amostras de uma população qualquer com um tamanho de amostra de n = 2.

Então calculamos as médias de cada uma dessas amostras (teremos 10000 médias calculadas).

A equação acima informa que, com um número de amostras grande o suficiente, o desvio padrão das médias da amostra pode ser aproximado usando esta fórmula: sd(amostra) / sqrt(nrow(amostra))

Deve ser intuitivo que o seu desvio padrão das médias da amostra será muito pequeno, ou em outras palavras, as médias de cada amostra terão muito pouca variação.

Com determinadas condições de inferência (nossa amostra é aleatória, normal, independente), podemos realmente usar esse cálculo de desvio padrão para estimar o desvio padrão de nossa população.

Como isso é apenas uma estimativa, é chamado de erro padrão. A condição para usar isso como uma estimativa é que o tamanho da amostra n é maior que 30 (dado pelo teorema do limite central) atende a condição de independência n <= 10% do tamanho da população.

Erro padrão

erro_padrao_amostra1 <- sd(amostra1$arr_delay) / sqrt(nrow(amostra1))
head(erro_padrao_amostra1)
## [1] 1.775249

Limite Inferior e Superior

1.96 é o valor de Z SCORE para 95 % de confiança

lower <- mean(amostra1$arr_delay) - 1.96 * erro_padrao_amostra1
upper <- mean(amostra1$arr_delay) + 1.96 * erro_padrao_amostra1
head(lower)
## [1] 32.00551
head(upper)
## [1] 38.96449

Intervalo de Confiaça

ic_1 = c(lower,upper)
mean(amostra1$arr_delay)
## [1] 35.485
head(ic_1)
## [1] 32.00551 38.96449

O intervalo de confiança da primeira amostra esta 35 minutos de atrasos

Exercício 5 - Calcule o intervalo de confiança (95%) da amostra2

erro_padrao_amostra2 = sd(amostra2$arr_delay) / sqrt(nrow(amostra2))
lower = mean(amostra2$arr_delay) - 1.96 * erro_padrao_amostra2
upper = mean(amostra2$arr_delay) + 1.96 * erro_padrao_amostra2
ic_2 = c(lower,upper)
mean(amostra2$arr_delay)
## [1] 34.369
ic_2
## [1] 31.39704 37.34096

Temos uma média de traso de 34 minutos e um intervalo de confiança de 31 a 36 minutos

Crie um plot Visualizando os intervalos de confiança criados nos itens anteriores

Dica: Use o geom_point() e geom_errorbar() do pacote ggplot2

toPlot = summarise(group_by(samples, sample_id), mean = mean(arr_delay))
toPlot = mutate(toPlot, lower = ifelse(toPlot$sample_id == 1,ic_1[1],ic_2[1]))
toPlot = mutate(toPlot, upper = ifelse(toPlot$sample_id == 1,ic_1[2],ic_2[2]))
ggplot(toPlot, aes(x = sample_id, y=mean, colour = sample_id )) + 
  geom_point() +
  geom_errorbar(aes(ymin=lower, ymax=upper), width=.1)

A média esta representa pelos pontos centrais da cor vermelha e azul.

Podemos dizer que muito provavelmente, as amostras vieram da mesma população?

Por que?

Resposta: Sim. A maior parte dos dados reside no mesmo intervalo de confiança nas duas amostras.

Se traçarmos uma linha imaginaria no grafico os dados estão no mesmo intervalo de confiança, com isso podemospresumir que os dados vieram da mesma população.

Criar um Teste De Hipótese Sobre Atrasos de Voos da Delta Airlines (DL)

atrasam mais do que os voos da UA (United Airlines)

H0 e H1 devem ser mutuamente exclusivas.

H0 = Não há diferença significativa entre os atrasos da DL e UA (diff da média de atrasos = 0). H1 = Delta atrasa mais (diff das médias > 0).

Cria as Amostras

dl <- sample_n(filter(pop_data, carrier == "DL", arr_delay > 0), 1000)
ua <- sample_n(filter(pop_data, carrier == "UA", arr_delay > 0), 1000)

#Cada vez que executar vai ter resultados difeentes, por causa do sample "Aleatorio"

Calculando Erro Padrão e Média

se = sd(dl$arr_delay) / sqrt(nrow(dl))
mean(dl$arr_delay)
## [1] 33.964

Limites inferior e superior

lower = mean(dl$arr_delay) - 1.96 * se
upper = mean(dl$arr_delay) + 1.96 * se
ic_dl = c(lower,upper)
ic_dl
## [1] 30.88094 37.04706

Repete o processo para a outra companhia

se = sd(ua$arr_delay) / sqrt(nrow(ua))
mean(ua$arr_delay)
## [1] 34.706
lower = mean(ua$arr_delay) - 1.96 * se
upper = mean(ua$arr_delay) + 1.96 * se
ic_ua = c(lower,upper)
ic_ua
## [1] 31.88257 37.52943

Teste t

O teste t (de Student) foi desenvolvido por Willian Sealy Gosset em 1908 que usou o pseudônimo “Student” em função da confidencialidade requerida por seu empregador (cervejaria Guiness) que considerava o uso de estatística na manutenção da qualidade como

###uma vantagem competitiva.

O teste t de Student tem diversas variações de aplicação, e pode ser usado na comparação de duas (e somente duas) médias e as variações dizem respeito às hipóteses que são testadas

t.test(dl$arr_delay, ua$arr_delay, alternative="greater")
## 
##  Welch Two Sample t-test
## 
## data:  dl$arr_delay and ua$arr_delay
## t = -0.34788, df = 1982.7, p-value = 0.636
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  -4.252005       Inf
## sample estimates:
## mean of x mean of y 
##    33.964    34.706

Interpretação do Estudo

Valor p

O valor-p é uma quantificação da probabilidade de se errar ao rejeitar H0 e a mesma decorre da distribuição estatística adotada.

Se o valor-p é menor que o nível de significância, conclui-se que o correto é rejeitar a hipótese de nulidade.

Valor p é a probabiblidade de que a estatística do teste assuma um valor extremo em relação ao valor observado quando H0 é verdadeira.

Estamos trabalhando com alfa igual a 0.05 (95% de confiança)

Regra

Baixo valor p: forte evidência empírica contra h0 Alto valor p: pouca ou nenhuma evidência empírica contra h0

Conclusão

Falhamos em rejeitar a hipótese nula, pois p-valor é maior que o nível de significância Isso que dizer que há uma probabilidade alta de não haver diferença significativa entre os atrasos. Para os nossos dados, não há evidência estatística de que a DL atrase mais que a UA.