Python | R | MATLAB高斯过程统计模型

📜随机统计模型-用例

📜海上风电场模型 | 📜天气和建筑设计模型 | 📜不确定性量化应用模型 | 📜马尔可夫链蒙特卡罗算法多模态采样贝叶斯模型 | 📜分类过程最大似然模型 | 📜C++和Python通信引文道路社评电商大规模行为图结构数据模型 | 📜Python燃气轮机汽车钢棒整流电路控制图统计模型过程潜力分析

✒️Python 随机过程

随机过程是一段时间内随机变量的集合。 它可以是离散型或连续型。 微积分和概率论技术用于研究该过程。随机过程有很多种类。 本文将给出几种随机过程作为示例。 让我们将随机过程定义为在公共概率空间上定义的随机变量的集合
( Ω , F , P ) (\Omega, F , P) (Ω,F,P)

其中 Ω \Omega Ω 是样本空间或所有可能的结果,数学 F F F 是西格玛代数,其中每个集合包含零个或多个可能的结果, P P P 是实现结果的概率。我们定义一个带有索引 t(代表时间)的函数,将集合 T 中的变量映射到状态空间 S 中的随机变量,或者:
X t : T → S X_t: T \rightarrow S Xt:T→S

我们将看到的第一个基本过程是随机游走。 它被定义为由没有规则决定其发展的步骤所创建的路径。 "随机游走"一词由数学家 Karl Pearson(1857 - 1936)于 1905 年创造。该过程可以表示为一维或多维。金融领域有许多应用程序可以对股票和价格变动进行建模、赌徒的净资产、市场上人员的流动(例如 作为一些基于代理的建模)、分子和粒子的运动或基因组中基因的变化。随机游走有多种类型,如果步长遵循正态分布,则称其为高斯型。随机游走的其他变体是自交互游走、相关游走、最大熵随机游走等。

Python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import random as rm
from scipy.stats import norm
import itertools
import matplotlib.patches as mpatches
Python 复制代码
np.random.seed(99)

all_walks = []

for i in range(10) :

    random_walk = [0]
    for x in range(100) :
        step = random_walk[-1]
        dice = np.random.randint(1,7)

        if dice <= 2:
            step = step - 1
        elif dice <= 5:
            step = step + 1
        else:
            step = step + np.random.randint(1,5)
        random_walk.append(step)

    all_walks.append(random_walk)

plt.plot(random_walk)
plt.show()

我们生成模拟 100 次随机游走。 使用 99 的 np.random.seed 可以让读者重现相同的结果。 因为我们使用的是整数的高斯随机生成器,所以游走本质上是高斯的。 为了让事情变得更有趣,我们创建了一个基本算法,在该算法中,我们通过掷骰子并根据结果移动特定的步数。 我们从 for 循环的上一次迭代中获取步骤数。 如果骰子小于或等于 2,则步数减少 1;如果骰子数在 3 到 5 之间,则步数增加 1;如果骰子数为 6,则步数增加为 1 到 1 之间的随机数。 4. 最后打印随机游走的值(可选地,将其注释掉)并绘制。我们似乎主要呈增长趋势。

Python 复制代码
np.random.seed(99)
all_walks = []
for i in range(20) :
    random_walk = [0]
    for x in range(100) :
        step = random_walk[-1]
        dice = np.random.randint(1,7)
        if dice <= 2:
            step = step - 1
        elif dice <= 5:
            step = step + 1
        else:
            step = step + np.random.randint(1,5)
        if np.random.rand() <= 0.001 :
            step = 0
        random_walk.append(step)
    all_walks.append(random_walk)

np_aw = np.array(all_walks)

plt.plot(np_aw)
plt.show()

plt.clf()
np_aw_t = np.transpose(np_aw)

plt.plot(np_aw_t)
plt.show()

我们从 20 次步行开始。图表比下面的 500 次步行要清晰得多。大多数路径都遵循增长趋势。

pYTHON 复制代码
np.random.seed(99)
all_walks = []
for i in range(500) :
    random_walk = [0]
    for x in range(100) :
        step = random_walk[-1]
        dice = np.random.randint(1,7)
        if dice <= 2:
            step = step - 1
        elif dice <= 5:
            step = step + 1
        else:
            step = step + np.random.randint(1,5)
        if np.random.rand() <= 0.001 :
            step = 0
        random_walk.append(step)
    all_walks.append(random_walk)

np_aw = np.array(all_walks)

plt.plot(np_aw)
plt.show()

plt.clf()
np_aw_t = np.transpose(np_aw)

plt.plot(np_aw_t)
plt.show()

现在我们将缩放模拟,将步行数量增加到 500。步行已绘制出来。 由于进行了如此多的模拟,因此图表非常密集且信息量不大,但大数定律现在将适用。 趋势再次主要是增加。

Python 复制代码
ends = np_aw_t[-1]

plt.hist(ends)
plt.show()

bool = ends >= 40
greater = sum(bool)
print("The odds of the ending point being above 40 is " + "{:0.2%}".format(greater / 500))

当所有的行走都以变量结束时,我们定义过程的终点。 它已被绘制并显示接近正态分布,尽管它似乎与左侧有些不对称。 最后我们计算出终点大于 90 的几率,即 20.40%。 (对于其他百分比也可以这样做)。

🔗参阅一:计算思维

🔗参阅二:亚图跨际

相关推荐
思则变1 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络2 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find3 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取4 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector6 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习6 小时前
Python入门Day2
开发语言·python
Vertira6 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉6 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗6 小时前
黑马python(二十四)
开发语言·python
晓13137 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr