假设我有两个条件,“a”和“b”。一个神经元在“a”条件下平均以 40 个脉冲/秒 (Hz) 的速度放电,在“b”条件下以 80 个峰值/秒的速度放电。对条件“a”的响应呈现 20 次,条件“b”呈现 10 次,每次呈现时间为 1000 毫秒。
AB <- rbind(
ldply( 1:20,
function(trial) {
data.frame(
trial=trial,
cond=factor('a',c('a','b')),
spiketime = runif(40,0,1000))
}
), ldply(21:30,
function(trial) {
data.frame(
trial=trial,
cond=factor('b',c('a','b')),
spiketime = runif(80,0,1000))
}
)
)
可以绘制一个简单的直方图:
qplot(spiketime, data=AB, geom='line',stat='bin',y=..count..,
xlim=c(0,1000), colour=cond, binwidth=100,xlab='Milliseconds')
然而,这并没有在演示文稿中平均,因此,y 轴上的值大致相同。我想沿 y 轴绘制尖峰速率(尖峰/秒),这将表明条件“b”每秒引发大约两倍的尖峰。尖峰率不会随着演示数量的增加而增加,它只是变得不那么嘈杂。有没有办法在不预处理数据框 AB 的情况下做到这一点?
换句话说,我可以按照以下方式做一些事情:
qplot(spiketime, data=AB, geom='line',stat='bin',
y=..count../num_presentations*1000/binwidth, ylab='Spikes per second',
xlim=c(0,1000), colour=cond, binwidth=100,xlab='Milliseconds')
其中 num_presentations 对于条件 'a' 为 20,对于条件 'b' 为 10,而 1000/binwidth 只是一个常数以使单位正确?