1
resposta

Dúvida entre statsmodels.stats.weightstats.zconfint e scipy.norm.interval

Por quê as funções zconfint e norm.interval não geraram o mesmo resultado para o intervalo de confiança abaixo?

import pandas as pd
import numpy as np
from scipy.stats import norm
from statsmodels.stats.weightstats import zconfint
np.random.seed(0) ## Gera sempre o mesmo número aleatório
populacao = pd.Series(np.random.randint(2000, size=(800)))
desvio_padrao_populacional = populacao.std()

amostra = populacao.sample(n=400)
n_amostra = amostra.shape[0]

sigma_x = desvio_padrao_populacional/n_amostra
media_amostra = amostra.mean()

significancia = 0.05
confianca = 0.95
norm.interval(alpha=0.95,loc=media_amostra,scale=sigma_x)

(998.7867458833483, 1004.3582541166517)

zconfint(amostra)

(945.6874888730528, 1057.457511126947)

1 resposta

Olá, Rodolfo, tudo bem?

Quando calculamos o sigma_x, que seria o desvio padrão amostral, precisamos dividir o desvio padrão populacional pela raiz quadrada do tamanho da amostra (sigma_x = desvio_padrao_populacional/np.sqrt(n_amostra)).

Fórmula do desvio amostral em que é igual ao desvio padrão populacional dividido pela raiz do número de amostras da população.

Como você tem uma amostra da população de 400, se você tirar a raiz verá que o seu desvio padrão amostral será 20 vezes maior do que você calculou no seu código. E, portanto, terá um intervalo maior e muito próximo ao calculado pelo zconfint(amostra).

Espero que tenha respondido a sua pergunta.

Forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!