Матлаб Тест Колмогорова-Смирнова
-
21-12-2019 - |
Вопрос
Я использую MATLAB для анализа некоторых нейробиологических данных, я построил распределение интервалов между спайками и подогнал к нему экспоненциальную зависимость.Затем я хотел проверить это соответствие с помощью теста Колмогорова-Смирнова в MATLAB.
Данные о спайках нейронов просто сохраняются в векторе спайков.А spikes
вектор — это вектор размером 111 на 1, где каждая запись представляет собой другой вектор.Каждая запись в thie spikes
вектор представляет собой испытание.Количество спайков в каждом испытании варьируется.Например, spikes{1}
это [1x116 double]
, что означает, что имеется 116 шипов.У следующего 115 шипов, затем 108 и т. д.
Теперь я понимаю, что kstest в MATLAB принимает пару параметров.Вы вводите данные в первый, поэтому я взял все интервалы между спайками и создал вектор-строку 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)
Однако результатом является значение p порядка 1.4455e-126
.Я попробовал переделать test_cdf
с другим методом из документации веб-сайта Mathworks:
test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];
Это дает точно такой же результат!Подгонка просто ужасная?Я не знаю, почему я получаю такие низкие значения p.Пожалуйста помоги!
Я бы разместил подходящее изображение, но у меня недостаточно репутации.
P.S.Если есть место получше, чтобы опубликовать это, дайте мне знать, и я сделаю репост.
Решение
Вот пример с поддельными данными и еще один способ создания 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, в зависимости от того, какое явление вы пытаетесь моделировать.