从模拟中找到条件和联合概率

时间:2019-05-10 11:15:49

标签: r markov-chains markov

考虑状态空间 S = {1,2} 和转移矩阵的马尔可夫链

enter image description here

和初始分布α=(1/2,1/2)

假设,用于仿真的源代码如下:

alpha <- c(1, 1) / 2
mat <- matrix(c(1 / 2, 0, 1 / 2, 1), nrow = 2, ncol = 2) 

chainSim <- function(alpha, mat, n) 
{
  out <- numeric(n)
  out[1] <- sample(1:2, 1, prob = alpha)
  for(i in 2:n)
    out[i] <- sample(1:2, 1, prob = mat[out[i - 1], ])
  out
}

假设以下是重复10次的5步马尔可夫链模拟的结果:

> sim
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    2    1    1    2    2    2    1    1    1     2
[2,]    2    1    2    2    2    2    2    1    1     2
[3,]    2    1    2    2    2    2    2    1    2     2
[4,]    2    2    2    2    2    2    2    1    2     2
[5,]    2    2    2    2    2    2    2    2    2     2
[6,]    2    2    2    2    2    2    2    2    2     2

以下各项的值是什么?

  1. P(X 1 = 1,X 3 = 1)

  2. P(X 5 = 2 | X 0 = 1,X 2 = 1)

  3. E(X 2

我尝试了如下操作:

  1. mean(sim[4, ] == 1 && sim[2, ]== 1)
  2. c(1,2) * mean(sim[2, ])

会是(2)?我对其余的都正确吗?

请解释您的回答。

2 个答案:

答案 0 :(得分:1)

您对1几乎是正确的:使用&&还是&有所不同,请参见

?`&&`

应该是

mean(sim[1 + 1, ] == 1 & sim[1 + 3, ] == 1)

然后2由

给出
mean(sim[1 + 5, sim[1 + 0, ] == 1 & sim[1 + 2, ] == 1] == 2)

如果条件事件{X 0 = 1,X 2 = 1}中没有出现,您可能会得到NaN模拟。

最后,第3点是

mean(sim[1 + 2, ])

因为期望值的自然估计值只是样本平均值。

答案 1 :(得分:0)

  1. 利用问题结构,状态2为吸收状态。 X 1 = 1 X 3 = 1 的唯一方法是,如果它以1开头并且在每个中间步骤,它保持访问状态1。因此,答案为(0.5) 4 = 0.0625

在模拟方面,而不是

mean(sim[4, ] == 1 && sim[2, ]== 1

应该是

mean(sim[4, ] == 1 & sim[2, ]== 1

&&仅检查第一个组件。

  1. 对于第二部分,一种可能的方法是注意

P(X 5 = 2 | X 0 = 1,X 2 = 1)= P(X 5 = 2,X 0 = 1,X 2 = 1)/ P(X 0 = 1,X < sub> 2 = 1)

然后您可以首先分别估计分子和分母,然后计算比率。

或者, P(X 5 = 2 | X 0 = 1,X 2 = 1)= P(X 5 = 2 | X 2 = 1)= P(X 3 = 2 | X 0 = 1)

  1. 对于第三个问题, E(X 2 是单个数字,不是向量。可以通过mean(sim[3,])
  2. 进行估算