数学建模常用算法—马尔可夫预测

这篇具有很好参考价值的文章主要介绍了数学建模常用算法—马尔可夫预测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天数模君带大家学习一下数学建模中的预测算法之马尔科夫预测。

目录

模型的含义

实例分析


模型的含义

马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法。它是根据事件的目前状况来预测其将来各个时刻(或时期)变动状况的一种预测方法。马尔可夫预测法是地理预测研究中重要的预测方法之一。

1. 状态

指某一件事在某个时刻(或时期)出现的某种结果。

2.状态转移过程

事件的发展,从一种状态转变为另一种状态,称为状态转移。

3.马尔可夫过程

在事件的发展过程中,若每次状态的转移都仅与前一时刻的状态有关,而与过去的状态无关,或者说状态转移过程是无后效性的,则这样的状态转移过程就称为马尔可夫过程。

4.状态转移概率

用于描述,在事件的发展变化过程中,从某一种状态出发,在下一时刻转移到其它状态的可能性大小。

为了求出每一个,一般采用频率近似概率的思想进行计算。

5.状态转移概率矩阵

假定某一个事件的发展过程有n个可能的状态,即E1,E2,…,En。记为从状态Ei转变为状态Ej的状态转移概率

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

则矩阵

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

实例分析

题1:考虑某地区农业收成变化的3个状态,即“丰收”、“平收”和“歉收”。记E1为“丰收”状态,E2为“平收”状态,E3为“歉收”状态。表给出了该地区1975—2014年期间农业收成的状态变化情况。试计算该地区农业收成变化的状态转移概率矩阵。

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

 将例题1中2014年的农业收成状态记为 =[0,1, 0] (因为2014年处于“平收”状态),将状态转移概率矩阵代入递推公式,求2015—2025年可能出现的各种状态的概率。

> library(markovchain)
> library(readxl)
> library(tidyverse)
> library(expm)
> library(diagram)
> setwd("D:/code")
> tb456=read_xlsx('markov.xlsx') %>%
+   mutate(state1=lag(state)) 
>  #交叉统计,变量state1转为state的个数
>  tss= table(tb456[-1,]$state1,tb456[-1,]$state) 
> #返回交叉表的频率,即状态转移概率矩阵
> tmA=prop.table(tss,1) 
> tmA

            E1        E2        E3
  E1 0.2000000 0.4666667 0.3333333
  E2 0.5384615 0.1538462 0.3076923
  E3 0.3636364 0.4545455 0.1818182
> #可视化
> plotmat(tmA,pos = c(1,2), 
+         lwd = 1, box.lwd = 2, 
+         cex.txt = 0.8, 
+         box.size = 0.1, 
+         box.type = "circle", 
+         box.prop = 0.5,
+         box.col = "light blue",
+         arr.length=.1,
+         arr.width=.1,
+         self.cex = .6,
+         self.shifty = -.01,
+         self.shiftx = .15,
+         main = "Markov Chain")

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

 

> #初始状态
> inital=matrix(c(0,1,0),nrow=1, byrow=TRUE)
> #预测下一年
> fc15=inital %*% tmA
> #预测下两年
> fc16=inital %*% tmA%*% tmA
> #预测第三年,tmA%^% 3相当于tmA%*% tmA%*%tmA
> fc17=inital %*% (tmA%^% 3)
> #要进行多年预测,因此编写一个函数
> myfunction=function(n){
+   inital %*% (tmA%^% n)
+ }
> mats=matrix(data = NA,nrow = 11,ncol = 3) %>% 
+ data.frame()
> #预测2015-2025年,共11年,用一个dataframe来进行结果存储
> for (i in 1:11) {
+   mats[i,]=myfunction(i)
+ }
> mats$year=seq(2015,2025)
> colnames(mats)=c('E1','E2',"E3",'year')
> mats
     E1        E2        E3 year
1  0.5384615 0.1538462 0.3076923 2015
2  0.3024207 0.4148108 0.2827685 2016
3  0.3866687 0.3334778 0.2798534 2017
4  0.3586636 0.3589558 0.2823806 2018
5  0.3677005 0.3509551 0.2813444 2019
6  0.3648230 0.3534705 0.2817065 2020
7  0.3657336 0.3526792 0.2815872 2021
8  0.3654463 0.3529282 0.2816256 2022
9  0.3655368 0.3528498 0.2816134 2023
10 0.3655083 0.3528745 0.2816172 2024
11 0.3655173 0.3528667 0.2816160 2025
> #-------利用markovchain包中的函数快速实现-------------
> #返回概率转移矩阵
> Ma=createSequenceMatrix(tb456$state,toRowProbs = T)
> #定义一个markov对象
> dtmcA <- new("markovchain",transitionMatrix=Ma,
+              states=c('E1','E2',"E3"),
+              name="MarkovChain A") 
> #可视化
> plot(dtmcA)

马尔科夫预测,数学建模算法,算法,机器学习,人工智能

 

> #定义一个dataframe存储结果,结果与mats相同
> mats1=matrix(data = NA,nrow = 11,ncol = 3) %>% 
+   data.frame()
> 
> for (i in 1:11) {
+   mats1[i,]=inital*(dtmcA^i)
+ }
> #终极状态概率
> steadyStates(dtmcA)

最终结果:文章来源地址https://www.toymoban.com/news/detail-707604.html

 E1        E2        E3
[1,] 0.3655151 0.3528686 0.2816163

到了这里,关于数学建模常用算法—马尔可夫预测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模算法与应用:预测算法(6)预测习题练习

    目录  一,水塔总水量以及流速预测问题         1.1、题目         1.2、建立模型         1.3、用MATLAB计算,将“-”替换为-1。         1.4、拟合法          二、预测产值问题         2.1、题目         2.2、建立模型  一,水塔总水量以及流速预测问题        

    2024年02月13日
    浏览(32)
  • 基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

    目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序         基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。 MATLAB2022A版本运行        隐马尔可夫模型(Hidden Markov Model, HMM)是一种概

    2024年04月25日
    浏览(25)
  • 数学建模学习(2):数学建模各类常用的算法全解析

    常见的评价算法  1.层次分析法 基本思想         是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成 目标层、准则层和方案层 ,并通过人们的 判断对决策方案的 优劣进行排序 ,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,

    2024年02月09日
    浏览(27)
  • 数学建模十大经典算法和常用算法

    1、蒙特卡罗算法: 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时通过模拟可以来检验自己模型的正确性。 2、数据拟合、参数估计、插值等数据处理算法: 比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于算法,通常使用Matlab作为

    2024年02月07日
    浏览(30)
  • 数学建模常用算法—模糊综合评价

    目录 模型的含义 模型的数学概念 模型的建立与求解 matlab代码实现 今天给大家讲解一下国赛中常用到的评价模型,模糊综合评价法。 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对

    2023年04月12日
    浏览(37)
  • 数学建模常用算法—多目标规划

    前面我们已经学习了线性规划及非线性规划,接下来带大家一起学习多目标规划模型。 目录 模型的含义 求解思路 建立目标规划的条件 目标规划的目标函数 目标规划的模型应用 模型的建立 目标规划的一般数学模型 模型示例与求解 多目标规划是数学规划的一个分支。研究多

    2023年04月12日
    浏览(39)
  • 数学建模-32种常用算法汇总

    全国大学生数学建模竞赛(以下简称\\\"数学建模竞赛\\\")是由中国高等教育学会主办,旨在促进大学生对数学和相关学科的学习和研究,培养创新精神和综合素质的全国性大学生学科竞赛活动。该竞赛一般在每年的十月份举办,是目前国内规模最大、影响力最广的大学生学科竞

    2024年02月13日
    浏览(24)
  • 数学建模常用算法之Logistic回归

    一元线性回归 最小二乘法 设: 即可求得 其他方法 linearModel.fit函数 regress函数 变量解释 一元非线性回归 主要是解决回归方程中的参数估计问题,即fitnlm函数的使用 参考资料:传送门 对数形式估计 指数形式估计 根据xxx.Coefficients.Estimate得到参数 观察是否具有线性关系,使用

    2024年02月13日
    浏览(27)
  • 数学建模--时间序列预测模型的七种经典算法的Python实现

    目录 1.开篇版权提示 2.时间序列介绍  3.项目数据处理 4.项目数据划分+可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指数法  9.时间预测序列经典算法5:Holt线性趋势法

    2024年02月10日
    浏览(30)
  • 数学建模算法与应用:预测模型(3)案例: SARS 疫情对经济指标影响

    目录         问题描述: 一、建模思路  二、对模型进行分析预测          2.1、对模型进行假设 三、建立灰色预测模型GM(1,1)           3.1、模型的求解(i)商品零售额          3.2、用MATLAB程序,实现(i)商品零售额          3.3、输出结果          3.4、模

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包