离散Markov Chain序列及可视化

news2024/7/6 19:58:29

离散Markov Chain序列及可视化


文章目录

  • 离散Markov Chain序列及可视化
    • @[toc]
    • 1 天气预测
    • 2 赌徒问题

1 天气预测

假设仅存在三种天气:晴天、阴天和雨天,每种天气状态构成的系统满足(齐次)马氏链过程,即下一期的天气状态仅取决于当前的天气状态,基于先验概率统计得到某地天气状态转移概率矩阵如下

     晴天 阴天 雨天
晴天  0.8 0.15 0.05
阴天  0.2 0.60 0.20
雨天  0.1 0.30 0.60

即当前如是晴天,则明天是晴天的概率为0.8,是阴天的概率为0.15,是雨天的概率为0.05;其他同理。随着时间推移,每种状态均存在,因此不存在吸收态。

接下来使用R构建markovchain对象,基于markovchain对象生产预测序列及可视化。首先构建markovchain对象,安装并导入markovchain包即可

statesNames=c("晴天","阴天","雨天")
mcA<-new("markovchain", states=statesNames, transitionMatrix=
           matrix(c(0.8,0.15,0.05,0.2,0.6,0.2,0.1,0.3,0.6), nrow=3,
                  byrow=TRUE, dimnames=list(statesNames, statesNames)))
plot(mcA,edge.arrow.size = 0.4,edge.color = 3,edge.width = 2,
     edge.curved = 0.1,vertex.shape = "rectangle")

在这里插入图片描述

计算不同天气状态平稳分布

steadyStates(mcA)
#           晴天      阴天      雨天
# [1,] 0.4444444 0.3333333 0.2222222

给定初始状态,基于上述天气马氏链生成未来100期的天气状态

markovchainSequence(n=100, markovchain=mcA, 
                    t0 = mcA@states[1],include=TRUE)
# [1] "晴天" "晴天" "晴天" "晴天" "晴天" "雨天" "雨天" "晴天" "晴天"
# [10] "阴天" "阴天" "阴天" "阴天" "雨天" "雨天" "阴天" "阴天" "阴天"
# [19] "阴天" "雨天" "雨天" "阴天" "晴天" "阴天" "雨天" "雨天" "晴天"
# [28] "晴天" "阴天" "晴天" "阴天" "阴天" "晴天" "晴天" "晴天" "晴天"
# [37] "晴天" "晴天" "阴天" "晴天" "晴天" "晴天" "晴天" "晴天" "晴天"
# [46] "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "雨天" "雨天"
# [55] "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "晴天"
# [64] "晴天" "阴天" "阴天" "阴天" "阴天" "阴天" "阴天" "晴天" "晴天"
# [73] "晴天" "晴天" "晴天" "晴天" "晴天" "晴天" "阴天" "雨天" "阴天"
# [82] "阴天" "阴天" "阴天" "雨天" "阴天" "晴天" "晴天" "晴天" "晴天"
# [91] "阴天" "阴天" "阴天" "阴天" "阴天" "阴天" "阴天" "阴天" "阴天"
# [100] "雨天" "阴天"

反过来也可以根据一段时期内的天气序列估计天气马氏链转换概率矩阵,估计方法包括统计法,极大似然估计和bootstrap方法。

sequence = c("晴天", "晴天" ,"晴天", "晴天" ,"雨天", "阴天", "阴天", "阴天", "雨天"
             ,"雨天", "雨天" ,"阴天" ,"阴天" ,"阴天", "晴天", "晴天", "晴天", "雨天"
             ,"雨天" ,"雨天", "雨天", "雨天" ,"阴天", "晴天" ,"晴天" ,"阴天", "晴天"
             ,"晴天", "晴天" ,"阴天" ,"阴天" ,"阴天", "阴天", "阴天", "阴天", "晴天"
             ,"阴天", "阴天", "晴天" ,"晴天" ,"晴天", "晴天" ,"晴天", "阴天", "阴天"
             ,"阴天", "阴天", "阴天", "阴天" ,"雨天", "雨天" ,"雨天", "阴天", "阴天"
             ,"阴天", "阴天", "阴天", "阴天", "雨天", "晴天" ,"阴天" ,"雨天", "雨天"
             ,"雨天" ,"阴天" ,"晴天" ,"晴天" ,"雨天" ,"雨天" ,"雨天", "雨天" ,"阴天"
             ,"阴天" ,"阴天", "晴天" ,"阴天" ,"阴天", "阴天", "阴天" ,"雨天", "阴天"
             ,"阴天" ,"阴天" ,"雨天", "雨天" ,"雨天" ,"雨天" ,"阴天", "阴天", "阴天"
             ,"阴天" ,"阴天" ,"阴天", "晴天", "阴天" ,"阴天", "晴天" ,"阴天", "阴天"
             ,"阴天" ,"阴天")

基于计数的统计方法

sequenceMatr <- createSequenceMatrix(sequence, sanitize = FALSE)
sequenceMatr
#        晴天 阴天 雨天
# 晴天   13    8    3
# 阴天    9   36    6
# 雨天    1    8   16

基于极大似然估计方法

mcFitMLE <- markovchainFit(data = sequence)
mcFitMLE$estimate
#          晴天      阴天      雨天
# 晴天 0.5416667 0.3333333 0.1250000
# 阴天 0.1764706 0.7058824 0.1176471
# 雨天 0.0400000 0.3200000 0.6400000
mcFitMLE$standardError
#          晴天      阴天       雨天
# 晴天 0.15023130 0.1178511 0.07216878
# 阴天 0.05882353 0.1176471 0.04802921
# 雨天 0.04000000 0.1131371 0.16000000
# 还包括置信水平、置信区间不再演示

基于bootstrap方法

mcFitBSP <- markovchainFit(data = sequence, 
                           method = "bootstrap", 
                           nboot = 100, 
                           name = "Bootstrap Mc")

mcFitBSP$estimate 
#          晴天      阴天      雨天
# 晴天 0.50632697 0.3591076 0.1345655
# 阴天 0.17673460 0.6971927 0.1260727
# 雨天 0.04392222 0.3457910 0.6102868

mcFitBSP$standardError
#         晴天        阴天        雨天
# 晴天 0.011204577 0.011693831 0.007900094
# 阴天 0.005394905 0.006909293 0.004826192
# 雨天 0.004952809 0.011784305 0.012170454

2 赌徒问题

在一次赌徒中,赢得1元概率为0.4,输掉1元概率为0.6,赌徒退出条件为输光或财富达到N元。假设随机变量 X n X_n Xn表示 n n n次赌博后的财富数量,于是转移概率可表示为
{ p ( i , i − 1 ) = P ( X n + 1 = i − 1 ∣ X n = i ) = 0.6 p ( i , i + 1 ) = P ( X n + 1 = i + 1 ∣ X n = i ) = 0.4 p ( 0 , 0 ) = p ( N , N ) = 1 \left\{\begin{array}{l} p(i,i-1) = P(X_{n+1} = i-1|X_n = i) = 0.6\\ p(i,i+1) = P(X_{n+1} = i+1|X_n = i) = 0.4\\ p(0,0)=p(N,N)=1 \end{array}\right. p(i,i1)=P(Xn+1=i1∣Xn=i)=0.6p(i,i+1)=P(Xn+1=i+1∣Xn=i)=0.4p(0,0)=p(N,N)=1
假设财富达到 N = 5 N=5 N=5元时退出赌博,则转移概率矩阵为

    01234501.0 0.0 0.0 0.0 0.0 0.0
10.6 0.0 0.4 0.0 0.0 0.0
20.0 0.6 0.0 0.4 0.0 0.0
30.0 0.0 0.6 0.0 0.4 0.0
40.0 0.0 0.0 0.6 0.0 0.4
50.0 0.0 0.0 0.0 0.0 1.0

下面构建markovchain对象

statesNames = c('0元','1元','2元','3元','4元','5元')
mat = matrix(c(1,0,0,0,0,0,
               0.6,0,0.4,0,0,0,
               0,0.6,0,0.4,0,0,
               0,0,0.6,0,0.4,0,
               0,0,0,0.6,0,0.4,
               0,0,0,0,0,1), byrow=TRUE, nrow=6,
             dimnames=list(statesNames, statesNames))
mcB<-new("markovchain", states=statesNames, 
         transitionMatrix= mat)
plot(mcB,edge.arrow.size = 0.4,edge.color = 3,edge.width = 2,
     edge.curved = 0.6,vertex.shape = "rectangle")

在这里插入图片描述

马氏链图可以看出存在吸收态0元、5元。使用R计算吸收态

absorbingStates(mcB)
# "0元" "5元"

计算平稳分布

steadyStates(mcB)
#        0元 1元 2元 3元 4元 5元
# [1,]   0   0   0   0   0   1
# [2,]   1   0   0   0   0   0

-END-

参考文献:

冯玲,方杰. 随机过程及其在金融中的应用[M].北京:中国人民大学出版社,2020.10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全是什么?如何成为一位优秀的网络安全工程师?

网络安全是什么&#xff1f; 首先说一下什么是网络安全&#xff1f; 网络安全工程师工作内容具体有哪些&#xff1f; 网络安全是确保网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而受到破坏、更改、泄露&#xff0c;系统连续可靠正常地…

idea部署tomcat(偏小白向)

目录 一、环境部署 1.安装idea ultimate任意版本 2.java稳定的版本如&#xff1a; 3.apache-tomcat任意版本&#xff0c;需要考虑兼容性&#xff0c;大家可以百度一下 二、部署简单的javaweb环境 总结 1.第一个问题 2.第二个问题 一、环境部署 1.安装idea ultimate任意版本…

Debian 11安装mysql 5.7.41

Debian 11安装mysql 5.7.41 1、下载mysql安装包2、安装文档2.1、安装依赖包2.2、安装MySQL包2.2.1、预设值数据库参数2.2.2、安装MySQL包 2.3、文件安装位置 3、使用mysql 5.7.41 数据库3.1、命令行登录MySQL 5.7.41 数据库3.2、navicat连接mysql 5.7.41 数据库3.2.1、修改mysq…

UWB技术开发的定位系统源码,高精度人员定位系统源码,室内定位系统源码人员定位/车辆定位/物品定位/材料定位

UWB技术定位系统源码&#xff0c;高精度人员定位系统源码&#xff0c;智慧工厂人员定位系统源码&#xff0c;室内定位系统源码 技术架构&#xff1a;单体服务 硬件&#xff08;UWB定位基站、卡牌&#xff09; 开发语言&#xff1a;java 开发工具&#xff1a;idea 、VS Code…

操作系统:12 线程竞争与线程池

1 基本概念 ① 竞争与同步 同一个进程中的线程能够共享进程中的绝大多数资源&#xff0c;当他们随意竞争时可能会导致共享资源被破坏、脏数据、不完整、不一致等问题 通过一些方法让进程中的线程在竞争资源时相互协调&#xff0c;避免出现以上问题&#xff0c;这种手段就称为线…

5月11日作业

思维导图 作业&#xff1a; 作业1&#xff1a; 作业2&#xff1a; 作业3&#xff1a; 作业4&#xff1a; 作业5&#xff1a;

算法设计与分析:枚举和递推的运用

目录 第1关&#xff1a;双关系递推数列 任务描述 相关知识 枚举算法的两种框架 递推算法的实施步骤 问题求解思路 编程要求 测试说明 第1关&#xff1a;双关系递推数列 任务描述 本关任务&#xff1a;运用枚举和递推的基本思想&#xff0c;通过编程计算出双关系递推数…

grafana + influxdb + telegraf构建linux性能监控平台

为了更好的做性能测试过程中监控服务器资源&#xff0c;提供可视化效果&#xff0c;下面介绍一种监控方案&#xff1a; grafana influxdb telegraf , 构建linux性能监控平台 安装3个软件 1.Grafana安装 grafana , 访问各类数据源 , 自定义报表、显示图表等等 , 用于提供界…

微星 B360M MORTAR电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板微星 B360M MORTAR 处理器英特尔 Core i5-9400 2.90GHz 六核已驱动 内存8 GB ( 金士顿 DDR4 2666MHz 8GB )已驱动 硬盘西数 WDS250G3X0C-00SJG0…

mysql高级语句(2)

and or 最左原则 create view视图表&#xff1a;虚拟表或存储查询 没有表结构存储查询语句的结果表 临时表在用户退出或同数据库连接断开就会小时&#xff0c;而视图表不会&#xff08;就像定义个全局变量&#xff09;保存的是定义 格式&#xff1a;create view “视图表名…

内测开始了!0penAI GGPT 图片功能、联网功能、音频功能、多模型功能、微调功能

联合两位大佬一起对gpt官方的接口做了整合。 有感兴趣的可以一起开发交流&#xff0c;下文有部分代码讲解。感兴趣的可以加入一起测试玩耍&#xff08;文末有加入方式&#xff09;~ 模型介绍 内测内容包括文字生成图片、图片生成图片、联网模式、模型定制、多角色设定等。 1…

mongodb用户权限配置

1.副本集 1.1在主节点创建管理员账号 /etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017 use admin db.createUser({user:"用户名",pwd:"密码",roles:["root"]}) 只要在主节点创建用户即可&#xff0c;从节点会自动同步数据 …

Verilog语法之generate (for、 if、 case)用法

文章目录 前言一、宏定义二、generate 方法1. generate-if 方法1. generate-case方法 三、小知识&#xff08;语法模板&#xff09; 前言 对于同一功能多种不同实现方法的模块代码如何整合到一起呢&#xff1f;当然每种方法作为一个单独的模块使用一个.v 文件保存肯定是没有问…

MySQL 高级(进阶) SQL 语句二

一、表连接查询 MYSQL数据库中的三种连接&#xff1a; inner join(内连接)&#xff1a;只返回两个表中联结字段相等的行&#xff08;有交集的值&#xff09;left join(左连接)&#xff1a;返回包括左表中的所有记录和右表中联结字段相等的记录right join(右连接)&#xff1a;…

区间合并(算法)

目录 题目代码实现注意点 题目 给定 n n n 个区间 [ l i , r i ] [l_i, r_i] [li​,ri​]&#xff0c;要求合并所有有交集的区间。 注意如果在端点处相交&#xff0c;也算有交集。 输出合并完成后的区间个数。 例如&#xff1a; [ 1 , 3 ] [1,3] [1,3] 和 [ 2 , 6 ] [2,…

【利用AI让知识体系化】深入浅出HTTP(近2w字)

思维导图 文章目录 思维导图1. HTTP基础知识HTTP简介URI和URLHTTP的请求和响应 2. HTTP请求请求方法请求头请求体 3. HTTP响应响应状态码响应头响应体 4. Cookies和SessionCookies的原理和应用Session机制使用Cookies和Session进行用户认证 5. HTTP缓存缓存概述浏览器缓存服务器…

Tomcat源码:连接器与Executor、Connector

前文&#xff1a; 《Tomcat源码&#xff1a;启动类Bootstrap与Catalina的加载》 《Tomcat源码&#xff1a;容器的生命周期管理与事件监听》 《Tomcat源码&#xff1a;StandardServer与StandardService》 《Tomcat源码&#xff1a;Container接口》 《Tomcat源码&#xff1a…

NHWC和NCHW数据排布及转换(模型部署)

1.概念 首先这是两种批量图片的数据存储方式&#xff0c;定义了一批图片在计算机存储空间内的数据存储layout。N表示这批图片的数量&#xff0c;C表示每张图片所包含的通道数&#xff0c;H表示这批图片的像素高度&#xff0c;W表示这批图片的像素宽度。其中C表示的通道数可能有…

被热议的DataOps,到底是什么?

近几年&#xff0c;DevOps的火热程度日渐高涨&#xff0c;同时涌现出了各种Ops&#xff0c;包括DevSecOps、GitOps、AIOps、NoOps、DataOps、MLOps、FeatureOps、ModelOps、FinOps等等。其中&#xff0c;对于企业来说&#xff0c;确保数据以高效和合规的方式使用&#xff0c;Da…

git commit 设置 eslint + pretter 格式化校验

系统版本 node 版本: v14.17.5 npm 版本: 6.14.14 vue-cli 版本: vue/cli 4.5.19 目录 系统版本 1. 新建一个 vue2.X 空项目 2. 安装插件 eslint ,并初始化 eslint 配置,根目录生成 .eslintrc 配置文件 3. 测试 eslint 配置 4. 安装 husky、lint-staged 5. 在package.j…