预测——马尔可夫链

1、作用

马尔可夫是俄国著名的数学家。马尔可夫预测法是以马尔可夫的名字命名的一种特殊的预测方法。马尔可夫预测法主要用于市场预测和销售期望利润的预测。它是基于马尔可夫链,根据事件的目前状况预测其将来各个时刻(或时期)变动状况的一种预测方法。马尔可夫预测法是对地理、天气、市场、进行预测的基本方法,它是地理预测中常用的重要方法之一。

2、输入输出描述

输入:随时间序列变化的定类或定序变量
输出:马尔可夫链预测的预测结果​

3、案例示例

股价预测通过今天股票的涨跌,预测明天后天股票的涨跌;天气预报通过今天是否下雨,预测明天后天是否下雨。这些过程都是可以通过数学公式进行量化计算的。通过下雨、股票涨跌的概率,用公式就可以推导出来 N 天后的状况。

4、建模步骤

事物的发展状态总是随着时间的推移而不断变化的。在一般情况下,人们要了解事物未来的发展状态,不但要看到事物现在的状态,还要看到事物过去的状态。马尔可夫认为,还存在另外一种情况, 人们要了解事物未来的发展状态,只须知道事物现在的状态,而与事物以前的状态毫无关系。这种情况就称为马尔可夫过程。马尔可夫过程的重要特征是无后效性。事物第n次出现的状态,只与其第n-1次的状态有关,它与以前的状态无关。所谓无后效性,是指过去对未来无后效,而不是指现在对未来无后效。

状态空间

马尔可夫链节点的所有可能取值。状态空间可以视为一个以状态变数为座标轴的空间,因此系统的状态可以表示为此空间中的一个向量。

概率向量

概率向量的每个元素都是概率,并且元素之和为1。系统的可能状态数有k个。向量中各个元素分别表示表示第n次观测时第i个状态的概率。X^{\left ( 0 \right )}被称为初始状态。

转移概率矩阵

 p_{ij}表示这次观测前状态为i,现在观测是状态为j的概率。P矩阵元素非负。每一行的元素之和都为1

计算下一次观测的概率

根据无后效性,我们可以得出:

即为:

由于某一时刻状态转移的情况只依赖前一个状态,那么只要求出系统中任意两个状态之间的转移概率,这个马尔科夫链的模型就确定了。

判断是否具有唯一稳态分布(收敛)

马尔可夫链中全部状态节点需要满足以下条件:

不可约性:如果一个马尔可夫链的状态空间仅有一个连通类,即状态空间的全体成员,则该马尔可夫链是不可约的,否则马尔可夫链具有可约性。马尔可夫链的不可约性意味着在其演变过程中,随机变量可以在任意状态间转移。

常返性:若马尔可夫链在到达一个状态后,在演变中能反复回到该状态,则该状态是常返状态。

非周期性:在其演变中,马尔可夫链能够按任意>=1的周期常返回其状态。

遍历性:若马尔可夫链的一个状态是正常返的和非周期的,则该状态具有遍历性。遍历链是非周期的平稳马尔可夫链,有长时间尺度下的稳态行为,因此是被广泛研究和应用的马尔可夫链。

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
马尔可夫链预测模型可以用于预测气温。马尔可夫链是一种随机过程,其中当前状态只依赖于前一个状态。在气温预测中,我们可以将不同的气温状态定义为马尔可夫链的状态,例如炎热、温暖、凉爽和寒冷。根据历史气温数据,我们可以估计状态之间的转移概率,并使用这些概率来预测未来的气温状态。 以下是一个简单的示例,演示如何使用马尔可夫链预测气温状态: ```python import numpy as np # 定义气温状态 states = ['炎热', '温暖', '凉爽', '寒冷'] # 定义状态转移矩阵 transition_matrix = np.array([ [0.4, 0.3, 0.2, 0.1], [0.2, 0.4, 0.3, 0.1], [0.1, 0.3, 0.4, 0.2], [0.1, 0.2, 0.3, 0.4] ]) # 定义初始状态概率 initial_probabilities = np.array([0.25, 0.25, 0.25, 0.25]) # 根据马尔可夫链进行气温状态预测 def predict_temperature(days): current_state = np.random.choice(states, p=initial_probabilities) predicted_states = [current_state] for _ in range(days-1): current_state = np.random.choice(states, p=transition_matrix[states.index(current_state)]) predicted_states.append(current_state) return predicted_states # 预测未来5天的气温状态 predicted_temperature = predict_temperature(5) print(predicted_temperature) ``` 这段代码中,我们首先定义了气温状态和状态转移矩阵。然后,我们使用`np.random.choice`函数根据初始状态概率和状态转移矩阵进行状态选择,从而预测未来的气温状态。最后,我们打印出预测的气温状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值