大数跨境
0
0

超全总结,十大概率分布 !!

超全总结,十大概率分布 !! 概率游戏耐心等待
2025-11-10
9
导读:超全总结,十大概率分布 !!哈喽,我是小白~今儿咱们继续聊聊概率分布的内容~
超全总结,十大概率分布 !!

哈喽,我是小白~

今儿咱们继续聊聊概率分布的内容~

概率分布,它们描述了数据的生成过程和不确定性,有助于模型的推断与预测。通过概率分布,可以进行样本生成、估计未知参数,并有效应对噪声和变异数据。理解和选择合适的概率分布是构建可靠模型的核心。

涉及到的10个最常用的有:

  • 正态分布
  • 均匀分布
  • 伯努利分布
  • 二项分布
  • 多项分布
  • 指数分布
  • 泊松分布
  • 伽马分布
  • Beta分布
  • Dirichlet分布

一起来看看~

1. 正态分布 (Normal Distribution)

正态分布是最常见的连续概率分布之一,广泛应用于自然现象的建模,如测量误差和生物特征等。它具有对称的钟形曲线。

原理

正态分布描述了数据围绕均值对称分布的情况,其特征由均值 (μ) 和方差 (σ²) 决定。均值决定了分布的位置,而方差决定了分布的宽度。

核心公式

其中,  是均值,  是方差,  是标准差。

推导:

  1. 假设我们要最大化一个正态分布下的概率密度函数。
  2. 正态分布的概率密度函数是通过均值和方差构建的,可以看作是基于均值的平方差的指数函数。
  3. 对公式进行常规的积分运算,得出分布的标准化系数,即   部分。
  4. 通过拉普拉斯方法等数学技巧进一步推导得出完整的正态分布公式。

Python实现

下面是一个使用虚拟数据集的案例,基于正态分布创建了多个图形来进行数据分析,包括直方图、核密度估计图、QQ图和箱线图。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as stats

# 设置随机种子保证可重复性
np.random.seed(42)

# 生成正态分布数据
mu, sigma = 01  # 均值和标准差
data = np.random.normal(mu, sigma, 1000)

# 创建一个画布和子图
fig, axs = plt.subplots(22, figsize=(1412))

# 直方图和核密度估计图
sns.histplot(data, kde=True, ax=axs[00], bins=30, color='skyblue')
axs[00].set_title('Histogram and KDE')
axs[00].set_xlabel('Value')
axs[00].set_ylabel('Density')

# QQ图
stats.probplot(data, dist="norm", plot=axs[01])
axs[01].set_title('QQ Plot')

# 箱线图
sns.boxplot(data, ax=axs[10], color='lightgreen')
axs[10].set_title('Box Plot')
axs[10].set_xlabel('Dataset')

# 密度图(不同正态分布的叠加)
sns.kdeplot(data, ax=axs[11], color='blue', label='N(0,1)')
sns.kdeplot(np.random.normal(-211000), ax=axs[11], color='red', label='N(-2,1)')
sns.kdeplot(np.random.normal(211000), ax=axs[11], color='green', label='N(2,1)')
axs[11].set_title('Overlayed KDE plots')
axs[11].set_xlabel('Value')
axs[11].set_ylabel('Density')
axs[11].legend()

# 调整子图间距
plt.tight_layout()

# 显示图形
plt.show()
  1. 数据生成:使用 np.random.normal(mu, sigma, 1000) 生成了1000个服从均值为0,标准差为1的正态分布数据。
  2. 图形生成
    • 直方图和核密度估计图:使用 Seaborn 的 histplot 画出直方图,并通过 kde=True 叠加核密度估计图。
    • QQ图:使用 Scipy 的 probplot 绘制 Q-Q 图来检验数据的正态性。
    • 箱线图:使用 Seaborn 的 boxplot 绘制数据的箱线图,展示数据的分布特征。
    • 密度图(叠加多个分布):绘制多个不同正态分布的核密度估计图,比较它们的分布情况。
图片

2. 均匀分布 (Uniform Distribution)

均匀分布是一种简单的概率分布,其中区间内的所有值都是等概率的。常用于随机样本的生成。

原理

对于一个均匀分布,在区间 [a, b] 上的概率密度是常数。分布的特点是不偏不倚,即每个可能值的概率相等。

核心公式

推导:

  1. 均匀分布假设在区间 [a, b] 上的概率密度为常数。
  2. 由于概率密度函数的总积分必须为1,因此我们有 
  3. 解积分得出   的结论。

Python实现

使用了均匀分布来生成虚拟数据集。该案例包括直方图、核密度估计图(KDE)、累积分布函数(CDF)图和散点图。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import uniform

# 生成虚拟数据集
np.random.seed(42)
data = uniform.rvs(size=1000, loc=0, scale=10)  # 在区间 [0, 10) 上生成 1000 个均匀分布的样本

# 创建图形对象
plt.figure(figsize=(128))

# 子图1:直方图和KDE图
plt.subplot(221)
sns.histplot(data, kde=True, color='skyblue', bins=30, stat='density', edgecolor='black')
plt.title('Histogram with KDE')
plt.xlabel('Value')
plt.ylabel('Density')

# 子图2:累积分布函数(CDF)
plt.subplot(222)
sns.ecdfplot(data, color='green')
plt.title('Cumulative Distribution Function (CDF)')
plt.xlabel('Value')
plt.ylabel('CDF')

# 子图3:Q-Q图(与标准均匀分布对比)
plt.subplot(223)
uniform_samples = np.sort(uniform.rvs(size=1000, loc=0, scale=10))
plt.scatter(uniform_samples, np.sort(data), color='purple', edgecolor='black')
plt.plot([010], [010], 'r--')  # 参考线
plt.title('Q-Q Plot against Uniform Distribution')
plt.xlabel('Theoretical Quantiles')
plt.ylabel('Sample Quantiles')

# 子图4:均匀分布样本的散点图(对比两个均匀分布样本)
plt.subplot(224)
data2 = uniform.rvs(size=1000, loc=0, scale=10)
plt.scatter(data, data2, color='orange', edgecolor='black', alpha=0.6)
plt.title('Scatter Plot of Two Uniform Distributions')
plt.xlabel('Data1')
plt.ylabel('Data2')

# 调整布局
plt.tight_layout()
plt.show()
  1. 数据生成:使用 scipy.stats.uniform.rvs 生成了 1000 个在 [0, 10) 区间内的均匀分布样本数据。
  2. 直方图和KDE图:在第一个子图中,使用了Seaborn库的 histplot 函数绘制直方图,并叠加了核密度估计曲线(KDE)。
  3. 累积分布函数(CDF):在第二个子图中,使用 ecdfplot 函数绘制累积分布函数图。
  4. Q-Q图:在第三个子图中,将样本数据的分位数与标准均匀分布的分位数进行了对比,绘制了Q-Q图,并加上了参考线。
  5. 散点图:在第四个子图中,生成了第二组均匀分布数据,并将两组数据绘制成散点图。
图片

3. 伯努利分布 (Bernoulli Distribution)

伯努利分布描述了二元(0或1)随机变量的分布,常用于二分类问题的建模。

原理

伯努利分布是一个离散分布,用于表示单次试验的两个可能结果(如成功或失败)。

核心公式

其中,p 是成功的概率。

推导:

  1. 假设一次试验只有两个可能结果:成功(1)和失败(0),成功的概率为 p。
  2. 通过列举法,可以直接得出成功的概率为 p,失败的概率为 1-p。
  3. 因为只有两种结果,所以公式直接由组合的性质推导得出。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# 设置随机种子
np.random.seed(42)

# 生成一个虚拟数据集,包含1000个伯努利分布的数据点
p = 0.3  # 成功的概率
n = 1000
data = np.random.binomial(1, p, n)

# 创建一个DataFrame
df = pd.DataFrame(data, columns=['Outcome'])

# 计算统计量
success_count = df['Outcome'].sum()
failure_count = n - success_count
probabilities = df['Outcome'].value_counts(normalize=True)
mean = df['Outcome'].mean()
variance = df['Outcome'].var()

# 设置画布大小
plt.figure(figsize=(1510))

# 图1:直方图(Histogram)
plt.subplot(221)
sns.histplot(df['Outcome'], bins=2, kde=False)
plt.title('Histogram of Bernoulli Distribution')
plt.xlabel('Outcome')
plt.ylabel('Frequency')
plt.xticks([01], labels=['Failure (0)''Success (1)'])

# 图2:概率质量函数(PMF)
plt.subplot(222)
sns.barplot(x=probabilities.index, y=probabilities.values, palette='viridis')
plt.title('Probability Mass Function (PMF)')
plt.xlabel('Outcome')
plt.ylabel('Probability')
plt.xticks([01], labels=['Failure (0)''Success (1)'])

# 图3:箱型图(Box Plot)
plt.subplot(223)
sns.boxplot(x=df['Outcome'], palette='viridis')
plt.title('Box Plot of Outcomes')
plt.xlabel('Outcome')
plt.xticks([01], labels=['Failure (0)''Success (1)'])

# 图4:统计量
plt.subplot(224)
stats_text = f"Sample Size: {n}\nSuccess Count: {success_count}\nFailure Count: {failure_count}\nMean: {mean:.2f}\nVariance: {variance:.2f}"
plt.text(0.10.5, stats_text, fontsize=14, verticalalignment='center', bbox=dict(facecolor='lightgrey', alpha=0.5))
plt.axis('off')
plt.title('Summary Statistics')

# 调整布局
plt.tight_layout()

# 显示图形
plt.show()
  1. 数据生成:使用 np.random.binomial 生成一个1000个数据点的伯努利分布数据集,成功的概率 p=0.3
  2. 统计分析:计算数据集的统计量,包括成功次数、失败次数、均值和方差。
  3. 可视化
    • 直方图:显示伯努利分布结果的频数。
    • 概率质量函数(PMF):显示每个结果(0和1)的概率。
    • 箱型图:显示数据分布的箱型图。
    • 统计量摘要:以文本形式展示统计量的摘要。
图片

4. 二项分布 (Binomial Distribution)

二项分布描述了一系列独立伯努利试验中成功次数的分布。

原理

二项分布是多次独立伯努利试验的结果,研究的是在n次试验中成功的次数。

核心公式

其中, ,p 是成功的概率,n 是试验次数,k 是成功次数。

推导:

  1. 对于n次独立的伯努利试验,成功k次的概率是 
  2. 失败的次数为  ,因此失败的概率是 
  3. 成功k次的排列组合方式为  ,将这些组合起来,得到二项分布公式。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import binom

# 设置随机种子以确保结果可重复
np.random.seed(42)

# 二项分布参数设置
n = 20  # 试验次数
p = 0.5  # 每次试验成功的概率

# 生成二项分布的虚拟数据集
data = np.random.binomial(n, p, size=1000)

# 计算概率质量函数(PMF)
x = np.arange(0, n+1)
pmf = binom.pmf(x, n, p)

# 创建图形
plt.figure(figsize=(148))

# 子图1: 二项分布的PMF
plt.subplot(221)
plt.stem(x, pmf, basefmt=" ")
plt.title('Probability Mass Function (PMF)')
plt.xlabel('Number of successes')
plt.ylabel('Probability')
plt.grid()

# 子图2: 样本数据的直方图
plt.subplot(222)
sns.histplot(data, bins=n+1, kde=False, color='skyblue')
plt.title('Histogram of Sample Data')
plt.xlabel('Number of successes')
plt.ylabel('Frequency')
plt.grid()

# 子图3: 样本数据的累积分布函数(CDF)
plt.subplot(223)
sns.ecdfplot(data, color='red')
plt.title('Cumulative Distribution Function (CDF)')
plt.xlabel('Number of successes')
plt.ylabel('Cumulative Probability')
plt.grid()

# 调整子图间距
plt.tight_layout()
plt.show()
  1. 数据生成np.random.binomial(n, p, size=1000)生成了1000个来自二项分布的数据,参数n是试验次数,p是每次试验成功的概率。
  2. PMF计算与绘制binom.pmf(x, n, p)计算了0到n次成功的概率质量函数(PMF),并使用plt.stem()绘制。
  3. 样本数据直方图:使用seaborn库中的histplot绘制数据的直方图,展示不同成功次数出现的频率。
  4. 累积分布函数(CDF):使用seaborn库中的ecdfplot绘制数据的累积分布函数,展示成功次数小于等于某个值的累计概率。
图片

5. 多项分布 (Multinomial Distribution)

多项分布是二项分布的推广,用于描述每次试验有多种可能结果的情况。

原理

在一次试验中,多项分布研究的是多种类别中每种类别的出现次数。

核心公式

其中,  是第i类的概率,  是第i类的出现次数,n是试验总次数。

推导:

  1. 将二项分布扩展到多种可能结果的情况下,考虑每种结果的概率   和出现次数 
  2. 使用组合数   表示这些事件的可能排列。
  3. 通过与二项分布类似的计算,得出多项分布的公式。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import multinomial

# 设置随机种子以确保结果可复现
np.random.seed(42)

# 定义多项分布的参数
n = 1000  # 实验总次数
p = [0.10.30.20.150.25]  # 每个类别的概率

# 生成多项分布的数据
data = multinomial.rvs(n=n, p=p, size=1)[0]

# 创建类别标签
categories = ['Category A''Category B''Category C''Category D''Category E']

# 创建一个2x2的子图布局
fig, axes = plt.subplots(22, figsize=(1410))

# 绘制条形图
sns.barplot(x=categories, y=data, palette='viridis', ax=axes[00])
axes[00].set_title('Bar Plot of Category Counts')
axes[00].set_xlabel('Category')
axes[00].set_ylabel('Counts')

# 绘制饼图
axes[01].pie(data, labels=categories, autopct='%1.1f%%', colors=sns.color_palette('viridis', len(categories)))
axes[01].set_title('Pie Chart of Category Proportions')

# 绘制累积条形图
cumulative_data = np.cumsum(data)
sns.barplot(x=categories, y=cumulative_data, palette='viridis', ax=axes[10])
axes[10].set_title('Cumulative Bar Plot')
axes[10].set_xlabel('Category')
axes[10].set_ylabel('Cumulative Counts')

# 绘制各类别的分布情况
sns.histplot(data, bins=10, kde=True, color='purple', ax=axes[11])
axes[11].set_title('Distribution of Counts Across Categories')
axes[11].set_xlabel('Counts')
axes[11].set_ylabel('Frequency')

# 调整布局
plt.tight_layout()
plt.show()
  1. 数据生成: 使用scipy.stats.multinomial.rvs函数生成虚拟的多项分布数据,数据来自于一个有5个类别的实验,每个类别的概率不同。
  2. 可视化: 生成的数据通过4种图形进行可视化,包括条形图、饼图、累积条形图以及直方图:
    • 条形图展示了每个类别的计数。
    • 饼图展示了每个类别的比例。
    • 累积条形图展示了累积的类别计数。
    • 直方图展示了类别计数的分布情况。
图片

6. 指数分布 (Exponential Distribution)

指数分布描述了事件发生时间间隔的分布,常用于建模无记忆性随机过程。

原理

指数分布是泊松过程的等待时间分布,具有无记忆性,即过去不影响未来事件的概率。

核心公式

其中,λ是速率参数(事件发生的频率)。

推导:

  1. 设想一个泊松过程,计算下一次事件发生的时间间隔。
  2. 利用泊松过程的性质,推导出无记忆性的性质,即过去不影响未来。
  3. 通过微分方程求解,得到指数分布的密度函数。

Python实现

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 设置随机种子以确保可重复性
np.random.seed(42)

# 生成虚拟数据集(指数分布)
lambda_param = 1.5  # 参数lambda
size = 1000  # 数据集大小
data = np.random.exponential(scale=1/lambda_param, size=size)

# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=['Exponential'])

# 创建图形对象
fig, axs = plt.subplots(22, figsize=(1410))

# 图1:直方图 + KDE
sns.histplot(df['Exponential'], kde=True, ax=axs[00], color='skyblue')
axs[00].set_title('Histogram + KDE of Exponential Distribution')

# 图2:累积分布函数(CDF)
sns.ecdfplot(df['Exponential'], ax=axs[01], color='green')
axs[01].set_title('Empirical CDF of Exponential Distribution')

# 图3:箱线图
sns.boxplot(data=df, ax=axs[10], color='lightcoral')
axs[10].set_title('Boxplot of Exponential Distribution')

# 图4:Q-Q 图
from scipy import stats
stats.probplot(df['Exponential'], dist="expon", plot=axs[11])
axs[11].set_title('Q-Q Plot of Exponential Distribution')

# 调整布局
plt.tight_layout()
plt.show()
  1. 生成虚拟数据:使用np.random.exponential生成具有指定lambda参数的指数分布数据集。
  2. 绘制多个图形
    • 图1:直方图与核密度估计(KDE)曲线,展示数据的分布。
    • 图2:累积分布函数(CDF),展示数据的累计概率。
    • 图3:箱线图,展示数据的四分位数和潜在的异常值。
    • 图4:Q-Q 图,用于检验数据是否与指数分布的理论分布匹配。
图片

7. 泊松分布 (Poisson Distribution)

泊松分布用于描述在固定时间或空间区域内事件发生的次数。

原理

泊松分布是描述随机事件在固定时间或空间内发生的次数,其特点是时间间隔的独立性和等方差性。

核心公式

其中,λ是期望值(单位时间内的平均发生次数)。

推导:

  1. 考虑一个时间段内发生k次事件的概率。
  2. 假设事件发生的概率在时间段中是均匀的,利用极限思想(时间段趋近于0),求出泊松分布的概率。
  3. 最后,结合组合计数法,得到泊松分布的公式。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import poisson

# 设置泊松分布的参数
lambda_ = 5  # λ是泊松分布的均值,也就是事件发生的平均次数

# 生成泊松分布的随机样本
np.random.seed(42)
data = np.random.poisson(lambda_, 1000)

# 设置画布大小
plt.figure(figsize=(1410))

# 图1:数据的直方图
plt.subplot(221)
sns.histplot(data, bins=range(0, max(data)+2), kde=False, color='skyblue')
plt.title('Poisson Distribution Histogram')
plt.xlabel('Number of Events')
plt.ylabel('Frequency')

# 图2:数据的折线图
plt.subplot(222)
unique_values, counts = np.unique(data, return_counts=True)
plt.plot(unique_values, counts, marker='o', linestyle='-', color='green')
plt.title('Frequency Line Plot')
plt.xlabel('Number of Events')
plt.ylabel('Frequency')

# 图3:泊松分布的概率质量函数(PMF)
plt.subplot(223)
x = np.arange(020)
pmf = poisson.pmf(x, lambda_)
plt.bar(x, pmf, color='orange')
plt.title('Poisson Distribution PMF')
plt.xlabel('Number of Events')
plt.ylabel('Probability')

# 图4:理论PMF与样本数据的对比
plt.subplot(224)
plt.plot(x, pmf * len(data), marker='o', linestyle='-', color='red', label='Theoretical PMF')
plt.plot(unique_values, counts, marker='x', linestyle='--', color='blue', label='Sample Data')
plt.title('Theoretical PMF vs Sample Data')
plt.xlabel('Number of Events')
plt.ylabel('Count')
plt.legend()

# 调整布局并显示图像
plt.tight_layout()
plt.show()
  1. 泊松分布生成数据:使用 np.random.poisson 函数生成泊松分布随机样本,参数为 lambda_ 和样本数量。
  2. 数据可视化:代码包含四个子图:
    • 图1: 泊松分布样本数据的直方图,展示事件发生次数的频率分布。
    • 图2: 样本数据的折线图,用于观察频率的趋势变化。
    • 图3: 泊松分布的概率质量函数(PMF),显示每个事件发生次数的理论概率。
    • 图4: 理论PMF与样本数据频率的对比,展示样本数据与理论分布的一致性。
图片

8. 伽马分布 (Gamma Distribution)

伽马分布用于模型事件之间时间的分布以及正数随机变量。

原理

伽马分布是连续随机变量的分布,常用于建模多个指数分布变量之和的情况。

核心公式

其中,α是形状参数,β是尺度参数,Γ(α)是伽马函数。

推导:

  1. 伽马分布可以视为多个独立同分布的指数分布随机变量的和。
  2. 使用拉普拉斯变换或其他积分方法,可以推导出伽马分布的概率密度函数。
  3. 伽马函数作为归一化常数来确保总概率为1。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import gamma

# 设置随机种子以确保可重复性
np.random.seed(42)

# 伽马分布的参数
shape, scale = 2.02.0  # α (shape) = 2.0, θ (scale) = 2.0

# 生成伽马分布的随机样本
data = gamma.rvs(a=shape, scale=scale, size=1000)

# 创建图形和子图
fig, axs = plt.subplots(22, figsize=(1210))

# 子图1:伽马分布的概率密度函数 (PDF)
x = np.linspace(0201000)
pdf = gamma.pdf(x, a=shape, scale=scale)
axs[00].plot(x, pdf, 'r-', lw=2, label=f'Gamma PDF\nα={shape}, θ={scale}')
axs[00].fill_between(x, pdf, color='red', alpha=0.3)
axs[00].set_title('Probability Density Function (PDF)')
axs[00].legend()

# 子图2:伽马分布样本的直方图
sns.histplot(data, kde=False, bins=30, color='blue', ax=axs[01], stat="density")
axs[01].set_title('Histogram of Gamma Distributed Data')
axs[01].set_ylabel('Density')

# 子图3:伽马分布样本的核密度估计 (KDE)
sns.kdeplot(data, color='green', lw=2, ax=axs[10])
axs[10].set_title('Kernel Density Estimate (KDE)')
axs[10].set_ylabel('Density')

# 子图4:样本的累积分布函数 (CDF)
cdf = gamma.cdf(x, a=shape, scale=scale)
axs[11].plot(x, cdf, 'b-', lw=2, label='CDF')
axs[11].set_title('Cumulative Distribution Function (CDF)')
axs[11].legend()

# 调整布局
plt.tight_layout()
plt.show()
  1. 子图1:显示伽马分布的概率密度函数 (PDF),并填充下面的区域。
  2. 子图2:显示伽马分布样本的直方图,可以直观感受到数据的分布情况。
  3. 子图3:显示伽马分布样本的核密度估计 (KDE),以更平滑的曲线展示数据分布。
  4. 子图4:显示伽马分布样本的累积分布函数 (CDF),描述了数据小于等于某个值的概率。

使用了伽马分布的随机样本,展示了伽马分布的不同方面。

图片

9. Beta分布 (Beta Distribution)

Beta分布常用于表示概率参数的先验分布,在贝叶斯推断中有重要应用。

原理

Beta分布是定义在[0,1]区间上的连续概率分布,常用于建模概率事件的先验分布。

核心公式

其中,α和β是形状参数,B(α, β)是Beta函数。

推导:

  1. Beta分布源自于Beta函数,这是一种归一化的超几何积分。
  2. 使用Gamma函数的性质,Beta分布可以表示为Gamma分布的比率。
  3. 最终得到Beta分布的概率密度函数。

Python实现

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta

# 参数设置
alpha_1, beta_1 = 25
alpha_2, beta_2 = 52

# 生成x值
x = np.linspace(011000)

# 计算PDF(概率密度函数)
pdf_1 = beta.pdf(x, alpha_1, beta_1)
pdf_2 = beta.pdf(x, alpha_2, beta_2)

# 计算CDF(累积分布函数)
cdf_1 = beta.cdf(x, alpha_1, beta_1)
cdf_2 = beta.cdf(x, alpha_2, beta_2)

# 生成随机样本数据
samples_1 = beta.rvs(alpha_1, beta_1, size=1000)
samples_2 = beta.rvs(alpha_2, beta_2, size=1000)

# 创建图形和子图
fig, axs = plt.subplots(22, figsize=(1410))

# 绘制PDF
axs[00].plot(x, pdf_1, 'r-', label=f'Beta({alpha_1}{beta_1}) PDF')
axs[00].plot(x, pdf_2, 'b-', label=f'Beta({alpha_2}{beta_2}) PDF')
axs[00].set_title('Probability Density Function (PDF)')
axs[00].legend()

# 绘制CDF
axs[01].plot(x, cdf_1, 'r-', label=f'Beta({alpha_1}{beta_1}) CDF')
axs[01].plot(x, cdf_2, 'b-', label=f'Beta({alpha_2}{beta_2}) CDF')
axs[01].set_title('Cumulative Distribution Function (CDF)')
axs[01].legend()

# 绘制直方图
axs[10].hist(samples_1, bins=30, alpha=0.5, color='red', label=f'Beta({alpha_1}{beta_1}) Samples')
axs[10].hist(samples_2, bins=30, alpha=0.5, color='blue', label=f'Beta({alpha_2}{beta_2}) Samples')
axs[10].set_title('Histogram of Samples')
axs[10].legend()

# 绘制随机样本散点图
axs[11].scatter(range(1000), samples_1, alpha=0.5, color='red', label=f'Beta({alpha_1}{beta_1}) Samples')
axs[11].scatter(range(1000), samples_2, alpha=0.5, color='blue', label=f'Beta({alpha_2}{beta_2}) Samples')
axs[11].set_title('Scatter Plot of Samples')
axs[11].legend()

# 设置总体图标题
fig.suptitle('Beta Distribution Analysis', fontsize=16)
plt.tight_layout(rect=[0010.96])
plt.show()
  1. 参数设置:我们定义了两个不同的Beta分布参数组合(alpha_1, beta_1) 和 (alpha_2, beta_2)

  2. 生成数据

    • x 是从0到1之间的1000个点,用于计算PDF和CDF。
    • 使用beta.pdf()函数计算概率密度函数(PDF)。
    • 使用beta.cdf()函数计算累积分布函数(CDF)。
    • 使用beta.rvs()函数生成1000个随机样本,用于绘制直方图和散点图。
  3. 图形绘制

    • PDF图展示了两组参数下的Beta分布的概率密度。
    • CDF图展示了对应的累积分布函数。
    • 直方图展示了随机样本数据的分布。
    • 散点图展示了生成的随机样本数据。
图片

10. Dirichlet分布 (Dirichlet Distribution)

Dirichlet分布是多项分布的共轭先验分布,广泛应用于贝叶斯模型和主题模型中。

原理

Dirichlet分布是多变量的连续分布,用于表示多项分布参数的概率分布。

核心公式

其中,  是归一化常数,由Gamma函数构成。

推导:

  1. Dirichlet分布是Beta分布在多维空间的推广。
  2. 使用Gamma函数和多项式分布的性质,推导出Dirichlet分布的公式。
  3. 其归一化常数由高维的Gamma函数表示,确保概率总和为1。

Python实现

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 设置随机种子
np.random.seed(42)

# 生成Dirichlet分布数据
alpha = np.array([2537])  # 参数向量
data = np.random.dirichlet(alpha, size=1000)

# 计算每个组别的均值
mean_values = np.mean(data, axis=0)

# 图1:不同组别的分布(条形图)
plt.figure(figsize=(186))

plt.subplot(131)
sns.barplot(x=np.arange(1, len(alpha)+1), y=mean_values, palette="Set2")
plt.title("Mean Proportion of Each Category")
plt.xlabel("Category")
plt.ylabel("Mean Proportion")

# 图2:数据的散点图(散点图)
plt.subplot(132)
plt.scatter(data[:, 0], data[:, 1], alpha=0.5, s=10, c=data[:, 2], cmap='viridis')
plt.colorbar(label="Category 3 Proportion")
plt.title("Scatter plot of Category 1 vs. Category 2")
plt.xlabel("Category 1 Proportion")
plt.ylabel("Category 2 Proportion")

# 图3:饼图展示一个样本的比例
plt.subplot(133)
sample_idx = np.random.choice(range(1000))
plt.pie(data[sample_idx], labels=[f'Category {i+1}' for i in range(len(alpha))], autopct='%1.1f%%', colors=sns.color_palette("Set2"))
plt.title(f"Sample {sample_idx} Proportion Distribution")

plt.tight_layout()
plt.show()
  1. 条形图:显示各个类别的均值,这有助于我们理解不同组别之间的相对比例分布。
  2. 散点图:显示类别1与类别2之间的散点分布,并通过颜色区分类别3的比例。这种图形有助于我们理解两个类别之间的相关性。
  3. 饼图:展示一个随机样本中不同组别的比例分布。这有助于可视化单个数据点的具体分布情况。


最后

以上就是今天所有的内容了。
如果对你来说比较有用,记得点赞、收藏,慢慢学习~
下期会有更多干货等着你!~



——————概率游戏 ——————


  • 概率资本:概率资本涉足全球化投资组合,包括多市场、多渠道、多产品。具体表现为股票(A股、港股、美股及其他国家二级市场)、期货、外汇、及一级股权投资市场。


  • 顺势概率:趋势不会轻易形成,也不会轻易结束,一两个涨停跌停不足以改变趋势。顺势而为,概率优势是交易的理念。耐心等待属于自己的交易机会,赚自己看得懂的钱。


  • 发布频率:一般情况下,每两周筛选一次(周二左右),特殊情况下会有所调整;心态及文章分享会不定时发送。


  • 入场时机:交易机会不是做出来的,是等出来的。每次发布的入场时机基于第一入场时机原则,如果错过第一入场时机,就耐心等待下一个机会;下一次发布的时候如果入场机会还在,会继续入选,但如果有一段涨幅,可能就不再入选,但并不代表该标的没有继续上涨的机会,只是错过第一入场时机,激进的朋友可以追进去。这市场不缺机会,缺的是等待机会的耐心。


  • 投资组合:每次发布交易机会列表会把符合交易机会的交易标的全部筛选出来,对数量没有强制要求。没有强制规定一次只能选20个、30个或者50个,如果一个都不符合,可能一个也不发布,如果都符合,可能都会发布,和数量无关,只和是否符合交易原则有关。


  • 等待原则:弱水三千,只取一瓢饮。提高赢面,学会等待,放弃一切似是而非的机会;放弃、放弃、还是放弃, 放弃看不懂的复杂趋势;等待、等待、还是等待,等待能看懂的简单趋势。静静地等待,等待完全符合规则的机会出现,等待概率优势的机会出现,等待属于自己的机会。在等待概率优势机会的过程中,必须经得起各种诱惑,不要妄想抓住所有机会,只赚属于自己的钱,只交易属于自己的交易机会。


  • 统计世界:万物有周期、世事有轮回。周期、轮回、钟摆。万事万物皆可统计,统计,世界,统计世界;世界,统计,世界统计;大盘统计,统计大盘;大盘追踪,追踪大盘。多市场、多品种、多产品、多周期、多技术、多角度、多维度、多层次、多种类、多世界、多技术指标、多统计、多追踪。多维度多角度进行统计、个体、全体、局部、全局、一个维度、两个维度、多个维度、不同角度。1个统计不够,来两个,两个统计不够来一百个,一百个不够来一万个。多高度、多角度、多维度统计。大盘统计、大盘追踪,这世界没什么不能统计的。万物相通,周期轮回,在统计的过程中,你会有意无意发现这世界的奥妙规律。

  • 利弗莫尔:如果这一辈子我在投资交易中没有成功,并不是我没有这个能力,而是我自己不想成功。因为我已经知道了在市场中赢钱的办法:只要我有足够的耐心等待,只在市场的走势符合我的经验和理论,只在我有把握的范围内才行动,我就能赚到钱。而且,那样的机会早晚会出现的。如果我的投机事业最终失败了,肯定是因为我违背了自己的交易方法和经验教训,做了大量我自己也认为是错误的交易。例如,被市场走势诱惑追涨杀跌,无法控制自己贪婪的交易欲望,逆势交易,等等。


  • 合作机会:资方、机构合作,可以直接留言。


  • 欢迎关注微信公众号,后台回复【真实姓名-机构-职位-联系方式】加入概率资本交易圈。




【声明】内容源于网络
0
0
概率游戏耐心等待
股票、期货、期权、A股、美股、港股、基金、股指期货、商品期货、全球ETF、国债、外汇、黄金、石油、全球市场、全球品种、融资融券投资交流。涉足技术、宏观、心态、量化交易、机器学习、大盘统计。交易原则:概率游戏、耐心等待属于自己原则的交易机会。
内容 292
粉丝 0
概率游戏耐心等待 股票、期货、期权、A股、美股、港股、基金、股指期货、商品期货、全球ETF、国债、外汇、黄金、石油、全球市场、全球品种、融资融券投资交流。涉足技术、宏观、心态、量化交易、机器学习、大盘统计。交易原则:概率游戏、耐心等待属于自己原则的交易机会。
总阅读446
粉丝0
内容292