标签: markov-chains

MATLAB中的隐马尔可夫模型

我有11个状态和一个转移概率矩阵,但我没有排放,因为我的模型没有被隐藏.它只包含状态(1,2,3,...,11)
我想根据我的转移概率矩阵生成随机状态,但HMM工具箱需要一个发射概率矩阵.我该怎么办?

[seq, states] = hmmgenerate(100, Trans, Emis) 
Run Code Online (Sandbox Code Playgroud)

matlab markov-chains hidden-markov-models

6
推荐指数
1
解决办法
1万
查看次数

如何从马尔可夫链输出创建段落?

我想修改下面的脚本,以便它从脚本生成的随机数量的句子中创建段落.换句话说,在添加换行符之前连接一个随机数(如1-5)的句子.

脚本工作正常,但输出是由换行符分隔的短句.我想把一些句子收集成段落.

关于最佳实践的任何想法?谢谢.

"""
    from:  http://code.activestate.com/recipes/194364-the-markov-chain-algorithm/?in=lang-python
"""

import random;
import sys;

stopword = "\n" # Since we split on whitespace, this can never be a word
stopsentence = (".", "!", "?",) # Cause a "new sentence" if found at the end of a word
sentencesep  = "\n" #String used to seperate sentences


# GENERATE TABLE
w1 = stopword
w2 = stopword
table = {}

for line in sys.stdin:
    for word in line.split():
        if word[-1] in stopsentence:
            table.setdefault( (w1, w2), [] …
Run Code Online (Sandbox Code Playgroud)

python markov-chains

6
推荐指数
1
解决办法
1966
查看次数

R:产生混合物分布的功能

我需要从混合分布中生成样本

  • 40%的样本来自高斯(平均值= 2,sd = 8)

  • 20%的样本来自Cauchy(位置= 25,比例= 2)

  • 40%的样本来自高斯(平均值= 10,sd = 6)

为此,我写了以下函数:

dmix <- function(x){
prob <- (0.4 * dnorm(x,mean=2,sd=8)) + (0.2 * dcauchy(x,location=25,scale=2)) + (0.4 * dnorm(x,mean=10,sd=6))
return (prob)
}
Run Code Online (Sandbox Code Playgroud)

然后测试:

foo = seq(-5,5,by = 0.01)
vector = NULL
for (i in 1:1000){
vector[i] <- dmix(foo[i])
}
hist(vector)
Run Code Online (Sandbox Code Playgroud)

我得到这样的直方图(我知道这是错的) - 假定分布的直方图

我究竟做错了什么?谁能指点一下好吗?

r probability markov-chains mcmc mixture-model

6
推荐指数
1
解决办法
6589
查看次数

有向概率图 - 减少周期的算法?

考虑从第一个节点1到一些最终节点(没有更多的外边缘)遍历的有向图.图中的每条边都有与之相关的概率.总结将所有可能的最终节点返回的每条可能路径的概率1.(这意味着,我们保证最终到达最终节点之一.)

如果图中的循环不存在,问题将很简单.不幸的是,在图中可能出现相当复杂的循环,其可以遍历无限次(概率随着每次循环遍历而成倍增加,显然).

是否有通用算法来找到到达每个最终节点的概率?

一个特别令人讨厌的例子:

我们可以将边表示为矩阵(从行(节点)x到行(节点)的概率y在条目中(x,y))

{{0, 1/2, 0, 1/14, 1/14, 0, 5/14}, 
 {0, 0, 1/9, 1/2, 0, 7/18, 0}, 
 {1/8, 7/16, 0, 3/16, 1/8, 0, 1/8}, 
 {0, 1, 0, 0, 0, 0, 0}, 
 {0, 0, 0, 0, 0, 0, 0}, 
 {0, 0, 0, 0, 0, 0, 0}, 
 {0, 0, 0, 0, 0, 0, 0}}
Run Code Online (Sandbox Code Playgroud)

或者作为有向图:

在此输入图像描述

起始节点1为蓝色,最终节点5,6,7为绿色.所有边缘都标记为从它们始发的节点开始时遍历它们的概率.

这有从起始节点1到最终节点的八条不同路径:

{{1/14, {1, 5}}, {5/14, {1, 7}}, {7/36, …
Run Code Online (Sandbox Code Playgroud)

c c++ java directed-graph markov-chains

6
推荐指数
2
解决办法
1015
查看次数

有向图中每个终端节点的概率

我有一个有向图 G(V,E) 和权重 w(u,v)。

在这个图中,权重 w(u,v) 表示 node(v) 从 node(u) 访问了多少次。例如(有关有向图图像,请参阅此内容):

     1 3
  A ----- B ----- D
  | \____/|
 1| 4 |2
  | |
  行政长官

由于 C 和 B 从 A 被访问了一次,D 从 B 被访问了 3 次,以此类推。鉴于这些数据,我如何计算到达每个终端节点的确切概率,即;C、E、D,如果从 A 开始。

有什么建议吗?

algorithm graph probability markov-chains

6
推荐指数
1
解决办法
1290
查看次数

5
推荐指数
1
解决办法
1447
查看次数

iPython笔记本; 绘制转换图

我的问题很简单.

是否有一个用于绘制状态转换或马尔可夫图的包,它们看起来像以下任何一种?我认为它必须存在,但我根本找不到它!

在此输入图像描述 在此输入图像描述

我真的有一个搜索,也在Stackoverflow,但无济于事.

python diagram plot markov-chains ipython-notebook

5
推荐指数
1
解决办法
5624
查看次数

r中的马尔可夫链和小数点?

我已经从 r 中的矩阵绘制了一个马尔可夫链。但是,我有许多低于 0.01 的概率,因此我的概率图如下所示:

在此处输入图片说明

我已经搜索了几个小时,但似乎找不到可以显示所有四个小数位的东西。有什么办法可以格式化这个还是我应该保持原样?

我的代码如下:

library(markovchain)

newtransition.matrix <- matrix( data = c(
  .9366, .0066, .0007, .0003 ,.0003, 0, .0015, 0, 
  .0583, .9172, .0225, .0026, .0006, .001, 0, 0,
  .004, .0694, .9176, .0483, .0044, .0032, .0029, 0,
  .0009, .0049, .0518, .8924, .0666, .0046, .0088, 0,
  .0002, .0006, .0049, .0444, .8323, .0572, .0191, 0,
  0, .0009, .002, .0081, .0746, .8362, .1028, 0,
  0, .0002, .0001, .0016, .0105, .0384, .6123, 0,
  0, .0002, .0004, .0023, .0107, .0594, .2526, 1),
  nrow = …
Run Code Online (Sandbox Code Playgroud)

r markov-chains markov

5
推荐指数
2
解决办法
372
查看次数

MCMC 如何帮助贝叶斯推理?

文献称MCMC中的metropolis-hasting算法是上世纪发展起来的最重要的算法之一,具有革命性。文献还说,正是 MCMC 的这种发展给了贝叶斯统计第二次诞生。

我了解 MCMC 的作用 - 它提供了一种从任何复杂概率分布中抽取样本的有效方法。

我也知道贝叶斯推理是什么——它是计算参数的完整后验分布的过程。

我很难在这里连接点:MCMC 在贝叶斯推理过程中的哪一步发挥作用?为什么 MCMC 如此重要以至于人们说是 MCMC 给了贝叶斯统计第二次出生?

statistics markov-chains bayesian montecarlo mcmc

5
推荐指数
1
解决办法
673
查看次数

循环遍历日期和月份的 For 循环以在 R 中提取 Google Analytics 数据以运行马尔可夫链模型

我正在尝试使用 GA 数据构建马尔可夫链数字归因模型。

我想要一些关于日期范围的 for 循环的帮助,然后在我的数据集中创建一个显示月份的列。

该查询从 GA 中提取数据,特别是从多渠道漏斗报告中提取数据。因此,我希望按月计算所有唯一路径和转化次数,以便我可以运行马尔可夫链模型并按月获取渠道归因。

我已经完成了一些基本的工作,但由于我对循环不熟悉,我一直在坚持。

任何帮助都会很棒。

我将尝试分两个阶段破解代码:

阶段 a:提取数据

查找每月的开始和结束日期

start_date <- seq(as.Date("2018-01-01"),length=12,by="months")
end_date <- seq(as.Date("2018-02-01"),length=12,by="months")-1
Run Code Online (Sandbox Code Playgroud)

循环开始和结束日期

    mcf_data <- list()
      for(i in 1:length(start_date)){
        for(j in 1:length(end_date)){
                   mcf_data<-print(get_mcf(ga_id,
                    start.date = start_date[i], end.date = end_date[j], 
                    metrics = "mcf:totalConversions", 
                    dimensions = "mcf:basicChannelGroupingPath", 
                    sort = NULL,
                    filters = NULL, 
                    samplingLevel = NULL, 
                    start.index = NULL, max.results = NULL, fetch.by = NULL)
  }
 }
Run Code Online (Sandbox Code Playgroud)

这工作正常,但只是给了我唯一路径和转换的总数。理想情况下,我想使用 i,j 来创建一个附加列,每次循环从 1 运行到长度时,我都会得到一个与某个月份相关的数据框,所以最后我有具有唯一路径的数据集和按月的转换。

阶段 b:运行马尔可夫链模型

理想情况下,我想继续 for 循环从提取数据到按月运行模型

df_mcf_data <- data.frame(mcf_data$basicChannelGroupingPath
                          ,mcf_data$totalConversions,
                          conv_null = …
Run Code Online (Sandbox Code Playgroud)

for-loop google-analytics r markov-chains attribution

5
推荐指数
0
解决办法
137
查看次数