Matlab Kolmogorov-Smirnov试验

Matlab Kolmogorov-Smirnov试验,matlab,exponential,cdf,goodness-of-fit,Matlab,Exponential,Cdf,Goodness Of Fit,我正在用MATLAB分析一些神经科学数据,我做了一个脉冲间隔分布,并拟合了一个指数。然后,我想用MATLAB的Kolmogorov-Smirnov测试来检查这个拟合 神经元尖峰的数据只存储在一个尖峰向量中。spikes向量是一个111×1的向量,其中每个条目都是另一个向量。该向量中的每个条目代表一次试验。每次试验中的峰值数量各不相同。例如,尖峰{1}是一个[1x116双精度],意味着有116个尖峰。接下来是115个尖峰,然后是108个,以此类推 现在,我知道MATLAB中的kstest需要几个参

我正在用MATLAB分析一些神经科学数据,我做了一个脉冲间隔分布,并拟合了一个指数。然后,我想用MATLAB的Kolmogorov-Smirnov测试来检查这个拟合

神经元尖峰的数据只存储在一个尖峰向量中。
spikes
向量是一个111×1的向量,其中每个条目都是另一个向量。该向量中的每个条目代表一次试验。每次试验中的峰值数量各不相同。例如,
尖峰{1}
是一个
[1x116双精度]
,意味着有116个尖峰。接下来是115个尖峰,然后是108个,以此类推

现在,我知道MATLAB中的kstest需要几个参数。您在第一个窗口中输入数据,因此我获取了所有的行程间隔,并创建了一个行向量
alldiff
,它存储了所有的行程间隔。我想将CDF设置为指数函数拟合:

test_cdf = [transpose(alldiffs), transpose(1-exp(-alldiffs*firingrate))];
注意,理论指数(我用它拟合数据)是
r*exp(-rt)
,其中
r
是点火率。我的射击速度大约是0.2。现在,当我把这些放在一起时,我运行kstest:

[h,p] = kstest(alldiffs, 'CDF', test_cdf)
但是,结果是p值的顺序为
1.4455e-126
。我已经尝试使用Mathworks网站文档中的另一种方法重新进行了
测试\u cdf

test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];
这给出了完全相同的结果!是不是太糟糕了?我不知道为什么我的p值这么低。请帮忙

我会贴一张fit的照片,但我没有足够的声誉


另外,如果有更好的地方发布,请告诉我,我会重新发布。

这里有一个假数据示例,还有另一种创建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的假设。

谢谢!我明白你的意思。我用KS测试来观察不同的神经元,看看它们是否在IID与指数的相似程度(或者神经元放电与泊松过程的相似程度)上存在显著差异,但这是有意义的。也许我需要一个不太敏感的测试,或者我可以用KS测试的P值来比较。