R 如何构建具有非负值的随机游动?

R 如何构建具有非负值的随机游动?,r,R,我想建立一个具有一定数量创新(例如10000)和非负值的随机游走 我试过: Value <- c(100) #initial Value n <- 10000 #number of innovations for(i in 1:(n-1)){ Value[i+1] <- Value[i] + rnorm(1) if(Value[i+1] < 0){ repeat{ Value[i+1] <- Value[i] + rnorm

我想建立一个具有一定数量创新(例如10000)和非负值的随机游走

我试过:

Value <- c(100) #initial Value 
n <- 10000      #number of innovations 

for(i in 1:(n-1)){
  Value[i+1] <- Value[i] + rnorm(1)
  
  if(Value[i+1] < 0){
  repeat{
    Value[i+1] <- Value[i] + rnorm(1)
  }
  if(Value[i+1] >0){
    break
  }
  }
}

Value您可以

for(i in 1:(n-1)){
    Value[i+1] <- Value[i] + abs(rnorm(1))}
for(i在1中:(n-1)){

值[i+1]您可以

for(i in 1:(n-1)){
    Value[i+1] <- Value[i] + abs(rnorm(1))}
for(i在1中:(n-1)){

值[i+1]我认为有几种选择。一种是将
重复
循环替换为
while
循环。如下所示:

Value <- c(100) #initial Value 
n <- 10000      #number of innovations 
for(i in 1:(n-1)){
  Value[i+1] <- Value[i] + rnorm(1)
  
  while(Value[i+1] < 0){
      Value[i+1] <- Value[i] + rnorm(1)
    }
}

我认为有几种选择。一种是用
while
循环替换
repeat
循环。如下所示:

Value <- c(100) #initial Value 
n <- 10000      #number of innovations 
for(i in 1:(n-1)){
  Value[i+1] <- Value[i] + rnorm(1)
  
  while(Value[i+1] < 0){
      Value[i+1] <- Value[i] + rnorm(1)
    }
}

不太详细的解决方案与最初的循环意图不一样。您好@Dason,您能详细谈谈您的意见吗?我检查了,唯一的区别是,更详细的答案是执行
rnorm
,直到它达到非负值,而不太详细的答案将
rnorm
的任何结果都转换为正值非负数的随机序列。原始值可以先增大后减小。不太详细的版本将始终增大,并且不可能减小。感谢@Dason的更正。我已删除了不太详细的解决方案!不太详细的解决方案与原始循环的意图不一样。嗨@Dason,你愿意尝试一下吗关于你的评论?我检查过了,唯一的区别是,更详细的答案是做
rnorm
,直到它达到一个非负值,而不太详细的转换为正值
rnorm
的任何结果都会得到一个随机的非负数序列。原始的可以增加,然后减少。不太详细的版本将始终增加,并且不可能减少。感谢@Dason的更正。我已删除了不太详细的解决方案!