马尔科夫链模型状态转移矩阵

article/2025/10/13 22:07:09

关于马尔可夫链模型,详细请参考马尔可夫链模型
这里我使用的马尔科夫链模型的状态转移矩阵是:
在这里插入图片描述
股市的概率分布为[0.4, 0.3, 0.3], 即40%概率的牛市,30%概率的熊盘与30%的横盘。
代码实现

import numpy as npP = np.matrix([[0.7, 0.2, 0.1], [0.25, 0.35, 0.4], [0.45, 0.05, 0.5]])
p = np.matrix([[0.4, 0.3, 0.3]])
for i in range(1, 101):p = p * Pprint(f"输出第{i}次结果:")print(p)

运行结果
输出第1次结果:
[[0.49 0.2 0.31]]
输出第2次结果:
[[0.5325 0.1835 0.284 ]]
输出第3次结果:
[[0.546425 0.184925 0.26865 ]]
输出第4次结果:
[[0.54962125 0.18744125 0.2629375 ]]
输出第5次结果:
[[0.54991706 0.18867556 0.26140737]]
输出第6次结果:
[[0.54974415 0.18909023 0.26116562]]
输出第7次结果:
[[0.54961799 0.18918869 0.26119332]]
输出第8次结果:
[[0.54956676 0.18919931 0.26123393]]
输出第9次结果:
[[0.54955183 0.18919481 0.26125337]]
输出第10次结果:
[[0.549549 0.18919122 0.26125979]]
输出第11次结果:
[[0.54954901 0.18918971 0.26126128]]
输出第12次结果:
[[0.54954931 0.18918927 0.26126143]]
输出第13次结果:
[[0.54954947 0.18918918 0.26126135]]
输出第14次结果:
[[0.54954953 0.18918917 0.26126129]]
输出第15次结果:
[[0.54954955 0.18918918 0.26126127]]
输出第16次结果: ****
[[0.54954955 0.18918919 0.26126126]]
输出第17次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第18次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第19次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第20次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第21次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第22次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第23次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第24次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第25次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第26次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第27次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第28次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第29次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第30次结果:
[[0.54954955 0.18918919 0.26126126]]
。。。
输出第87次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第88次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第89次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第90次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第91次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第92次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第93次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第94次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第95次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第96次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第97次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第98次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第99次结果:
[[0.54954955 0.18918919 0.26126126]]
输出第100次结果:
[[0.54954955 0.18918919 0.26126126]]

从运行结果我们可以看出,1-16次运行结果各不相同,但第16次之后,结果都是[0.54954955 0.18918919 0.26126126],即54.954955%的牛市,18.918919%的熊市与26.126126%的横盘。这是巧合吗?其实并不是,换一个股市的概率分布,最终的结果还是54.954955%的牛市,18.918919%的熊市与26.126126%的横盘。无论还多少次还是相同的结果。那么,将股市的概率分布换成马尔科夫链模型状态转移矩阵,结果又会如何呢?

import numpy as npP = np.matrix([[0.7, 0.2, 0.1], [0.25, 0.35, 0.4], [0.45, 0.05, 0.5]])
for i in range(1, 31):P = P * Pprint(f"输出第{i}次结果:")print(P)

运行结果
输出第1次结果:
[[0.585 0.215 0.2 ]
[0.4425 0.1925 0.365 ]
[0.5525 0.1325 0.315 ]]
输出第2次结果:
[[0.5478625 0.1936625 0.258475 ]
[0.54570625 0.18055625 0.2737375 ]
[0.55588125 0.18603125 0.2580875 ]]
输出第3次结果:
[[0.54951756 0.18915182 0.26133061]
[0.54966821 0.18920713 0.26112467]
[0.54953091 0.1892548 0.26121429]]
输出第4次结果: **********
[[0.54954954 0.18918919 0.26126126]
[0.54954955 0.18918918 0.26126127]
[0.54954956 0.18918919 0.26126125]]
输出第5次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第6次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第7次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
。。。。。。
输出第25次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第26次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第27次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第28次结果:
[[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]
[0.54954955 0.18918919 0.26126126]]
输出第29次结果:
[[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]]
输出第30次结果:
[[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]
[0.54954954 0.18918919 0.26126126]]

从运行结果我们可以看出,第四次是一个分水岭,而且最后的结果和之前的是一致的。(注意:代码中的循环次数少了许多,因为循环次数过多,最后的结果会越来越小,直至变成全为0的矩阵。)


http://chatgpt.dhexx.cn/article/2h3Xiq02.shtml

相关文章

土地转移矩阵的计算步骤

土地转移矩阵在遥感研究中非常的实用,可以计算几年内的土地的面积转移变化,废话不多说,看步骤! 1.要找两年的土地利用数据,比如我这里是2013年和2019年MCD12Q1的500m的土地利用数据,然后要知道每个数值代表的是什么类,然后整理成像下面的表格一样。因为这个研究区,只有…

[ENVI] 转移矩阵

附:ERDAS工具:Erdas Imagine—-Interpreter—Gis Analysis—Matrix 工具:Classification–>Post Classification–>Confusion Matrix Using Ground Truth Image 说明:用一个真实的图像(Truth Image)评估分类的结果 将198…

马尔科夫链与转移矩阵

什么是转移概率矩阵(Transition Probability Matrix) 转移概率矩阵:矩阵各元素都是非负的,并且各行元素之和等于1,各元素用概率表示,在一定条件下是互相转移的,故称为转移概率矩阵。如用于市场决策时,矩阵中…

python之马尔科夫链及转移矩阵---详细介绍及代码说明

一、提出问题 马尔科夫链和转移矩阵是什么?马尔科夫链是如何生成的?以及如何使用?下面我来详细介绍! 二、马尔科夫链和转移矩阵的介绍 1、马尔科夫链(Markov chain)概述 机器学习算法中,马尔可夫链在时间序列模型广…

【ArcGIS进阶】制作土地利用转移矩阵

哈喽大家好,今天为大家带来如何利用ArcGIS和EXCEL快速制作土地利用转移矩阵 一、什么是土地利用转移矩阵 土地利用转移矩阵是马尔科夫模型在土地利用变化方面的应用。马尔科夫模型不仅可以定量地表明不同土地利用类型之间的转化情况,还可以揭示不同土地…

C 语言概述

一、C语言的发展历史及特点 1.1C语言的发展历史 1.传统C 20世纪80年代早期公认的C语言被称为传统C,也就是C语言被标准化之前的语言变体。 2.标准C(1989) 1982 年,美国国家标准委员会(ANSI)X3J11 委员会…

C--C语言概述

一、C语言的发展过程 1、C语言的产生 C程序设计语言最早是由Dennis M.Ritchie于1969年到1973年在AT&T贝尔实验室⾥开发出来,主要⽤于重新实现Unix操作系统。此时,C语⾔又被称为K&R C。其中,K表⽰Kernighan的⾸字母,⽽R则…

深入浅出C语言——C语言简介

文章目录 前言:一、C语言二、C语言程序案例三、数据类型四、变量和常量五、字符串六、转义字符七、注释八、选择语句九 、循环语句十、函数十一、 数组十二、操作符十三、常见关键字十四、定义常量和宏十五、指针十六、结构体 前言: 编程语言可以简单的…

C语言的简介

目录 C语言 简介发展历史语言特点 C语言 C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了…

C语言入门介绍

哈喽大家好,我是一个刚刚入门的萌新,刚刚接触C语言,从今天开始,我会不定期更新博客,一方面呢是为了和我一样的初学者提供一个交流(吐槽~)和学习的平台,另一方面呢是为了给自己学习和…

一、C语言简介

学习目标:完成对C语言大致的了解 1、概述 C语言是一种结构化的面向过程的程序设计语言,同时具有高级语言与汇编语言的特点。 2、程序设计语言 程序设计语言即用于书写计算机程序的语言。计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言三个…

(一)C语言概述

本篇介绍C语言起源、编译、存储层次。 诞生特点编译存储层次 诞生 简单介绍 C语言诞生于美国的贝尔实验室,由D.M.Ritchie以B语言为基础发展而来,在它的主体设计完成后,Thompson和Ritchie用它完全重写了UNIX,且随着UNIX的发展&…

C语言的概述

1、计算机与程序设计的关系 计算机的本质是程序的机器,程序和指令是计算机系统中最基本的概念。 程序语言设计的产生是为了克服繁琐难记的二进制语言代码。 2.C语言程序的特点 优点:①语言简洁、紧凑;使用方便,灵活性高。 ②运算…

【C语言】C语言的简介

计算机只能直接识别和处理二进制码&#xff0c;C语言是一种能够让人类跟计算机交流的语言。 代码演示&#xff1a; #include <stdio.h>/*预处理命令*/int main()/*主函数*/ {/*函数体开始*/printf("This is a C program.\n");//调用标准库函数printf 完成显示…

C 语言简介

一.发展 C语言是一种强大的专业化编程语言&#xff0c; C语言的原型是A语言&#xff08;ALGOL 60语言&#xff09;。 1963年&#xff0c;剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年&#xff0c;剑桥大学的Matin Richards 对CPL语言进行…

C++语言简介

C语言的发展简史 C是由贝尔实验室1979年在C语言的基础上开发成功的。C兼容C语言&#xff0c;用C语言写的程序基本上可以不加修改地用于CC对C的“增强”表现在两个方面&#xff1a; &#xff08;1&#xff09;在原来面向过程的机制基础上&#xff0c;增强了C语言对类型的处理。 …

C语言(一):C语言概述介绍

目录 1.1 什么是C语言 1.2 计算机介绍 1.2.1 计算机结构组成 1.2.2 计算机系统组成 1.2.3 程序和指令 1.3 语言发展历程 1.3.1 机器语言 1.3.2 汇编语言和编译器 1.3.3 高级语言 1.3.4 语言的层次 1.3.5 语言进化史 1.4 为什么要学习C语言 1.4.1 C语言特点 1) 优…

C语言知识简介

一、什么是C语言 C语言是一门通用计算机编程语言&#xff0c;广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 二、第一个C语言程序 #include<stdio.h> …

如何建设数据指标体系?

前言 指标&#xff0c;只要做业务或者做数据&#xff0c;没有不知道的。但是&#xff0c;近年来&#xff0c;随着数据中台推出&#xff0c;数据标签、用户画像等时髦热词涌现&#xff0c;突然间&#xff0c;人们不太讲指标了&#xff0c;仿佛一切又都变成只要有标签就万事搞定…

互联网业务数据指标体系

互联网业务数据分析&#x1f370; Chap1 数据指标体系与建模方法&#x1f388; 一、常用的数据指标 数据可以分为三类&#xff1a;用户数据、行为数据、业务数据(描述业务本身的发展) 1.用户数据 1.1 DAU MAU DAU&#xff08;Daily Active User&#xff09;&#xff1a;单日…