问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

正态分布的概率密度函数与分布函数可视化教程

创作时间:
作者:
@小白创作中心

正态分布的概率密度函数与分布函数可视化教程

引用
CSDN
1.
https://blog.csdn.net/yyyyypppppzzzzz/article/details/121952196

正态分布(Normal Distribution),也称高斯分布(Gaussian Distribution),是统计学中最重要的概率分布之一。其概率密度函数(Probability Density Function,PDF)和分布函数(Cumulative Distribution Function,CDF)在数据分析和科学计算中有着广泛的应用。本文将通过Python的matplotlib库,详细展示如何绘制不同参数下的正态分布曲线。

正态分布的基本概念

正态分布的概率密度函数公式为:

其中,μ是分布的均值(期望值),σ是标准差。当μ=0且σ=1时,称为标准正态分布。

分布函数(CDF)是概率密度函数的积分,表示随机变量小于等于某个值的概率。对于正态分布,其分布函数没有简单的闭式解,通常需要通过数值积分来计算。

Python代码实现

下面通过Python代码,分别绘制μ=0, σ=1;μ=0, σ=2;μ=1, σ=1三种情况下的正态分布概率密度函数和分布函数。

import sympy
import numpy as np
import matplotlib.pyplot as plt

# 设置matplotlib显示中文字体
plt.rcParams['font.sans-serif'] = 'KaiTi'
plt.rcParams['axes.unicode_minus'] = False

# 构造数据
def generate_normal_data(mu, sigma):
    x = np.arange(-10, 10, 0.1)
    y_pdf = np.exp(-((x - mu) ** 2) / (2 * sigma ** 2)) / (np.sqrt(2 * np.pi) * sigma)
    
    # 计算分布函数
    sympy_x = sympy.symbols('x')
    sympy_y = sympy.exp(-((sympy_x - mu) ** 2) / (2 * sigma ** 2)) / (sympy.sqrt(2 * np.pi) * sigma)
    sympy_Y = sympy.integrate(sympy_y)
    y_cdf = [sympy_Y.subs(sympy_x, i) - sympy_Y.subs(sympy_x, -float('inf')) for i in x]
    
    return x, y_pdf, y_cdf

# 生成不同参数的数据
data_1 = generate_normal_data(0, 1)
data_2 = generate_normal_data(0, 2)
data_3 = generate_normal_data(1, 1)

# 绘制概率密度函数
plt.figure(figsize=(10, 5))
plt.title("正态分布概率密度")
plt.plot(data_1[0], data_1[1], c='red', label='μ=0 σ=1')
plt.plot(data_2[0], data_2[1], c='green', label='μ=0 σ=2')
plt.plot(data_3[0], data_3[1], c='blue', label='μ=1 σ=1')
plt.xlabel('x', loc='right')
plt.ylabel('y', loc='top')
plt.legend(framealpha=1, frameon=True)
plt.show()

# 绘制分布函数
plt.figure(figsize=(10, 5))
plt.title("正态分布分布函数")
plt.plot(data_1[0], data_1[2], c='red', label='μ=0 σ=1')
plt.plot(data_2[0], data_2[2], c='green', label='μ=0 σ=2')
plt.plot(data_3[0], data_3[2], c='blue', label='μ=1 σ=1')
plt.xlabel('x', loc='right')
plt.ylabel('y', loc='top')
plt.legend(framealpha=1, frameon=True)
plt.show()

结果分析

通过上述代码,我们得到了以下三组参数下的正态分布曲线:


从图中可以看出:

  1. 当μ=0, σ=1时(红色曲线),这是标准正态分布,其概率密度函数在x=0处达到最大值,分布函数从0平滑上升到1。
  2. 当σ增大时(绿色曲线,σ=2),分布曲线变得更加扁平,表示数据的离散程度增加。
  3. 当μ改变时(蓝色曲线,μ=1),整个分布曲线向右平移,表示数据的中心位置发生了变化。

通过本文,读者不仅能够掌握正态分布的基本概念,还能学会如何使用Python进行可视化展示,这对于数据科学和统计学的学习具有重要的参考价值。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号