1
resposta

Resultado z_test

Fala Pessoal, boa noite.

Fiquei com uma dúvida no teste z para a comparação de dois conjuntos de amostras.

No primerio teste, utilizando a função z_test direto, obtemos os seguintes valores:

print(ztest(notas.rating, notas1.rating))
zconfint(notas.rating, notas1.rating)

(-5.894327101501841, 3.762112778881965e-09)
(-0.5588219849631111, -0.2799245129192442)

Porém, quando utilizados o método summary, encontramos valores divergentes.

descr_todas_as_notas = DescrStatsW(notas.rating)
descr_toystory = DescrStatsW(notas1.rating)
comparacao = descr_todas_as_notas.get_compare(descr_toystory)
comparacao.summary(use_t=False)

Test for equality of means
                      coef         std err      z               P>|z|      [0.025   0.975]
subset #1     -0.1624   0.206       -0.788       0.430       -0.566   0.241 

No caso, tanto na utilização direta do z_test, quanto no método summary, o valor da estatística teste (z) e o intervalo de confiança não deveriam ser o mesmo, ou seja, -5.894 e -0.559 -0.280 respectivamente ?

1 resposta

Olá Rafael, tudo bem? Espero que sim!

Pode ser que você tenha alterado alguma parte do conjunto de dados no espaço entre um código e outro, já que ambos devem retornar o mesmo resultado.

O DescrStatsW faz uso da função ztest_ind para retornar o p-value e Z crítico e essa função por sua vez com os argumentos que foram utilizados, tem o mesmo resultado da função ztest.

A partir do arquivo ratings.csv, que pode ser obtido na Atividade 02: Preparando o Ambiente da primeira aula do curso, podemos seguir com os seguintes códigos:

import pandas as pd
import numpy as np

from statsmodels.stats.weightstats import ztest
from statsmodels.stats.weightstats import zconfint
from statsmodels.stats.weightstats import DescrStatsW

from statsmodels.stats import weightstats as sms

notas = pd.read_csv("ratings.csv")
notas1 = notas.query("movieId == 1")

print(ztest(notas.rating, notas1.rating))
print(sms.CompareMeans.from_data(notas.rating, notas1.rating).ztest_ind())
print(zconfint(notas.rating, notas1.rating))

descr_todas_as_notas = DescrStatsW(notas.rating)
descr_toystory = DescrStatsW(notas1.rating)
comparacao = descr_todas_as_notas.get_compare(descr_toystory)
comparacao.summary()

O código anterior retorna os seguintes resultados:

(-5.894327101501841, 3.762112778881965e-09)
(-5.894327101501853, 3.762112778881702e-09)
(-0.5588219849631111, -0.2799245129192442)
coefstd errtP>|t|[0.0250.975]
subset #1-0.41940.071-5.8940.000-0.559-0.280

Repare que a utilização do ztest e o ztest_ind retornam o mesmo resultado, assim como o summary().

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software