- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑具有状态空间 S = {1, 2, 3, 4}
和转移矩阵的马尔可夫链
P = 0.1 0.2 0.4 0.3
0.4 0.0 0.4 0.2
0.3 0.3 0.0 0.4
0.2 0.1 0.4 0.3
并且,看一下以下源代码:
# markov function
markov <- function(init,mat,n,labels)
{
if (missing(labels))
{
labels <- 1:length(init)
}
simlist <- numeric(n+1)
states <- 1:length(init)
simlist[1] <- sample(states,1,prob=init)
for (i in 2:(n+1))
{
simlist[i] <- sample(states, 1, prob = mat[simlist[i-1],])
}
labels[simlist]
}
# matrixpower function
matrixpower <- function(mat,k)
{
if (k == 0) return (diag(dim(mat)[1]))
if (k == 1) return(mat)
if (k > 1) return( mat %*% matrixpower(mat, k-1))
}
tmat = matrix(c(0.1, 0.2, 0.4, 0.3,
0.4, 0.0, 0.4, 0.2,
0.3, 0.3, 0.0, 0.4,
0.2, 0.1, 0.4, 0.3), nrow=4, ncol=4, byrow=TRUE)
p10 = matrixpower(mat = tmat, k=10)
rowMeans(p10)
nn <- 10
alpha <- c(0.25, 0.25, 0.25, 0.25)
set.seed(1)
steps <- markov(init=alpha, mat=tmat, n=nn)
table(steps)/(nn + 1)
输出
> rowMeans(p10)
[1] 0.25 0.25 0.25 0.25
>
.
.
.
> table(steps)/(nn + 1)
steps
1 2 3 4
0.09090909 0.18181818 0.18181818 0.54545455
> ?rowMeans
为什么结果如此不同?
在计算Pn时,使用matrixpower()
和markov()
有什么区别?
最佳答案
目前您正在比较完全不同的事物。首先,我不会关注计算 Pn,而是关注 A*Pn,其中 A 是初始分布。在这种情况下matrixpower
做的工作:
p10 <- matrixpower(mat = tmat, k = 10)
alpha <- c(0.25, 0.25, 0.25, 0.25)
alpha %*% p10
# [,1] [,2] [,3] [,4]
# [1,] 0.2376945 0.1644685 0.2857105 0.3121265
这些分别是 10 个步骤后(在使用 A 进行初始抽签之后)处于状态 1、2、3、4 的真实概率。
同时,markov(init = alpha, mat = tmat, n = nn)
只是长度nn + 1
的单个实现并且只有该实现的最后一个数字与 A*Pn 相关。因此,为了尝试获得与理论值相似的数字,我们需要对nn <- 10
进行许多实现。 ,如
table(replicate(markov(init = alpha, mat = tmat, n = nn)[nn + 1], n = 10000)) / 10000
#
# 1 2 3 4
# 0.2346 0.1663 0.2814 0.3177
其中我模拟了 10000 个实现,并且仅采用每个实现的最后状态。
关于r - 在计算 P^n 时,matrixpower() 和 markov() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56079265/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
马尔可夫链如何工作?我已经阅读了 Markov Chain 的维基百科,但我没有得到的是无内存。无内存指出: The next state depends only on the current st
马尔可夫链模型和隐马尔可夫模型有什么区别?我读过维基百科,但无法理解其中的差异。 最佳答案 为了通过示例进行解释,我将使用自然语言处理的示例。假设您想知道这句话的概率: 我喜欢咖啡 在马尔可夫模型中,
我的第 2 个作业是 C++ 类,其中包括马尔可夫链。任务很简单,但我无法弄清楚从文件中读取字符时什么是最佳实现。 我有一个大约 300k 的文件。分配的规则之一是使用 Map 和 Vector 类。
我正在学习 Clojure 并从复制 Python 程序的功能开始,该程序将通过遵循(非常简单的)隐马尔可夫模型来创建基因组序列。 一开始,我坚持使用我已知的串行编程方式并大量使用 def 关键字,从
假设有一系列观察结果,例如[1,2,3,5,5,5,2,3,2,3, ..., 3, 4]。我正在尝试使用 Scikit-learn 中 HMM 的当前实现来预测该观察序列的下一个值。我对此有两个问题
最近偶然发现this article ,我想知道你从循环神经网络得到的结果之间有什么区别,就像上面描述的那样,和一个简单的马尔可夫链会是什么。 我不太了解 RNN 底层发生的线性代数,但似乎您基本上只
我已经阅读了很多关于 Markov Decision Processes (using value iteration) 的内容最近,但我根本无法理解它们。我在互联网/书籍上找到了很多资源,但它们都使
我在理解 Baum-Welch 算法的工作原理时遇到了一些问题。我读到它调整了 HMM 的参数(转换和发射概率),以最大化给定模型可以看到我的观察序列的概率。 但是,如果我有多个观察序列会发生什么?我
最近几天我一直在尝试转换 this js script到 python 代码。 到目前为止,我的实现(主要是盲目的 cp,一些小修复): import random class markov:
我试图了解 Hamilton 的 1989 年马尔可夫切换自回归模型。我试图用贝叶斯扭曲来重现结果。我使用 Eric Ma's tutorial about HMM's in PyMC3 编写了许多
考虑具有状态空间 S = {1, 2, 3, 4} 和转移矩阵的马尔可夫链 P = 0.1 0.2 0.4 0.3 0.4 0.0 0.4 0.2 0.3 0.3
我正在尝试估计 Hamilton (1989) 的基本马尔可夫切换模型,就像 E-views webpage 中的帖子一样。该模型本身就是 RATS 中现有模型的精确复制。 这是示例的时间序列: gn
我是一名优秀的程序员,十分优秀!