1. 首页
  2. 自学中心
  3. 软件
  4. R

一个简单的马尔可夫链

在一个随机过程中,如果事件发生概率在t时刻所处的状态为已知时,它在t + 1时刻只与t时刻的状态有关,而与之前所处的状态无关,则称该过程具有马尔可夫性。

时间和状态都是离散的马尔可夫过程称为马尔可夫链。马尔可夫链在经济学,社会学,生命科学领域有着广泛的应用。这里举例说明。

例子: 姜华平、陈海泳对某城市2002年居民出行方式所占比例进行了调查。结果如下
公交车bus,自行车Bicycle,步行walk,其他other
19%, 14%, 56%, 11%

本时期各出行方式转移概率如下表(%)
bus    bicycle  walk  other
Bus      90      4      2     4
bicycle   7     86      1     6
walk      8      7     80     5
other    10      2      3     85

假设该城市居民每天出行总人数为468万人次,出行人数不变,各出行方式的转移概率也不变,
问题:
(1) 预测2006年该城市乘公交出行的人数
(2) 经历足够长的时间,求出行方式的比例是多少?

解:

## 分析:这是一个时间齐次马尔科夫过程,可根据转移矩阵的初始定义进行推断

## 第一问

## 根据题目写出转移矩阵

 

<- matrix(c(90, 4 , 2 , 4 ,

7 , 86, 1 , 6 ,

8 , 7 , 80, 5 ,

10, 2 , 3 , 85 )/100,

nrow = 4, ncol = 4, byrow = TRUE)

# 初始矩阵

<- matrix(c(19, 14, 56, 11)/100, nrow = 1, ncol = 4, byrow = TRUE)

 

## 下一年的概率应该为当年分配概率和转移矩阵的乘积

## 2003

p1 <- p%*%T

## 2004

p2 <- p1%*%T

## 2005

p3 <- p2%*%T

## 2006

p4 <- p3%*%T

 

## 2006年乘坐公交车出行的总人数应为

res <- 468 * p4[1]

 

## 第二问,用计算机模拟的方法,通过对转移矩阵的平衡状态近似求解

## 初始化一个空向量

<- c()

 

## 假设一个人在初始时刻选择1公交车出行

s[1] <- 1

 

## 则其在t1时刻选择任何一种出行方式的概率如下

T[s[j1],]

 

## 但是他选择的出行方式可以是随机的,故用sample按照前一个状态的概率,随机抽取一次

res <- sample(1:4, size = 1, prob = T[s[j1],])

 

## 抽取的结果,就是t1时的状态

## 而 t2时的状态只受到t1时状态的影响,因此又回到T[s[j-1],],至此完成一次模拟

 

## 每一次抽样都是只受到前一次抽样的影响

for (in 2:50000)

s[j] <- sample(1:4, size = 1, prob = T[s[j1],])

 

## 在进行多次模拟后,马尔可夫链逐渐收敛。

 

### 模拟50000代的概率分配如下

res <- table(s[1:50000])/50000

names(res) <- c(“bus”, “bicycle”, “walk”, “other”)

 

## 题外

##### 无论假设s[1] = 1,2,3 还是4,进行多次模拟后,所得的结果是非常接近的。这也表明,马尔可夫过程的平衡状态与初始值无关。

本文引用地址:http://blog.sciencenet.cn/blog-255662-513722.html  此文来自科学网张金龙博客,转载请注明出处。

原创文章,作者:xsmile,如若转载,请注明出处:http://www.17bigdata.com/%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e9%a9%ac%e5%b0%94%e5%8f%af%e5%a4%ab%e9%93%be/

联系我们

在线咨询:点击这里给我发消息

邮件:23683716@qq.com

跳至工具栏