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

Finding conditional and joint probabilities from a simulation

考虑具有状态 space S = {1, 2} 和转移矩阵

的马尔可夫链

和初始分布 α = (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
}

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

> 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(X1 = 1, X3 = 1)

  2. P(X5 = 2 | X0 = 1, X2 = 1)

  3. E(X2)

我试过如下:

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

(2) 是什么?我对其余部分是否正确?

请解释您的回复。

关于 1 你几乎是正确的:使用 &&& 是有区别的,见

?`&&`

应该是

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

然后2由

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

在条件事件 {X0 = 1, X2 = 的情况下,您可能会得到 NaN 1} 没有出现在您的模拟中。

最后,第3点是

mean(sim[1 + 2, ])

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

  1. 利用问题结构,状态2是吸收状态。 X1=1X3=1[= 的唯一方法57=] 是如果它从 1 开始,并且在每个中间步骤中,它一直访问状态 1。因此,答案是 (0.5)4=0.0625.

在模拟方面,而不是

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

应该是

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

&& 只检查第一个组件。

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

P(X5=2|X0=1, X2=1)=P(X5=2,X0=1,X2=1)/P(X0=1, X2=1)

其中你可以先分别估算出分子和分母,然后计算比值。

或者,P(X5=2|X0=1, X 2=1)=P(X5=2| X2=1)=P(X3=2| X0=1)

  1. 对于第三题,E(X2)是一个单数,不是向量。可以通过mean(sim[3,])
  2. 来估算