一个简单的马尔可夫链
在一个随机过程中,如果事件发生概率在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) 经历足够长的时间,求出行方式的比例是多少?
解:
## 分析:这是一个时间齐次马尔科夫过程,可根据转移矩阵的初始定义进行推断
## 第一问
## 根据题目写出转移矩阵
T <- 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)
# 初始矩阵
p <- 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]
## 第二问,用计算机模拟的方法,通过对转移矩阵的平衡状态近似求解
## 初始化一个空向量
s <- c()
## 假设一个人在初始时刻选择1公交车出行
s[1] <- 1
## 则其在t1时刻选择任何一种出行方式的概率如下
T[s[j-1],]
## 但是他选择的出行方式可以是随机的,故用sample按照前一个状态的概率,随机抽取一次
res <- sample(1:4, size = 1, prob = T[s[j-1],])
## 抽取的结果,就是t1时的状态
## 而 t2时的状态只受到t1时状态的影响,因此又回到T[s[j-1],],至此完成一次模拟
## 每一次抽样都是只受到前一次抽样的影响
for (j in 2:50000)
s[j] <- sample(1:4, size = 1, prob = T[s[j-1],])
## 在进行多次模拟后,马尔可夫链逐渐收敛。
### 模拟50000代的概率分配如下
res <- table(s[1:50000])/50000
names(res) <- c("bus", "bicycle", "walk", "other")
## 题外
##### 无论假设s[1] = 1,2,3 还是4,进行多次模拟后,所得的结果是非常接近的。这也表明,马尔可夫过程的平衡状态与初始值无关。
在一个随机过程中,如果事件发生概率在t时刻所处的状态为已知时,它在t + 1时刻只与t时刻的状态有关,而与之前所处的状态无关,则称该过程具有马尔可夫性。
时间和状态都是离散的马尔可夫过程称为马尔可夫链。马尔可夫链在经济学,社会学,生命科学领域有着广泛的应用。这里举例说明。
例子: 姜华平、陈海泳对某城市2002年居民出行方式所占比例进行了调查。结果如下
公交车bus,自行车Bicycle,步行walk,其他other
19%, 14%, 56%, 11%
本时期各出行方式转移概率如下表(%)
Bus
bicycle
walk
other
假设该城市居民每天出行总人数为468万人次,出行人数不变,各出行方式的转移概率也不变,
问题:
(1) 预测2006年该城市乘公交出行的人数
(2) 经历足够长的时间,求出行方式的比例是多少?
解:
## 分析:这是一个时间齐次马尔科夫过程,可根据转移矩阵的初始定义进行推断
## 第一问
## 根据题目写出转移矩阵
T <-
# 初始矩阵
p <-
## 下一年的概率应该为当年分配概率和转移矩阵的乘积
## 2003
p1 <- p%*%T
## 2004
p2 <- p1%*%T
## 2005
p3 <- p2%*%T
## 2006
p4 <- p3%*%T
## 2006年乘坐公交车出行的总人数应为
res <-
## 第二问,用计算机模拟的方法,通过对转移矩阵的平衡状态近似求解
## 初始化一个空向量
s <-
## 假设一个人在初始时刻选择1公交车出行
s[1] <- 1
## 则其在t1时刻选择任何一种出行方式的概率如下
T[s[j-1],]
## 但是他选择的出行方式可以是随机的,故用sample按照前一个状态的概率,随机抽取一次
## 抽取的结果,就是t1时的状态
## 而 t2时的状态只受到t1时状态的影响,因此又回到T[s[j-1],],至此完成一次模拟
## 每一次抽样都是只受到前一次抽样的影响
for
## 在进行多次模拟后,马尔可夫链逐渐收敛。
### 模拟50000代的概率分配如下
res <-
names(res) <-
## 题外
##### 无论假设s[1] = 1,2,3 还是4,进行多次模拟后,所得的结果是非常接近的。这也表明,马尔可夫过程的平衡状态与初始值无关。