2

我正在使用 MATLAB 分析一些神经科学数据,并制作了一个 interspike 区间分布并对其进行指数拟合。然后,我想使用 MATLAB 的 Kolmogorov-Smirnov 测试来检查这种拟合。

神经元尖峰的数据只是存储在尖峰向量中。该spikes向量是一个 111 x 1 向量,其中每个条目是另一个向量。spikes向量中的每个条目代表一个试验。每次试验中的尖峰数量各不相同。例如,spikes{1}is a [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)

然而,结果是 ap 数量级的值1.4455e-126。我尝试test_cdf使用 Mathworks 网站文档中的另一种方法重做:

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

这给出了完全相同的结果!身材真的很可怕吗?我不知道为什么我得到如此低的 p 值。请帮忙!

我会发布适合的图像,但我没有足够的声誉。

PS如果有更好的地方发这个,请告诉我,我会重新发布。

4

1 回答 1

2

下面是一个包含假数据的示例,以及另一种创建 CDF 的方法:

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

h =

     0


p =

    0.3418

但是,您为什么要进行 KS 测试?

所有模型都是错误的,有些是有用的。

没有神经元是完美的泊松过程,如果有足够的数据,您将始终有一个显着的非指数 ISI,正如 KS 测试所测量的那样。这并不意味着您不能做出指数 ISI 的简化假设,具体取决于您尝试建模的现象。

于 2014-07-30T05:53:42.680 回答