我在R中有一个离散的累积随机序列:
x<-cumsum(rnorm(100))
绘制时:
计算它穿过特定值的次数的最佳方法是什么;在这种情况下,-2?
答案 0 :(得分:3)
#sample data
set.seed(17)
x<-cumsum(rnorm(100))
我们可以通过减去我们的价值来计算十字架,并查看价值的符号从正面变为负面的频率
target <- 5
idx <- which(diff(sign(x-target))!=0)
print(paste("it crosses", length(idx), "times"))
以及突出显示交叉间隔的结果如何
plot(x, type="l")
abline(h=target, col="green")
abline(v=c(idx,idx+1), col=c("red","blue"), lty=2)
答案 1 :(得分:2)
set.seed(2)
x <- cumsum(rnorm(100))
plot(x, type = "l")
abline(h = 0)
使用rle
向量上的x>0
函数查找x大于某个值(在本例中为0)的次数。
length(rle(x > 0)$length) - 1
## [1] 6
答案 2 :(得分:0)
也许这会有所帮助。
x<-cumsum(rnorm(100))
l1 = x >= 5
n = length(x)
temp = cbind.data.frame(l1[-1], l1[-n])
colnames(temp) = c("l1", "l2")
temp$val = (temp$l1 +temp$l2)
sum(which(temp == 1))
这里的策略是创建逻辑和滞后的逻辑绑定 并找到两个逻辑不同的条目(穿过该行)。