Je n'arrive pas à comprendre comment faire un test sur deux échantillons KS dans Scipy.
Après avoir lu la documentation scipy kstest
Je peux voir comment tester où une distribution est identique à la distribution normale standard
from scipy.stats import kstest
import numpy as np
x = np.random.normal(0,1,1000)
test_stat = kstest(x, 'norm')
#>>> test_stat
#(0.021080234718821145, 0.76584491300591395)
Ce qui signifie qu'à une valeur de 0,76, nous ne pouvons pas rejeter l'hypothèse nulle selon laquelle les deux distributions sont identiques.
Cependant, je veux comparer deux distributions et voir si je peux rejeter l'hypothèse nulle qu'elles sont identiques, quelque chose comme:
from scipy.stats import kstest
import numpy as np
x = np.random.normal(0,1,1000)
z = np.random.normal(1.1,0.9, 1000)
et tester si x et z sont identiques
J'ai essayé le naïf:
test_stat = kstest(x, z)
et a obtenu l'erreur suivante:
TypeError: 'numpy.ndarray' object is not callable
Existe-t-il un moyen de faire un test à deux échantillons KS en Python? Si oui, comment devrais-je le faire?
Merci d'avance
Vous utilisez le test à un échantillon KS. Vous voulez probablement ks_2samp :
>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>>
>>> np.random.seed(12345678)
>>> x = np.random.normal(0, 1, 1000)
>>> y = np.random.normal(0, 1, 1000)
>>> z = np.random.normal(1.1, 0.9, 1000)
>>>
>>> ks_2samp(x, y)
Ks_2sampResult(statistic=0.022999999999999909, pvalue=0.95189016804849647)
>>> ks_2samp(x, z)
Ks_2sampResult(statistic=0.41800000000000004, pvalue=3.7081494119242173e-77)
Voici ce que disent les scipy docs:
Si la statistique K-S est petite ou la valeur p élevée, nous ne pouvons pas rejeter l'hypothèse selon laquelle les distributions des deux échantillons sont identiques.
Ne pas rejeter ne signifie pas que nous confirmons.