如何在R中绘制一个指数分布的尖峰时间直方图?

5

接下来的问题是基于我上一个问题的发展。我一直在尝试将脉冲时刻作为一个脉冲列的rastor图进行处理。我使用了100的发射率并得到了20次试验的脉冲列:代码如下:

fr = 100
dt = 1/1000 #dt in milisecond
duration = 2 #no of duration in s
nBins = 2000 #SpikeTrain
nTrials = 20 #NumberOfSimulations
MyPoissonSpikeTrain = function(p, fr= 100) {
  p = runif(nBins)
  q = ifelse(p < fr*dt, 1, 0)
  return(q)
}

set.seed(1)
SpikeMat <- t(replicate(nTrials, MyPoissonSpikeTrain()))

plot(x=-1,y=-1, xlab="time (s)", ylab="Trial",
main="Spike trains",
ylim=c(0.5, nTrials+1), xlim=c(0, duration))
for (i in 1: nTrials)
{
  clip(x1 = 0, x2= duration, y1= (i-0.2), y2= (i+0.4))
  abline(h=i, lwd= 1/4)
  abline(v= dt*which( SpikeMat[i,]== 1))
}

这将得到结果: Spike Trains 完成上述步骤后,我的下一个任务是获得一个间隔时间的向量,并对其进行直方图分析。由于ISI的分布遵循指数分布,如果我使用相同的数据绘制ISI的指数分布,它将与直方图高度形成的曲线匹配。 因此,要先获得间隔时间,我使用了以下方法:
spike_times <- c(dt*which( SpikeMat[i, ]==1))

接下来,为了获取间突间隔及其直方图的向量,我使用了以下命令行:

ISI <- diff(spike_times)
hist(ISI, density= 10, col= 'blue', xlab='ISI(ms)', ylab='number of occurences')

它给了我这个图形:

HistogramsofISIs

现在,我的要求是在直方图中绘制指数分布,以证明间突触间隔的指数分布性质。我对使用哪些参数和速率感到困惑。如果有人处理过间突触间隔图,请帮忙解决问题。如果我的数据似乎不完整,请告诉我是否缺少什么。


1
欢迎来到SO。这是一个对于新用户来说非常好的问题!太棒了 :) - Neuron
@RTomar,你可以将其发布为答案。 - hpesoj626
1个回答

3

我的研究同事刚刚告诉我一行简单的代码:

x <- seq(0, 0.05, length=1000)
y <- dexp(x, rate=100)
lines(x,y)

这给我带来了这个: HistogramWithExpoDis 如果有人能够让这个过程更加高效,请帮帮我。

1
我甚至不知道那个 :) - Neuron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接