数据科学与R语言数据-R语言-图表-决策-Linux-PythonR语言小技能

随机过程

2019-01-22  本文已影响17人  Liam_ml

概率,统计学是一门非常有意思的学科,概率的起源从赌博开始的,后面慢慢发展出来了随机过程,鞅论等等。

概率的很多东西和我们的直观感受是有区别的。这里展示一个简单的随机过程的例子。

有四个顶点(0,0),(1,0),(0,1),(1,1)我们从任意一个点开始,向其他几个点移动,向对角线移动的概率是p,向两边移动的概率是(1-p)/2.

问题是从(0,0)点开始,移动n次,重新回到(0,0)点的概率是多少?

答案是:p=1的时候 ,回到原点的概率是0.5,其他的时候概率是0.25

模拟

sims <- function(Start='(0,0)',n=100,p=0.5,H=c('(0,0)','(1,1)')){
  vertex <- c('(0,0)','(1,0)','(1,1)','(0,1)') 
  path <- 0
  path[1] <- Start
  for (i in 2:n) {
    print(i)
    if(path[i-1]=='(0,0)'){
      path[i] = sample(c('(1,1)','(1,0)','(0,1)'),prob = c(1-p,p/2,p/2),size = 1)
    }else if(path[i-1]=='(1,1)'){
      path[i] = sample(c('(0,0)','(1,0)','(0,1)'),prob = c(1-p,p/2,p/2),size = 1)
    }else if(path[i-1]=='(1,0)'){
      path[i] = sample(c('(0,1)','(0,0)','(1,1)'),prob = c(1-p,p/2,p/2),size = 1)
    }else if(path[i-1]=='(0,1)'){
      path[i] = sample(c('(1,0)','(0,0)','(1,1)'),prob = c(1-p,p/2,p/2),size = 1)
    }
  }
  
  
  result <- sum(path %in% H)/n
  return(list(path,result))
}   
 

result <- simu(Start = '(0,0)',n = 10000,p = 0.1,H = '(0,0)')
table(result[[1]])


table(result[[1]])/sum(table(result[[1]]))

 (0,0)  (0,1)  (1,0)  (1,1) 
0.2510 0.2492 0.2499 0.2499 

可以看出,从任何一点开始,经过n次,到达任意一点的概率都是0.25

有意思吧

学一学高等概率论与随机过程

上一篇下一篇

猜你喜欢

热点阅读