簡體   English   中英

Python 中的帕累托分布 Plot PDF

[英]Plot PDF of Pareto distribution in Python

我有一個特定的帕累托分布 例如,

Pareto(beta=0.00317985, alpha=0.147365, gamma=1.0283)

我從這個答案中獲得,現在我想 plot matplotlib 中的概率密度圖Function (PDF)。 所以我相信x軸都是正實數,y軸也是一樣的。

我究竟如何才能獲得相應的 PDF 信息和 plot 呢? 以編程方式獲得數學 PDF function 或坐標是此問題的要求。


更新:

drawPDF方法返回一個圖形 object,其中包含 PDF 的坐標。 但是,我不知道如何以編程方式訪問這些坐標。 我當然不想將 object 轉換為字符串,也不想使用正則表達式來提取信息:

In [45]: pdfg = distribution.drawPDF()

In [46]: pdfg
Out[46]: class=Graph name=pdf as a function of X0 implementation=class=GraphImplementation name=pdf as a function of X0 title= xTitle=X0 yTitle=PDF axes=ON grid=ON legendposition=topright legendFontSize=1
 drawables=[class=Drawable name=Unnamed implementation=class=Curve name=Unnamed derived from class=DrawableImplementation name=Unnamed legend=X0 PDF data=class=Sample name=Unnamed implementation=class=Sam
pleImplementation name=Unnamed size=129 dimension=2 data=[[-1610.7,0],[-1575.83,0],[-1540.96,0],[-1506.09,0],[-1471.22,0],[-1436.35,0],[-1401.48,0],[-1366.61,0],...,[-1331.7,6.95394e-06],[2852.57,6.85646e-06]] color
=red fillStyle=solid lineStyle=solid pointStyle=none lineWidth=2]

我假設您要執行不同的任務:

  1. 至 plot PDF
  2. 在單點計算 PDF
  3. 計算一系列值的 PDF

這些需求中的每一個都需要不同的腳本。 請讓我詳細說明它們。

我首先創建Pareto分布:

import openturns as ot
import numpy as np
beta = 0.00317985
alpha = 0.147365
gamma = 1.0283
distribution = ot.Pareto(beta, alpha, gamma)
print("distribution", distribution)

對於 plot PDF,使用drawPDF()方法。 這將創建一個ot.Graph可以直接在 Jupyter Notebook 或 IPython 中查看。 我們可以使用View強制創建 plot :

import openturns.viewer as otv
graph = distribution.drawPDF()
otv.View(graph)

這情節:

帕累托分布 PDF

要在單個點計算 PDF,請使用computePDF(x) ,其中xot.Point() 這也可以是 Python listtuple或一維 numpy array ,因為轉換由 OpenTURNS 自動管理:

x = 500.0
y = distribution.computePDF(x)
print("y=", y)

前面的腳本打印:

y= 5.0659235352823877e-05

要計算一系列值的 PDF,我們可以使用computePDF(x) ,其中 x 是ot.Sample() 這也可以是 Python list列表或 2D numpy array ,因為轉換由 OpenTURNS 自動管理。

x = ot.Sample([[v] for v in np.linspace(0.0, 1000.0)])
y = distribution.computePDF(x)
print("y=", y)

前面的腳本打印:

y= 
 0 : [ 0           ]
 1 : [ 0.00210511  ]
 [...]
 49 : [ 2.28431e-05 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM