Matlab Teste De Kolmogorov-Smirnov
-
21-12-2019 - |
Pergunta
Eu estou usando o MATLAB para análise de algumas neurociência dados, e eu fiz uma interspike intervalo de distribuição e ajuste exponencial para ele.Então, eu queria verificar este ajuste usando um teste de Kolmogorov-Smirnov com o MATLAB.
Os dados para o neurônio picos é apenas armazenados em um vetor de picos.O spikes
vector é um 111 por 1 vetor, onde cada entrada é um outro vetor.Cada entrada no thie spikes
vetor representa um julgamento.O número de picos em cada ensaio, varia.Por exemplo, spikes{1}
é um [1x116 double]
, o que significa que existem 116 pontos.O próximo tem 115 picos, em seguida, 108, etc.
Agora, eu entendo que o kstest no MATLAB leva um par de parâmetros.Você insere os dados na primeira, então eu peguei todos os interspike intervalos e criou uma linha de vetor alldiffs
que armazena todos os interspike intervalos.Eu quero definir meu CDF para que uma função exponencial ajuste:
test_cdf = [transpose(alldiffs), transpose(1-exp(-alldiffs*firingrate))];
Observe que o teórico exponencial (com o qual eu me encaixo os dados) é r*exp(-rt)
onde r
é a taxa de disparo.Eu recebo uma taxa de disparo em torno de 0,2.Agora, quando eu colocar todos juntos, eu corro o kstest:
[h,p] = kstest(alldiffs, 'CDF', test_cdf)
No entanto, o resultado é um valor de p na ordem de 1.4455e-126
.Eu tentei refazer o test_cdf
com outro dos métodos em Mathworks' documentação do website:
test_cdf = [transpose(alldiffs), cdf('exp', transpose(alldiffs), 1/firingrate)];
Isso dá a exata mesmo resultado!É o fit, simplesmente horrível?Eu não sei por que eu fico tão baixos valores de "p".Por favor, ajuda!
Eu ia postar uma imagem do ajuste, mas eu não tenho o suficiente reputação.
P. S.Se existe um lugar melhor para este post, deixe-me saber e eu vou repostar.
Solução
Aqui está um exemplo com dados falsos, e ainda uma outra forma de criar o CDF:
>> data = exprnd(.2, 100);
>> test_cdf = makedist('exp', 'mu', .2);
>> [h, p] = kstest(data, 'CDF', test_cdf)
h =
0
p =
0.3418
No entanto, por que você está fazendo um Teste KS?
Todos os modelos estão errados, alguns são úteis.
Nenhum neurônio é perfeitamente um processo de Poisson e com dados suficientes, você sempre terá uma significativamente não-exponencial ISI, como medido por um teste KS.Isso não significa que você não pode fazer a simplificar pressuposto de uma exponencial ISI, dependendo de quais os fenómenos que você está tentando modelo.