2017-10-11 5 views
2

Il est facile d'appeler le test KS Python de Matlab:
Appel Python de Matlab 2017 avec des options

foo = py.scipy.stats.ks_2samp(rand(1,50),rand(1,70)); 

Mais quand je l'appelle Anderson-Darling test de k-échantillon de cette façon je reçois une erreur:

bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70)); 
"Python Error: AxisError: axis -1 is out of bounds for array of dimension 0" 

et de cette façon les résultats dans une autre erreur (ici, je suis en train de mettre midrank = false, pensant que peut-être la cause de l'erreur précédente)

bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),false); 
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),'false'); 
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),'midrank=false'); 
"Python Error: TypeError: anderson_ksamp() takes from 1 to 2 positional arguments but 3 were given" 

J'ai lu https://docs.scipy.org/doc/scipy/reference/stats.html ainsi que d'anciennes questions sur l'appel de Python à partir de Matlab, mais les anciennes questions ne s'appliquent pas à l'API actuelle.

Question 1: Comment appeler anderson_ksamp dans MATLAB?
Question 2: Comment changer le niveau de signification de ce test?

Répondre

1

Vous avez des arguments de fonction incorrects.

ks_2sampexpects de recevoir deux vecteurs de variables, donc vous y êtes bien.

anderson_ksampexpects pour recevoir une série de vecteurs:

scipy.stats.anderson_ksamp (samples, midrank=True)

samples : sequence of 1-D array_like

Array of sample data in arrays.

Donc, vous devez créer un réseau de cellules où chaque cellule est un vecteur d'échantillons, et le transmettre comme premier argument, puisque votre les échantillons pourraient avoir des dimensions différentes.

Si vous voulez tester que deux vecteurs proviennent de la même distribution, vous devez utiliser le test anderson, qui est très similaire au test de Kolmogorov-Smirnov 2. Il suffit de concaténer les valeurs et de les envoyer en un seul vecteur. En ce qui concerne les niveaux de signification, vous ne pouvez pas les modifier. Ils sont prédéfinis et calculés (au moins) pour des niveaux de 10%, 5%, 2,5% et 1%. C'est suffisant pour n'importe quel but pratique.