📌  相关文章
📜  如何在Python中使用 Matplotlib 计算和绘制累积分布函数?

📅  最后修改于: 2022-05-13 01:54:34.851000             🧑  作者: Mango

如何在Python中使用 Matplotlib 计算和绘制累积分布函数?

先决条件: Matplotlib

Matplotlib 是Python中的一个库,它是 NumPy 库的数值数学扩展。在 x 处评估的实值随机变量 X 的累积分布函数(CDF) 或仅 X 的分布函数是 X 取值小于或等于 x 的概率。

CDF 的特性:

  • 每个累积分布函数F(X) 都是非递减的
  • 如果 cdf函数的最大值在 x 处,则 F(x) = 1。
  • CDF 的范围从 0 到 1。

方法一:使用直方图

CDF 可以使用 PDF(概率分布函数)计算。随机变量的每个点都会累积贡献形成 CDF。

例子 :

方法

  • 导入模块
  • 声明数据点的数量
  • 初始化随机值
  • 使用上述数据绘制直方图
  • 获取直方图数据
  • 使用直方图数据查找 PDF
  • 计算 CDF
  • 绘制 CDF

例子:

Python3
# defining the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
  
# No of Data points
N = 500
  
# initializing random values
data = np.random.randn(N)
  
# getting data of the histogram
count, bins_count = np.histogram(data, bins=10)
  
# finding the PDF of the histogram using count values
pdf = count / sum(count)
  
# using numpy np.cumsum to calculate the CDF
# We can also find using the PDF values by looping and adding
cdf = np.cumsum(pdf)
  
# plotting PDF and CDF
plt.plot(bins_count[1:], pdf, color="red", label="PDF")
plt.plot(bins_count[1:], cdf, label="CDF")
plt.legend()


Python3
# defining the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
  
# No of data points used
N = 500
  
# normal distribution
data = np.random.randn(N)
  
# sort the data in ascending order
x = np.sort(data)
  
# get the cdf values of y
y = np.arange(N) / float(N)
  
# plotting
plt.xlabel('x-axis')
plt.ylabel('y-axis')
  
plt.title('CDF using sorting the data')
  
plt.plot(x, y, marker='o')


输出:

PDF 和 CDF 的直方图:

绘制的 CDF:

CDF绘图

方法二:数据排序

此方法描述了如何使用排序数据计算和绘制 CDF。为此,我们首先对数据进行排序,然后进行进一步的计算。

方法

  • 导入模块
  • 声明数据点的数量
  • 创建数据
  • 按升序对数据进行排序
  • 获取 CDF
  • 绘制 CDF
  • 显示图

例子:

蟒蛇3

# defining the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
  
# No of data points used
N = 500
  
# normal distribution
data = np.random.randn(N)
  
# sort the data in ascending order
x = np.sort(data)
  
# get the cdf values of y
y = np.arange(N) / float(N)
  
# plotting
plt.xlabel('x-axis')
plt.ylabel('y-axis')
  
plt.title('CDF using sorting the data')
  
plt.plot(x, y, marker='o')

输出: