Data Science do zero: Primeiras regras com o Python


def normal_upper_bound(probability, mu=0, sigma=1): """retorna z para que p(Z



Baixar 5.26 Mb.
Pdf preview
Página58/75
Encontro24.07.2022
Tamanho5.26 Mb.
#24344
1   ...   54   55   56   57   58   59   60   61   ...   75
Data Science do zero - Primeiras regras
def normal_upper_bound(probability, mu=0, sigma=1):
"""retorna z para que p(Z <= z) = probability"""
return inverse_normal_cdf(probability, mu, sigma)
def normal_lower_bound(probability, mu=0, sigma=1):
"""retorna z para que p(Z >= z) = probability"""
return inverse_normal_cdf(1 - probability, mu, sigma)
def normal_two_sided_bounds(probability, mu=0, sigma=1):
"""retorna os limites simétricos (sobre a média)
que contêm a probabilidade específica"""
tail_probability = (1 - probability) / 2
# limite superior deveria ter tail_probability acima
upper_bound = normal_lower_bound(tail_probability, mu, sigma)
# limite inferior deveria ter tail_probability abaixo
lower_bound = normal_upper_bound(tail_probability, mu, sigma)
return lower_bound, upper_bound
Em especial, digamos que escolhemos lançar uma moeda n = 1000 vezes. Se
nossa hipótese de honestidade for verdadeira, X deveria ser distribuído
normalmente com média 500 e desvio padrão de 15,8:
mu_0, sigma_0 = normal_approximation_to_binomial(1000, 0.5)
Precisamos tomar uma decisão sobre significância — de quanto é a vontade que
temos de fazer um erro tipo 1 (“falso positivo”), em que rejeitamos H
0
mesmo se
for verdadeiro. Por motivos perdidos pelas memórias da história, essa vontade é
configurada para 5% ou 1%, geralmente. Vamos escolher 5%.
Considere o teste que rejeita H
0
se X cair fora dos limites dados por:
normal_two_sided_bounds(0.95, mu_0, sigma_0) # (469, 531)
Presumindo que p seja igual a 0,5 (por exemplo, H
0
é verdadeiro), há apenas 5%
de chance de observarmos que um X permanece fora desse intervalo, pois é
exatamente a significância que queríamos. De outra forma, se H
0
for verdadeiro,
esse teste apresentará o resultado correto aproximadamente em 19 de 20 vezes.
Também estamos interessados no poder de um teste, que é a probabilidade de
não cometer um erro tipo 2, no qual falhamos em rejeitar H
0
mesmo ele sendo


falso. A fim de medir esse procedimento, temos que especificar o que realmente
significa H
0
ser falso. (Sabendo ao menos que p não é 0,5 não lhe dá uma
informação significativa sobre a distribuição de X.) Em especial, verificaremos o
que acontece se p realmente for 0,55, a fim de que a moeda esteja levemente
inclinada a ser cara.
Nesse caso, podemos calcular o poder do teste com:
# 95% dos limites baseados na premissa p é 0,5
lo, hi = normal_two_sided_bounds(0.95, mu_0, sigma_0)
# mi e sigma reais baseados em p = 0,55
mu_1, sigma_1 = normal_approximation_to_binomial(1000, 0.55)
# um erro tipo 2 significa que falhamos ao rejeitar a hipótese nula
# que acontecerá quando X ainda estiver em nosso intervalo original
type_2_probability = normal_probability_between(lo, hi, mu_1, sigma_1)
power = 1 - type_2_probability # 0.887
Agora, imagine que a nossa hipótese nula fosse que a moeda não seria inclinada
a cara, ou que p ≤ 0,5. Nesse caso, queríamos um teste unilateral que rejeitasse a
hipótese nula quando X fosse muito maior que 50 mas não quando X fosse
menor. Portanto, um teste de significância de 5% envolveria usar
normal_probability_below
para encontrar o corte abaixo dos 95% em que a
probabilidade ficaria:
hi = normal_upper_bound(0.95, mu_0, sigma_0)
# é 526 (< 531, já que precisamos de mais probabilidade na aba superior)
type_2_probability = normal_probability_below(hi, mu_1, sigma_1)
power = 1 - type_2_probability # 0.936
Esse teste é mais poderoso, visto que ele não mais rejeita H
0
quando X está
abaixo de 469 (improvável de acontecer se H
1
for verdadeiro) e, ao invés, rejeita
H
0
quando X está entre 526 e 531 (provável de acontecer se H
1
for verdadeiro).


p -values
Uma outra maneira de pensar sobre o teste anterior envolve p-values. Em vez de
escolher limites com base em alguma probabilidade de corte, nós computamos a
probabilidade — presumindo que H
0
seja verdadeiro — que podemos ver um
valor ao menos tão extremo quanto ao que realmente observamos.
Para o nosso teste bilateral para a moeda honesta, computamos:

Baixar 5.26 Mb.

Compartilhe com seus amigos:
1   ...   54   55   56   57   58   59   60   61   ...   75




©historiapt.info 2022
enviar mensagem

    Página principal