我正在使用 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如果有更好的地方发这个,请告诉我,我会重新发布。