Matlab Test De Kolmogorov-Smirnov
-
21-12-2019 - |
Question
Je suis l'aide de MATLAB pour analyser la neuroscience de données, et j'ai fait un intervalle entre pics de la distribution et de l'ajustement exponentiel à elle.Ensuite, j'ai voulu vérifier cela fit à l'aide d'un test de Kolmogorov-Smirnov avec MATLAB.
Les données pour le neurone pointes, c'est simplement stocké dans un vecteur de pointes.L' spikes
vecteur est un 111 de 1 vecteur, où chaque entrée est un autre vecteur.Chaque entrée de cette spikes
vecteur représente un essai.Le nombre de pointes dans chaque essai varie.Par exemple, spikes{1}
est un [1x116 double]
, signifiant, il y a 116 pointes.La prochaine a 115 pointes, puis 108, etc.
Maintenant, je comprends que le kstest dans MATLAB prend un couple de paramètres.Vous entrez les données dans la première, j'ai donc pris tous les intervalles entre pics et créé un vecteur ligne alldiffs
qui contient tous les intervalles entre pics.Je veux mettre mon CDF à celle d'une fonction exponentielle fit:
test_cdf = [transpose(alldiffs), transpose(1-exp(-alldiffs*firingrate))];
Notez que le théorique exponentielle (avec qui j'ai ajuster les données) est r*exp(-rt)
où r
est la cadence de tir.Je reçois une cadence de tir d'environ 0,2.Maintenant, quand j'ai mis tous ensemble, je lance le kstest:
[h,p] = kstest(alldiffs, 'CDF', test_cdf)
Toutefois, le résultat est une valeur p de l'ordre de 1.4455e-126
.J'ai essayé de refaire la test_cdf
avec l'autre des méthodes sur Mathworks le site de la documentation:
test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];
Cela donne exactement le même résultat!L'approximation est juste horrible?Je ne sais pas pourquoi je reçois ces faibles valeurs de p.S'il vous plaît aider!
Je voudrais poster une image de la forme, mais je n'ai pas assez de réputation.
P. S.Si il y a un meilleur endroit pour poster cela, laissez-moi savoir et je vais reposter.
La solution
Voici un exemple avec des données fausses et encore une autre façon de créer de la CDF:
>> data = exprnd(.2, 100);
>> test_cdf = makedist('exp', 'mu', .2);
>> [h, p] = kstest(data, 'CDF', test_cdf)
h =
0
p =
0.3418
Cependant, pourquoi tu fais un Test KS?
Tous les modèles sont faux, certains sont utiles.
Aucun neurone est parfaitement un processus de Poisson et avec suffisamment de données, vous aurez toujours une manière significative non-exponentielle de l'ISI, telle que mesurée par un test KS.Cela ne signifie pas que vous ne pouvez pas faire l'hypothèse simplificatrice d'une exponentielle de l'ISI, en fonction de ce que les phénomènes que vous essayez de modèle.