1
resposta

[Projeto] Mão na massa: executando teste z com p-valor

import pandas as pd
from scipy import stats
import numpy as np
from statsmodels.stats.weightstats import ztest

# Conjunto de dados TechTaste
df_techtaste = pd.DataFrame({'avaliacoes': [38, 44, 33, 42, 47, 33, 36, 39, 42, 36, 39, 
                                            34, 42, 42, 36, 43, 31, 35, 36, 41, 42, 30, 
                                            25, 38, 47, 36, 32, 45, 44, 45, 37, 48, 37, 
                                            36, 44, 49, 31, 45, 45, 40, 36, 50, 38, 34, 
                                            36, 42, 46, 49, 36, 34, 38, 31, 53, 40, 57, 
                                            40, 36, 42, 26, 50, 32, 43, 35, 37, 42, 30, 
                                            36, 43, 40, 43, 44, 52, 37, 51, 35, 47, 40, 
                                            50, 37, 49]})
                                            
#Calcule a média amostral das avaliações

media_amostral = df_techtaste['avaliacoes'].mean()
print(media_amostral)

#Formule hipóteses para o problema da empresa

hipotese_nula = 30

#Estabelecidos o nível de confiança em 95% e o desvio padrão populacional em 2.65, 
#verifique se a média da amostra está definida dentro do intervalo de confiança da hipótese nula.

nivel_confianca = 0.95
desvio_padrao_populacional = 2.65
tamanho_amostra = len(df_techtaste)

intervalo_confianca = stats.norm.interval(
            nivel_confianca, 
            loc = hipotese_nula, 
            scale = desvio_padrao_populacional / np.sqrt(tamanho_amostra)
        )

print(intervalo_confianca)

(np.float64(29.419303816868016), np.float64(30.580696183131984))

#### O que é possível entender a partir do resultado da etapa anterior?

if media_amostral in intervalo_confianca: 
    print(f'A média da amostra({media_amostral}) está no intervalo de confiança')
else: 
    print(f'A média da amostra({media_amostral}) não está no intervalo de confiança')

A média da amostra(40.025) não está no intervalo de confiança

#Utilize o Teste Z para calcular o valor da Estatística Z e o p-valor para o problema da TechTaste.

stats, p_valor = ztest(
    x1 = df_techtaste['avaliacoes'], #amostragem que estou testando
    value = hipotese_nula, #hipótese a ser testada
    alternative = "two-sided" #coloca a outra hipótese
)

print(f'Estatística Z: {stats}, Valor-p: {p_valor}')

Estatística Z: 13.96274198988354, Valor-p: 2.6311293593122384e-44

#Pelos resultados anteriores, a hipótese nula formulada é rejeitada 
# ou não rejeitada? Explique o que justifica sua decisão.

if p_valor < 0.05:
    print('A hipótese nula é rejeitada')
else:
    print('A hipótese nula não é rejeitada')

A hipótese nula é rejeitada.

1 resposta

Olá, Vinicius. Como vai?

Parabéns pela execução técnica do teste de hipóteses! O seu código demonstra um domínio muito sólido das bibliotecas scipy, numpy e statsmodels para a realização de análises estatísticas rigorosas.

Abaixo, destaco os pontos principais da sua análise que confirmam o sucesso do seu teste:

  • Cálculo do Intervalo de Confiança: Você definiu corretamente o intervalo baseado na hipótese nula ($H_0 = 30$) e no desvio padrão populacional ($2,65$). O resultado encontrado, aproximadamente $[29,42; 30,58]$, mostra onde a média deveria estar se a hipótese nula fosse verdadeira.
  • Comparação com a Média Amostral: Ao identificar que a média real da amostra ($40,025$) está muito fora desse intervalo, você obteve o primeiro indício forte de que a média populacional não é 30.
  • Análise do Valor-p (p-value): O resultado do seu Teste Z retornou um Valor-p extremamente baixo ($2,63 \times 10^{-44}$). Na estatística, um Valor-p menor que o nível de significância (geralmente $0,05$ para $95%$ de confiança) indica que a probabilidade de os resultados observados ocorrerem por acaso sob a hipótese nula é praticamente nula.
  • Conclusão Estatística: Sua decisão de rejeitar a hipótese nula está perfeitamente fundamentada, tanto pela posição da média fora do intervalo de confiança quanto pelo Valor-p baixíssimo.

Esse tipo de teste é essencial em Data Science para garantir que as mudanças observadas em um produto ou serviço (como no caso da TechTaste) são estatisticamente significativas e não apenas flutuações aleatórias dos dados.

Como sugestão para seus próximos estudos, você pode explorar o Teste t de Student, que é utilizado quando o desvio padrão populacional é desconhecido e precisa ser estimado a partir da própria amostra.

Espero que possa ter lhe ajudado!