MATLAB KOLMOGOROV-SMIRNOV TEST.
-
21-12-2019 - |
質問
私はMATLABを使っていくつかの神経科学データを分析し、私はインター間隔分布を作り、それに指数関数的にフィットしました。それから、私はMATLABを使ったKolmogorov-Smirnovテストを使ってこのフィット感をチェックしたいと思いました。
ニューロンスパイクのデータは、スパイクのベクトルに格納されています。 spikes
ベクトルは111ベクトルで、各エントリは別のベクトルです。 spikes
ベクトルの各エントリは試行を表します。各試行におけるスパイクの数は異なります。たとえば、spikes{1}
は[1x116 double]
です。つまり、116のスパイクがあります。次は115のスパイク、その後108などがあります。
今、私はMATLABのKSTESTがいくつかのパラメータを取ります。最初のものにデータを入力するため、すべてのインタースパイク間隔を取り、すべてのインタースパイク間隔を保存する行ベクトルalldiffs
を作成しました。 CDFを指数関数に適したものに設定します。
test_cdf = [transpose(alldiffs), transpose(1-exp(-alldiffs*firingrate))];
.
(データに合う)理論的指数関数は、r*exp(-rt)
が発射レートであるr
です。私は約0.2の焼成速度を取得します。さて、私がこれをすべて一緒に置くとき、私はkstestを実行します:
[h,p] = kstest(alldiffs, 'CDF', test_cdf)
.
しかしながら、結果は1.4455e-126
順にp値です。 MathWorksのWebサイトのマニュアルに関する方法の別の方法でtest_cdf
をやり直してみました:
test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];
.
これはまったく同じ結果を与えます!フィットは恐ろしいですか?私はそのような低いp値を取得する理由がわかりません。助けてください!
私はフィットのイメージを投稿しますが、私は十分な評判がありません。
p.S。これを投稿するためのより良い場所があるならば、私に知らせて私は再投稿します。
解決
これは偽のデータとCDFを作成するためのもう1つの方法を備えた例です。
>> data = exprnd(.2, 100);
>> test_cdf = makedist('exp', 'mu', .2);
>> [h, p] = kstest(data, 'CDF', test_cdf)
h =
0
p =
0.3418
.
しかし、なぜあなたはKSテストをしているのですか?
すべてのモデルが間違っている、いくつかは便利です。
NOURONは Perfectly Poissonプロセスと十分なデータで、KSテストによって測定されているように、必ずしも非指数関数的なISIを持つことができます。それはあなたがモデルモデルを試している現象に応じて、指数ISIの単純化されることができないという意味ではありません。