Frage

Ich verwende MATLAB, um einige neurowissenschaftliche Daten zu analysieren, habe eine Interspike-Intervallverteilung erstellt und eine Exponentialverteilung daran angepasst.Dann wollte ich diese Passung mithilfe eines Kolmogorov-Smirnov-Tests mit MATLAB überprüfen.

Die Daten für die Neuronenspitzen werden einfach in einem Spitzenvektor gespeichert.Der spikes Der Vektor ist ein 111 x 1 großer Vektor, wobei jeder Eintrag ein anderer Vektor ist.Jeder Eintrag in thie spikes Der Vektor stellt einen Versuch dar.Die Anzahl der Spitzen in jedem Versuch variiert.Zum Beispiel, spikes{1} ist ein [1x116 double], was bedeutet, dass es 116 Spitzen gibt.Der nächste hat 115 Spitzen, dann 108 usw.

Jetzt verstehe ich, dass der kstest in MATLAB ein paar Parameter benötigt.Sie geben die Daten im ersten Feld ein, also habe ich alle Intervalle zwischen den Spitzen genommen und einen Zeilenvektor erstellt alldiffs Hier werden alle Interspike-Abstände gespeichert.Ich möchte meine CDF für eine Exponentialfunktionsanpassung darauf einstellen:

test_cdf = [transpose(alldiffs), transpose(1-exp(-alldiffs*firingrate))];

Beachten Sie, dass die theoretische Exponentialfunktion (mit der ich die Daten anpasse) ist r*exp(-rt) Wo r ist die Feuerrate.Ich erhalte eine Feuerrate von etwa 0,2.Wenn ich das jetzt alles zusammenstelle, führe ich den kstest aus:

[h,p] = kstest(alldiffs, 'CDF', test_cdf)

Das Ergebnis ist jedoch ein p-Wert in der Größenordnung von 1.4455e-126.Ich habe versucht, das zu wiederholen test_cdf mit einer anderen Methode in der Website-Dokumentation von Mathworks:

test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];

Das ergibt genau das gleiche Ergebnis!Ist die Passform einfach schrecklich?Ich weiß nicht, warum ich so niedrige p-Werte bekomme.Bitte helfen Sie!

Ich würde ein Bild der Passform posten, aber mein Ruf reicht nicht aus.

P.S.Wenn es einen besseren Ort gibt, um dies zu posten, lassen Sie es mich wissen und ich werde es erneut veröffentlichen.

War es hilfreich?

Lösung

Hier ist ein Beispiel mit gefälschten Daten und einer weiteren Möglichkeit, das CDF zu erstellen:

>> data = exprnd(.2, 100);
>> test_cdf = makedist('exp', 'mu', .2);
>> [h, p] = kstest(data, 'CDF', test_cdf)

h =

     0


p =

    0.3418

Warum machen Sie jedoch einen KS-Test?

Alle Modelle sind falsch, einige sind nützlich.

Kein Neuron ist perfekt Ein Poisson-Prozess und mit genügend Daten erhalten Sie immer einen signifikant nicht-exponentiellen ISI, gemessen durch einen KS-Test.Das bedeutet nicht, dass Sie nicht die vereinfachende Annahme eines exponentiellen ISI treffen können, je nachdem, welche Phänomene Sie modellieren möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top