Teste de Hipótese: uma ferramenta poderosa para tomadas de decisão baseadas em evidências

Usando testes de hipóteses para descobrir verdades ocultas

Edson Junior
Data Hackers
15 min readOct 6, 2023

--

https://unsplash.com/pt-br/fotografias/uKlneQRwaxY

Sumário

→ Introdução
→ Antes de mais nada… o que é uma inferência estatística?
→ O que é o teste de hipótese?
→ Hipótese nula (H0) e hipótese alternativa (Ha)
→ Erro tipo I e erro tipo II
→ Nível de significância α
→ Unilateral ou bilateral
→ Distribuição normal ou t-student: qual utilizar?
→ O que é o p-valor?
→ Como encontrar o p-valor em python?
→ Exemplo de aplicação do teste de hipótese com o p-valor
→ Aplicações em ciência de dados
→ Conclusões
→ Referências

Introdução

O teste de hipótese é uma pedra angular na caixa de ferramentas de qualquer cientista de dados ou estatístico. É uma técnica estatística crucial para avaliar afirmações, tirar conclusões e tomar decisões com base em dados. Neste artigo, vamos mergulhar fundo no mundo do teste de hipótese, explorando seus princípios, etapas e aplicações práticas em python.

Antes de mais nada… o que é uma inferência estatística?

Suponhamos que temos interesse em obter informações sobre uma população de interesse. No entanto, a obtenção de informações abrangentes sobre essa população é uma empreitada dispendiosa, tanto em termos de tempo quanto de recursos financeiros. Uma solução para mitigar essa questão envolve a consideração de uma subpopulação representativa, conhecida como amostra. A partir dessa amostra, uma estatística, como a média, é coletada.

Por meio da estatística calculada a partir da amostra, denominada estatística amostral, é possível realizar inferências estatísticas sobre um parâmetro populacional desconhecido, como a média da população.

O que é o teste de hipótese?

O teste de hipótese é um procedimento estatístico que, com base em uma amostra, nos permite avaliar a validade de afirmações (hipóteses) sobre uma população ou conjunto de dados. Ou seja, é um processo de inferência estatística em que, para rejeitar ou não uma hipótese sobre uma população são levados em consideração os elementos da amostra.

O teste de hipótese ajuda a determinar se os resultados observados são estatisticamente significativos ou se podem ter ocorrido por acaso.

Vamos quebrar o teste de hipótese em seus componentes essenciais nas seções seguintes:

Hipótese Nula (H0) e hipótese alternativa (Ha)

As hipóteses são afirmações ou suposições formuladas sempre sobre a população e que podem ser testadas com base em dados observados (de amostras).

Exemplos:

  • O peso médio da população brasileira é de 50Kg
  • 25% dos paulistanos tem mais de 1,80 m de altura

Há dois tipos de hipóteses existentes: a H0, também chamada de hipótese nula e a Ha (ou H1), conhecida como hipótese alternativa. Se uma destas hipóteses se mostrar falsa, a outra se confirmará verdadeira.

  • A H0 é a afirmação inicial que supomos ser verdadeira e que desejamos testar para encontrar envidências prós ou contras. Envolve uma relação de igualdade, podendo conter os símbolos “=, ≥ e ≤”. Além disso, representa a ideia de que qualquer diferença ou efeito observado nos dados é devido ao acaso ou ao erro amostral, e não representa uma verdadeira diferença ou efeito.
  • A Ha é a afirmação oposta (representa o complemento), representa a ideia de que há evidências estatísticas suficientes para sugerir que há uma diferença ou efeito real. Envolve os símbolos “≠, > e <”.

Exemplo 1 — Teste de Médias:

  • Hipótese Nula (H0): A média de horas de sono das pessoas em uma determinada cidade é maior ou igual a 7 horas por noite.
  • Hipótese Alternativa (H1): A média de horas de sono das pessoas em uma determinada cidade é menor que 7 horas por noite.

Neste exemplo, estamos testando se a média de horas de sono da população da cidade é maior ou igual a 7 horas (H0) ou se é menor que 7 horas (H1).

Exemplo 2 — Teste de Proporções:

  • Hipótese Nula (H0): A proporção de clientes satisfeitos com um produto é igual a 0,70 (ou 70%).
  • Hipótese Alternativa (H1): A proporção de clientes satisfeitos com um produto é diferente de 0,70 (ou 70%).

Neste exemplo, estamos testando se a proporção de clientes satisfeitos com um produto é igual a 0,70 (H0) ou se é diferente de 0,70 (H1).

Desta forma, estão disponíveis as seguintes combinações de hipóteses:

Fonte: Próprio autor

Erro tipo I e erro tipo II

Como dito no tópico anterior, inicialmente a hipótese nula é considerada verdadeira e o teste fornecerá evidências estatísticas para rejeitar ou não a H0 em favor da Ha.

Como está se tentando validar uma afirmação feita para a população a partir de dados da amostra, a decisão está sujeita a erros.

Erro tipo I: Rejeitar H0 quando esta é verdadeira. Este erro acontece com probabilidade α (alfa).

Erro tipo II: Não rejeitar H0 quando esta é falsa. Este erro acontece com probabilidade β (beta).

Diante das possibilidades de erro e acerto das decisões à serem tomadas, há quatro situações possíveis, indicadas na tabela a seguir:

Fonte: Próprio autor

Durante a tomada de decisão é desejável reduzir o máximo possível dos dois erros. Para um tamanho de amostra constante, a redução da probabilidade de ocorrência do Erro tipo I acarreta no aumento da probabilidade de ocorrer o Erro tipo II, e vice versa.

Nível de Significância (α)

O nível de significância, também denotado por α (alfa), é a probabilidade máxima tolerável pelo tomador de decisão para cometer o Erro tipo I.

Os valores mais comuns são 0.05 (5%) e 0.01 (1%). Sendo assim, quando o nível de significância é definido em 0.05, por exemplo, significa que o pesquisador está disposto a aceitar uma probabilidade de 5% de cometer um erro do Tipo I, ou seja, de rejeitar erroneamente a hipótese nula quando ela é verdadeira.

Unilateral ou bilateral

Os testes de hipótese ainda podem ser divididos em bilateral (bicaudal) ou unilateral (unicaudal):

  • São bilaterais quando na hipótese alternativa (Ha) há o sinal de “≠” envolvido, conforme o caso 3, apresentado na seção das hipóteses:
Fonte: Próprio autor

O teste de hipótese bicaudal pode ser representado graficamente da seguinte maneira:

Fonte: Próprio autor

As regiões destacadas são chamadas regiões de rejeição. Como o nível de significäncia foi definido por α, a região de rejeição esquerda e a direita possuem, cada uma delas, área de α/2 e são definidas por um valor crítico (destacado pela reta pontilhada). Qualquer valor que esteja nesta região é considerado como estatísticamente significativo, podendo assim ser rejeitada a hipótese nula.

  • São unilaterais quando não há, na hipótese alternativa, o sinal de “≠”. Ou seja, há “<” (para o teste bicaudal à esquerda) e “<” (para o teste bicaudal à direita).
Fonte: Próprio autor

Os testes unicaudais podem ser representados graficamente da seguinte maneira:

Fonte: Próprio autor

Da mesma forma que no caso anterior, as regiões destacadas são regiões de rejeição. Mas para os testes unicaudais há somente uma região, com área α. Qualquer valor estatístico que esteja nesta região é considerado como estatísticamente significativo, podendo também ser rejeitada a hipótese nula.

Distribuição normal ou t-student: qual utilizar?

Em testes de hipótese há duas opções possíveis de escolha de distribuição que podem ser consideradas: a distribuição normal e a t-student.

Distribuição normal

A distribuição normal é utilizada quando se tem conhecimento do desvio padrão da população e o tamanho da amostra é grande (maior que 30) o suficiente para que a distribuição t-student se aproxime da normal.

Uma outra importante característica é que esta distribuição possui caldas mais finas, então as áreas nas caudas são menores.

Distribuição t-student

Ao contrário da distribuição normal, a t-student é escolhida quando não se conhece o desvio padrão da população (sendo necessário utilizar o desvio padrão da amostra) e também quando o tamanho da amostra é pequeno (até 30).

A distribuição t-student possui caudas mais espessas que a normal, indicando que há uma maior probabilidade de observações extremas em relação ao centro da distribuição.

Além disso, ainda há o conceito de graus de liberdade, que é um parâmetro que afeta a forma da distribuição.

O número de graus de liberdade pode ser dado pelo tamanho da amostra subtraído de uma unidade:

Fonte: Próprio autor

Quanto menor o número de graus de liberdade, mais espessas são as caudas. Por isso que o tamanho da amostra também influencia no tipo de distribuição.

O que é o p-valor?

O p-valor, muitas vezes visto como um conceito esotérico da estatística, pode ser mais acessível do que parece à primeira vista. Em sua essência, o p-valor é a probabilidade de obter uma estatística de teste tão extrema (desfavorável) quanto a observada na amostra, sob a suposição de que a H0 seja verdadeira.

…Mas o que isso realmente significa?

Para entender melhor, acompanhe o exemplo a seguir:

Suponha que estamos conduzindo um experimento para testar uma nova droga com o objetivo de determinar se ela é eficaz no tratamento de uma determinada condição médica. Temos duas hipóteses:

  1. Hipótese Nula (H0): Esta é a hipótese que geralmente assume que não há efeito ou diferença real causada pela droga. Em outras palavras, sob a H0, a droga é considerada ineficaz, e qualquer efeito observado é atribuído ao acaso ou à variabilidade natural.
  2. Hipótese Alternativa (Ha): Esta é a hipótese que estamos tentando provar. Sob a Ha, a droga é considerada eficaz, e qualquer efeito observado é atribuído à eficácia real da droga.

Após conduzir o experimento e coletar dados, realizamos um teste estatístico para determinar se há evidências suficientes para rejeitar a H0 em favor da Ha. O p-valor desempenha um papel crucial nesse processo.

Entendendo o p-valor:

Suponha que, ao calcular o p-valor, obtemos um valor de 0,03. Isso significa que, se a droga fosse verdadeiramente ineficaz (conforme afirmado na H0), teríamos apenas 3% de chance de observar um resultado tão extremo ou ainda mais extremo do que aquele que realmente observamos no experimento. Em outras palavras, o p-valor quantifica a probabilidade de obter os resultados que vimos, assumindo que a droga seja ineficaz.

  • Se o p-valor for baixo (menor que α), isso sugere que é improvável obter tais resultados sob a suposição de que a droga seja ineficaz. Portanto, há evidências contra a hipótese nula, e podemos considerar rejeitá-la em favor da hipótese alternativa. Isso indica que os resultados observados são estatisticamente significativos e que a droga pode ser eficaz. Um p-valor pequeno está relacionado a eventos raros, incomuns.
  • Se o p-valor for alto (maior que α), isso sugere que os resultados são consistentes com a hipótese nula de que a droga é ineficaz. Nesse caso, não temos evidências convincentes para rejeitar a H0, os dados não fornecem suporte para a hipótese alternativa, ou seja, não podemos concluir que a droga é eficaz.

Quanto menor o p-valor, há mais evidências para rejeitar a hipótese nula.

Obs: É importante notar que o p-valor não indica a probabilidade de que a hipótese nula seja verdadeira ou falsa, mas sim se H0 é provavelmente verdadeira ou provavelmente falsa (se há ou não evidências para questionar a H0), não há uma certeza. Ou seja, o teste fornece informações sobre a probabilidade de observar os resultados dados, sob a suposição de que a hipótese nula seja verdadeira. Portanto, ele é uma ferramenta essencial para a tomada de decisões em testes de hipóteses, ajudando os pesquisadores a avaliar a força das evidências estatísticas em relação às hipóteses testadas.

Resumindo:

  • Se p-valor ≤ α: rejeita-se a H0
  • Se p-valor > α: não se pode rejeitar a H0

Este método do p-valor é bastante comum quando se está resolvendo um teste de hipótese através de algum software computacional, que fornece o p-valor.

Como encontrar o p-valor em python?

Para encontrar o p-valor de um teste de hipótese pode ser utilizado a função de distribuição acumulativa (CDF, do inglês “Cumulative Distribution Function”).

Trata-se uma função estatística que descreve a probabilidade acumulada de uma variável aleatória assumir valores menores ou iguais a um determinado valor. Em outras palavras, a CDF fornece uma representação acumulada das probabilidades associadas a valores específicos em uma distribuição de probabilidade.

Para uma distribuição t-Student

Para uma distribuição t-Student, a função em Python que calcula o p-valor através da CDF é a stats.t.cdf (da biblioteca scipy), que recebe como parâmetros a estatística t e o número de graus de liberdade.

Para um teste unicaudal à esquerda:

# calcula a probabilidade acumulada de obter um valor de estatística t menor 
# ou igual a estatística t observada (t_statistic)

p_valor = stats.t.cdf(t_statistic, df=n - 1)

Para um teste unicaudal à direita:

# calcula a probabilidade acumulada de obter um valor de estatística t maior 
# que a estatística t observada (t_statistic)

p_valor = 1 - stats.t.cdf(t_statistic, df=n - 1)

Como a função CDF calcula a probabilidade de obter um valor menor ou igual a estatística observada, o p-valor neste caso será o complemento da função CDF.

Para um teste bicaudal:

# O código a seguir calcula o p-valor em um teste t bicaudal. Um teste t 
# bicaudal é usado para determinar se a estatística amostral difere
# significativamente de uma estatística hipotética, considerando tanto valores
# maiores quanto menores do que a estatística hipotética.

p_valor = 2 * (1 - stats.t.cdf(np.abs(t_statistic), df=n - 1))

Neste código, np.abs(t_statistic) é usado para calcular o valor absoluto da estatística t observada, que é necessário porque estamos interessados em ambas as caudas da distribuição. O p-valor bicaudal é então calculado como duas vezes o complemento da CDF da distribuição t-Student para o valor absoluto da estatística t observada.

Para uma distribuição normal

Para uma distribuição t-Student, a função em Python que calcula o p-valor através da CDF é a stats.norm.cdf (da biblioteca scipy), que recebe como parâmetro a estatística z.

Para um teste unicaudal à esquerda:

# calcula a probabilidade acumulada de obter um valor de estatística t menor 
# ou igual a estatística t observada (t_statistic) sob a suposição de que a
# hipótese nula seja verdadeira.

p_valor = stats.norm.cdf(z)

Para um teste unicaudal à direita:

# calcula a probabilidade acumulada de obter um valor de estatística t maior 
# que a estatística t observada (t_statistic) sob a suposição de que a
# hipótese nula seja verdadeira.

p_valor = 1 - stats.norm.cdf(z)

Como a função CDF calcula a probabilidade de obter um valor menor ou igual a estatística observada, o p-valor neste caso será o complemento da função CDF.

Para um teste bicaudal:

# O código a seguir calcula o p-valor em um teste z bicaudal. Um teste z 
# bicaudal é usado para determinar se a estatística amostral difere
# significativamente de uma estatística hipotética, considerando tanto valores
# maiores quanto menores do que a estatística hipotética.

p_valor = 2 * (1 - stats.norm.cdf(np.abs(z)))

Neste código, np.abs(z) é usado para calcular o valor absoluto da estatística t observada, que é necessário porque estamos interessados em ambas as caudas da distribuição. O p-valor bicaudal é então calculado como duas vezes o complemento da CDF da distribuição normal para o valor absoluto da estatística z observada.

Exemplo de aplicação do teste de hipótese com o p-valor

A aplicação de um teste de hipótese pode seguir as seguintes etapas:

Passo1: Definição das hipóteses nula e alternativa

Passo 2: Definição do nível de significância

Passo 3: Definindo o tipo de distribuição à ser utilizada

Passo 4: Cálculo do p-valor

Passo 5: Tomada de decisão

Exemplo:

Uma farmácia colocou um cartaz em sua entrada que afirma que a entrega de seus medicamentos na casa dos clientes demora em média 20 minutos. Após ler o cartaz, você desconfia que a entrega demora em média mais tempo do que é anunciado.

Você decide fazer um teste, anotar o tempo de entrega de 40 pedidos na farmácia, incluindo o de vizinhos clientes. Após as 40 entregas, você obtém uma média de 23 minutos, com um desvio padrão de 5 minutos.

Passo 1: Definindo as hipóteses

H0: µ ≤ 20 ( média do tempo de espera é menor ou igual a 20 minutos)

Ha: µ > 20 (média do tempo de espera é maior que 20 minutos)

Desta forma, o teste é unicaudal à direita

Passo 2: Definindo a significância

Como dito no tópico sobre a significância, os valores mais comuns para α são 0.05 (5%) e 0.01 (1%). Neste caso, vamos supor que você defina 0.05. Isto significa que você está disposto de aceitar uma probabilidade de, no máximo, 5% de cometer o erro tipo I, ou seja, de rejeitar a erroneamente a afirmação da farmácia de que o tempo de entrega dos medicamentos tem uma média de até 20 minutos.

Passo 3: Definindo o tipo de distribuição à ser utilizada

Neste caso há 40 registros na amostra, mas não se tem disponível o desvio padrão da população, então será escolhida a distribuição t-student.

Passo 4: Calculando o p-valor

Nesta etapa é calculado o p-valor, que para este exemplo, significa a probabilidade de, não rejeitando a H0, que o tempo de entrega da farmácia seja muito longe de 20 minutos.

Para calcular o p-valor, fazemos:

Fonte: Próprio autor

Ou seja, como temos um teste unicaudal à direita, o p-valor será calculado pela probabilidade de um valor “T”da distribuição ser maior que um “t”.

Primeiramente é necessário a definição da estatística t

Fonte: Próprio autor

Sendo que:

X_= média da amostra

µ0: média da população

s: desvio padrão

n: tamanho da amostra

PAUSA: Caso a distribuição escolhida fosse a normal, não haveria o cálculo da estatística t, mas sim o valor de “z”:

Fonte: Próprio autor

A diferença é a utilização do desvio padrão da população (σ_0) ao invés do desvio padrão amostral. Consequentemente, o p-valor seria dado por:

Fonte: Próprio autor

Voltando a expressão da estatística t, encontra-se t = 3.7947. Agora é calcular P(T>3.7947), ou seja, a probabilidade de “T ser maior que 3.7947”. Para isso, é possível utilizar a biblioteca scipy.stats, de python:

import scipy.stats as stats

# Dados da amostra
media_amostral = 23 # Média amostral observada
media_anunciada = 20 # Média anunciada pela farmácia
tamanho_amostra = 40 # Tamanho da amostra

# Desvio padrão
desvio_padrao_estimado = 5

# Cálculo da estatística t
estatistica_t = (media_amostral - media_anunciada) / (desvio_padrao_estimado / (tamanho_amostra ** 0.5))
print(f"estatistica_t = {estatistica_t:.4f}")
print()

# Cálculo do p-valor para um teste unilateral à direita
p_valor = 1 - stats.t.cdf(estatistica_t, df=tamanho_amostra - 1)
print(f"O p-valor vale: {p_valor:.4f}")

Desta forma, são obtidos os seguintes resultados:

Fonte: Próprio autor

Passo 5: Tomada de decisão

Para a tomada de decisão, é feita a comparação entre o p-valor e o nível de significância.


# Nível de significância
nivel_de_significancia = 0.05

# Tomada de decisão
if p_valor < nivel_de_significancia:
print("Rejeitar a hipótese nula: Há evidências de que a entrega demora mais tempo do que o anunciado.")
else:
print("Não rejeitar a hipótese nula: Não há evidências suficientes para concluir que a entrega demora mais tempo do que o anunciado.")

O código acima já apresenta a resposta do teste de hipótese:

Fonte: Próprio autor

Como p-valor (0.0003) é menor do que α (0.05), então existem evidências suficientes para rejeitar a H0. Assim, pode-se concluir que há indícios de que a entrega da farmácia demora mais que 20 minutos.

Aplicações em Ciência de Dados

O teste de hipótese desempenha um papel fundamental em ciência de dados:

1. Teste t-Student:

  • Suponha que queremos saber se a média de idade de dois grupos de clientes é a mesma.
  • H0: As médias são iguais.
  • Ha: As médias são diferentes.
  • Usamos o teste t, por exemplo, para comparar as médias e determinar se há uma diferença significativa.

2. Teste Qui-Quadrado:

  • Imagine que temos dados sobre a preferência por produtos em uma loja.
  • H0: Não há associação entre o produto e a preferência.
  • Ha: Há uma associação.
  • O teste qui-quadrado nos ajuda a avaliar se existe uma relação significativa entre as variáveis.

3. Teste A/B :

  • É amplamente utilizado, por exemplo, para avaliar a eficácia de mudanças em um site, aplicativo ou campanha de marketing.
  • H0: Não há diferença entre a versão atual e a versão modificada.
  • Ha: Existe uma diferença significativa.

Conclusões

O teste de hipótese é uma ferramenta poderosa para a tomada de decisões baseadas em evidências em ciência de dados. Compreender seus princípios e aplicações é essencial para qualquer profissional dessa área. Ao dominar essa técnica, você estará bem equipado para tirar conclusões sólidas e fazer descobertas significativas a partir dos seus dados. Portanto, continue explorando e aplicando o teste de hipótese em suas análises de dados para obter insights valiosos.

Ainda não me segue no Medium? Aproveite e me siga para ficar sabendo toda vez que sair um artigo novo do forninho!!

Nos próximos posts estarei explorando as aplicações do teste de hipótese na ciência de dados. Fique ligado!!

Referências

  1. Canal Fernanda Maciel — YouTube
  2. Canal Professor Guru — YouTube

--

--