質問

私は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の単純化されることができないという意味ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top