Como realizar um teste kolmogorov-smirnov em python


O teste Kolmogorov-Smirnov é usado para testar se uma amostra vem ou não de uma determinada distribuição.

Para realizar um teste Kolmogorov-Smirnov em Python, podemos usar scipy.stats.kstest() para um teste de uma amostra ou scipy.stats.ks_2samp() para um teste de duas amostras.

Este tutorial mostra um exemplo de como usar cada função na prática.

Exemplo 1: Uma amostra de teste Kolmogorov-Smirnov

Suponha que tenhamos os seguintes dados de amostra:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

O código a seguir mostra como realizar um teste de Kolmogorov-Smirnov nesta amostra de 100 valores de dados para determinar se eles vêm de uma distribuição normal:

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

A partir do resultado, podemos ver que a estatística de teste é 0,9072 e o valor p correspondente é 1,0908e-103 . Como o valor p é inferior a 0,05, rejeitamos a hipótese nula. Temos evidências suficientes para dizer que os dados da amostra não provêm de uma distribuição normal.

Este resultado também não deve surpreender, já que geramos os dados amostrais utilizando a função Poisson() , que gera valores aleatórios que seguem uma distribuição de Poisson .

Exemplo 2: Teste de Kolmogorov-Smirnov de duas amostras

Digamos que temos os dois conjuntos de dados de amostra a seguir:

 from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal

#set seed (eg make this example reproducible)
seed(0)

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

O código a seguir mostra como realizar um teste de Kolmogorov-Smirnov nessas duas amostras para determinar se elas vêm da mesma distribuição:

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

A partir do resultado, podemos ver que a estatística de teste é 0,99 e o valor p correspondente é 4,4175e-57 . Como o valor p é inferior a 0,05, rejeitamos a hipótese nula. Temos evidências suficientes para dizer que os dois conjuntos de dados de amostra não pertencem à mesma distribuição.

Este resultado também não deve surpreender, uma vez que geramos valores para a primeira amostra usando a distribuição normal padrão e valores para a segunda amostra usando a distribuição lognormal.

Recursos adicionais

Como realizar um teste Shapiro-Wilk em Python
Como realizar um teste Anderson-Darling em Python

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *