马尔可夫链中的转移概率不等于1

时间:2018-05-04 15:19:48

标签: r probability markov-chains

当描述转换的条件概率具有多个有效数字时,我对马尔可夫链内的转换有一点问题。例如,如果条件概率是:

eps_a <- 0.3 #    Pr(a leaves)
eps_b <- 0.4 #    Pr(b leaves)
gam_c <- 0.2 #    Pr(c arrives)
eps_b_a <- 0.4 #  Pr(b leaves | a)
gam_c_a <- 0.9 #  Pr(c arrives | a)
eps_a_b <- 0.2 #  Pr(a leaves | b)
gam_c_b <- 0.9 #  Pr(c arrives | b)
gam_c_ab <- 0.7 # Pr(c arrives | ab)

8种不同状态之间的转换是:

tm <- rep(0,8)
# Assuming AB was state in last time step
tm[1] <- eps_a * eps_b * (1 - gam_c) #----------------------|U
tm[2] <- (1 - eps_a) * eps_b_a * (1 - gam_c_a) #------------|A
tm[3] <- eps_a_b * (1 - eps_b) * (1 - gam_c_b) #------------|B
tm[4] <- eps_a * eps_b * gam_c #----------------------------|C
tm[5] <- (1 - eps_a_b) * (1 - eps_b_a) * (1 - gam_c_ab) #---|AB
tm[6] <- (1 - eps_a) * eps_b_a * gam_c_a #------------------|AC
tm[7] <- eps_a_b * (1 - eps_b) * gam_c_b #------------------|BC
tm[8] <- (1 - eps_a_b) * (1 - eps_b_a) * gam_c_ab #---------|ABC

然后tm总和为1。

sum(tm)
[1] 1

但是,如果条件概率具有更高有效位数(甚至更多),则转换概率不再总和为1.

eps_a <-     0.3216542
eps_b <-     0.4123442
gam_c <-     0.2145621
eps_b_a <-   0.4231564
gam_c_a <-   0.9943285
eps_a_b <-   0.2321542
gam_c_b <-   0.9978964
gam_c_ab <-  0.7777662

使用这些条件概率时,tm中的转换现在总和为0.9990323。使用其他数字,我发现它介于0.97和1.08之间。我认为它可能是一个下溢问题,但总结这些概率的日志并不能解决这个问题。

# Using the probabilities with more digits above.
tm_log <- rep(0,8)
tm_log[1] <- log(eps_a) + log(eps_b) + log((1 - gam_c)) #------------------|U
tm_log[2] <- log(1 - eps_a) + log(eps_b_a) + log(1 - gam_c_a) #------------|A
tm_log[3] <- log(eps_a_b) + log(1 - eps_b) + log(1 - gam_c_b) #------------|B
tm_log[4] <- log(eps_a) + log(eps_b) + log(gam_c) #------------------------|C
tm_log[5] <- log(1 - eps_a_b) + log(1 - eps_b_a) + log(1 - gam_c_ab) #-----|AB
tm_log[6] <- log(1 - eps_a) + log(eps_b_a) + log(gam_c_a) #----------------|AC
tm_log[7] <- log(eps_a_b) + log(1 - eps_b) + log(gam_c_b) #----------------|BC
tm_log[8] <- log(1 - eps_a_b) + log(1 - eps_b_a) + log(gam_c_ab) #---------|ABC
sum(exp(tm_log))
[1] 0.9990323

这让我相信我已经错误地编写了转换概率,或者还有其他一些我不知道的问题。我总是可以将其中一个转换计算为1减去所有其他转换的总和,这是解决这个问题的唯一方法吗?

0 个答案:

没有答案