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>
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
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_padrao_amostra1 <- sd(amostra1$arr_delay) / sqrt(nrow(amostra1))
head(erro_padrao_amostra1)
## [1] 1.775249
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
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
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
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.
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
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
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)
Baixo valor p: forte evidência empírica contra h0 Alto valor p: pouca ou nenhuma evidência empírica contra h0
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.