日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 計(jì)算概率密度、累計(jì)分布、逆函數(shù)的例子

瀏覽:30日期:2022-08-06 14:20:17

計(jì)算概率分布的相關(guān)參數(shù)時(shí),一般使用 scipy 包,常用的函數(shù)包括以下幾個(gè):

pdf:連續(xù)隨機(jī)分布的概率密度函數(shù)

pmf:離散隨機(jī)分布的概率密度函數(shù)

cdf:累計(jì)分布函數(shù)

百分位函數(shù)(累計(jì)分布函數(shù)的逆函數(shù))

生存函數(shù)的逆函數(shù)(1 - cdf 的逆函數(shù))

函數(shù)里面不僅能跟一個(gè)數(shù)據(jù),還能跟一個(gè)數(shù)組。下面用正態(tài)分布舉例說(shuō)明:

>>> import scipy.stats as st>>> st.norm.cdf(0) # 標(biāo)準(zhǔn)正態(tài)分布在 0 處的累計(jì)分布概率值0.5>>> st.norm.cdf([-1, 0, 1])# 標(biāo)準(zhǔn)正態(tài)分布分別在 -1, 0, 1 處的累計(jì)分布概率值array([0.15865525, 0.5, 0.84134475])>>> st.norm.pdf(0) # 標(biāo)準(zhǔn)正態(tài)分布在 0 處的概率密度值0.3989422804014327>>> st.norm.ppf(0.975)# 標(biāo)準(zhǔn)正態(tài)分布在 0.975 處的逆函數(shù)值1.959963984540054>>> st.norm.lsf(0.975)# 標(biāo)準(zhǔn)正態(tài)分布在 0.025 處的生存函數(shù)的逆函數(shù)值1.959963984540054

對(duì)于非標(biāo)準(zhǔn)正態(tài)分布,通過(guò)更改參數(shù) loc 與 scale 來(lái)改變均值與標(biāo)準(zhǔn)差:

>>> st.norm.cdf(0, loc=2, scale=1) # 均值為 2,標(biāo)準(zhǔn)差為 1 的正態(tài)分布在 0 處的累計(jì)分布概率值0.022750131948179195

對(duì)于其他隨機(jī)分布,可能更改的參數(shù)不一樣,具體需要查官方文檔。下面我們舉一些常用分布的例子:

>>> st.binom.pmf(4, n=100, p=0.05) # 參數(shù)值 n=100, p=0.05 的二項(xiàng)分布在 4 處的概率密度值0.17814264156968956>>> st.geom.pmf(4, p=0.05) # 參數(shù)值 p=0.05 的幾何分布在 4 處的概率密度值0.04286875>>> st.poisson.pmf(2, mu=3) # 參數(shù)值 mu=3 的泊松分布在 2 處的概率密度值0.22404180765538775>>> st.chi2.ppf(0.95, df=10) # 自由度為 10 的卡方分布在 0.95 處的逆函數(shù)值18.307038053275146>>> st.t.ppf(0.975, df=10) # 自由度為 10 的 t 分布在 0.975 處的逆函數(shù)值2.2281388519649385>>> st.f.ppf(0.95, dfn=2, dfd=12) # 自由度為 2, 12 的 F 分布在 0.95 處的逆函數(shù)值3.8852938346523933

補(bǔ)充拓展:給定概率密度,生成隨機(jī)數(shù) python實(shí)現(xiàn)

實(shí)現(xiàn)的方法可以不止一種:

rejection sampling

invert the cdf

Metropolis Algorithm (MCMC)

本篇介紹根據(jù)累積概率分布函數(shù)的逆函數(shù)(2:invert the CDF)生成的方法。

自己的理解不一定正確,有錯(cuò)誤望指正。

目標(biāo):

已知 y=pdf(x),現(xiàn)想由給定的pdf, 生成對(duì)應(yīng)分布的x

PDF是概率分布函數(shù),對(duì)其積分或者求和可以得到CDF(累積概率分布函數(shù)),PDF積分或求和的結(jié)果始終為1

步驟(具體解釋后面會(huì)說(shuō)):

1、根據(jù)pdf得到cdf

2、由cdf得到inverse of the cdf

3、對(duì)于給定的均勻分布[0,1),帶入inverse cdf,得到的結(jié)果即是我們需要的x

求cdf逆函數(shù)的具體方法:

對(duì)于上面的第二步,可以分成兩類(lèi):

1、當(dāng)CDF的逆函數(shù)好求時(shí),直接根據(jù)公式求取,

2、反之當(dāng)CDF的逆函數(shù)不好求時(shí),用數(shù)值模擬方法

自己的理解:為什么需要根據(jù)cdf的逆去獲得x?

原因一:

因?yàn)閏df是單調(diào)函數(shù)因此一定存在逆函數(shù)(cdf是s型函數(shù),而pdf則不一定,例如正態(tài)分布,不單調(diào),對(duì)于給定的y,可能存在兩個(gè)對(duì)應(yīng)的x,就不可逆)

原因二:

這僅是我自己的直觀(guān)理解,根據(jù)下圖所示(左上為pdf,右上為cdf)

python 計(jì)算概率密度、累計(jì)分布、逆函數(shù)的例子

由步驟3可知,我們首先生成[0,1)的均勻隨機(jī)數(shù),此隨機(jī)數(shù)作為cdf的y,去映射到cdf的x(若用cdf的逆函數(shù)表示則是由x映射到y(tǒng)),可以參考上圖的右上,既然cdf的y是均勻隨機(jī)的,那么對(duì)于cdf中同樣范圍的x,斜率大的部分將會(huì)有更大的機(jī)會(huì)被映射,因?yàn)閷?duì)應(yīng)的y范圍更大(而y是隨即均勻分布的),那么,cdf的斜率也就等同于pdf的值,這正好符合若x的pdf較大,那么有更大的概率出現(xiàn)(即重復(fù)很多次后,該x會(huì)出現(xiàn)的次數(shù)最多)

代碼實(shí)現(xiàn)——方法一,公式法

import numpy as npimport mathimport randomimport matplotlib.pyplot as pltimport collectionscount_dict = dict()bin_count = 20def inverseCDF(): ''' return the x value in PDF ''' uniform_random = random.random() return inverse_cdf(uniform_random) def pdf(x): return 2 * x # cdf = x^2, 其逆函數(shù)很好求,因此直接用公式法def inverse_cdf(x): return math.sqrt(x)def draw_pdf(D):global bin_count D = collections.OrderedDict(sorted(D.items())) plt.bar(range(len(D)), list(D.values()), align=’center’) # 因?yàn)橛成鋌in的時(shí)候采用的floor操作,因此加上0.5 value_list = [(key + 0.5) / bin_count for key in D.keys()] plt.xticks(range(len(D)), value_list) plt.xlabel(’x’, fontsize=5) plt.ylabel(’counts’, fontsize=5) plt.title(’counting bits’) plt.show()for i in range(90000): x = inverseCDF() # 用bin去映射,否則不好操作 bin = math.floor(x * bin_count) # type(bin): int count_dict[bin] = count_dict.get(bin, 0) + 1draw_pdf(count_dict)

結(jié)果:

python 計(jì)算概率密度、累計(jì)分布、逆函數(shù)的例子

代碼實(shí)現(xiàn)——方法二,數(shù)值法

數(shù)值模擬cdf的關(guān)鍵是創(chuàng)建lookup table,

table的size越大則結(jié)果越真實(shí)(即區(qū)間劃分的個(gè)數(shù))

import numpy as npimport mathimport randomimport matplotlib.pyplot as pltimport collectionslookup_table_size = 40CDFlookup_table = np.zeros((lookup_table_size))count_dict = dict()bin_count = 20def inverse_cdf_numerically(y): global lookup_table_size global CDFlookup_table value = 0.0 for i in range(lookup_table_size): x = i * 1.0 / (lookup_table_size - 1) value += pdf2(x) CDFlookup_table[i] = value CDFlookup_table /= value # normalize the cdf if y < CDFlookup_table[0]: t = y / CDFlookup_table[0] return t / lookup_table_size index = -1 for j in range(lookup_table_size): if CDFlookup_table[j] >= y: index = j break # linear interpolation t = (y - CDFlookup_table[index - 1]) / (CDFlookup_table[index] - CDFlookup_table[index - 1]) fractional_index = index + t # 因?yàn)閕ndex從0開(kāi)始,所以不是 (index-1)+t return fractional_index / lookup_table_sizedef inverseCDF(): ''' return the x value in PDF ''' uniform_random = random.random() return inverse_cdf_numerically(uniform_random)def pdf2(x): return (x * x * x - 10.0 * x * x + 5.0 * x + 11.0) / (10.417)def draw_pdf(D): global bin_count D = collections.OrderedDict(sorted(D.items())) plt.bar(range(len(D)), list(D.values()), align=’center’) value_list = [(key + 0.5) / bin_count for key in D.keys()] plt.xticks(range(len(D)), value_list) plt.xlabel(’x’, fontsize=5) plt.ylabel(’counts’, fontsize=5) plt.title(’counting bits’) plt.show()for i in range(90000): x = inverseCDF() bin = math.floor(x * bin_count) # type(bin): int count_dict[bin] = count_dict.get(bin, 0) + 1draw_pdf(count_dict)

真實(shí)函數(shù)與模擬結(jié)果

python 計(jì)算概率密度、累計(jì)分布、逆函數(shù)的例子

擴(kuò)展:生成伯努利、正太分布

import numpy as npimport matplotlib.pyplot as plt'''reference:https://blog.demofox.org/2017/07/25/counting-bits-the-normal-distribution/'''def plot_bar_x(): # this is for plotting purpose index = np.arange(counting.shape[0]) plt.bar(index, counting) plt.xlabel(’x’, fontsize=5) plt.ylabel(’counts’, fontsize=5) plt.title(’counting bits’) plt.show()# if dice_side=2, is binomial distribution# if dice_side>2 , is multinomial distributiondice_side = 2# if N becomes larger, then multinomial distribution will more like normal distributionN = 100counting = np.zeros(((dice_side - 1) * N + 1))for i in range(30000): sum = 0 for j in range(N): dice_result = np.random.randint(0, dice_side) sum += dice_result counting[sum] += 1# normalizationcounting /= np.sum(counting)plot_bar_x()

以上這篇python 計(jì)算概率密度、累計(jì)分布、逆函數(shù)的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩免费小视频| 久久精品国产99国产| 日韩av资源网| 亚洲成人免费| 国产午夜精品一区在线观看| 香蕉成人久久| 性欧美69xoxoxoxo| 欧美手机在线| 91精品精品| 久久精品动漫| 久久久久久自在自线| 欧美好骚综合网| 久久久精品国产**网站| 视频国产精品| 日韩免费精品| 国产精品亚洲一区二区在线观看 | 中文字幕一区久| 精品国产精品久久一区免费式| 欧美1区2区3| 麻豆视频在线观看免费网站黄| 黄色不卡一区| 亚洲1234区| 在线一区视频| 日本亚洲不卡| 成人精品高清在线视频| 999久久久91| 亚洲精品自拍| 日韩国产91| 动漫av一区| 亚洲一级二级| 亚洲精品三级| 国产精品大片| 国产高清一区| 欧美黑人巨大videos精品| 国产成人精品一区二区免费看京| 在线一区视频观看| 日韩av不卡一区二区| 麻豆成全视频免费观看在线看| 久久在线电影| 欧美亚洲免费| 1024精品久久久久久久久| 欧美一区二区三区久久精品| 麻豆国产精品视频| 99国产精品久久久久久久| 国产精品videossex| 另类国产ts人妖高潮视频| 久久av电影| 亚洲精品看片| 激情欧美一区二区三区| 激情中国色综合| 亚洲日产av中文字幕| 久久久久国产精品一区三寸| 国产欧美日韩视频在线| 蜜桃视频在线观看一区| 91tv亚洲精品香蕉国产一区| 国产精品一区二区免费福利视频| 悠悠资源网久久精品| 国产精品hd| 久久高清一区| 国产高清一区| 五月婷婷六月综合| 亲子伦视频一区二区三区| 精品视频国产| 国产精品毛片久久久| 奇米狠狠一区二区三区| 欧美午夜不卡| 欧美日韩四区| 在线日韩欧美| 久久久久.com| 久久91导航| 日韩精品网站| 日韩精品电影| 精品黄色一级片| 久久天堂影院| 四虎成人av| 精品视频一区二区三区四区五区| 国产精品一区二区三区av麻| 国产探花一区在线观看| 欧美日韩xxxx| 国产精品99久久免费| 麻豆精品国产91久久久久久| 精品国产一区二区三区av片| 久久伊人国产| 亚洲精品在线影院| 亚洲香蕉网站| 中文字幕一区二区av| 国产日韩欧美在线播放不卡| 日韩精品成人| 欧美xxxx性| 中文av在线全新| 图片区亚洲欧美小说区| 亚洲不卡视频| 精品视频高潮| 国内亚洲精品| 免费看日韩精品| 日韩国产欧美视频| 国产色99精品9i| 99精品在线观看| 黄色精品网站| 国产精品亚洲人成在99www| 久久免费影院| 亚洲视频综合| 丝袜诱惑制服诱惑色一区在线观看 | 国产夫妻在线| 天堂日韩电影| 日本综合视频| 狠狠躁少妇一区二区三区| 国产精品日韩欧美一区| 日韩激情啪啪| 欧美国产亚洲精品| 91成人精品视频| 亚洲网址在线观看| 精品国产成人| 91国语精品自产拍| 麻豆视频久久| 日韩高清中文字幕一区| 久久人人97超碰国产公开结果| 日韩和欧美一区二区三区| 日韩欧美1区| 久久av偷拍| 亚洲欧美日韩精品一区二区| 国产日产一区| 在线精品一区二区| 99久久亚洲精品| 亚洲美女久久| 欧美日韩一区二区三区视频播放| 国产精品亚洲综合色区韩国| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久国产中文字幕| 成人午夜毛片| 欧美一区精品| 日韩高清电影一区| 久久亚洲影院| 亚洲欧美日韩综合国产aⅴ| 视频福利一区| 久久av网站| 国产福利资源一区| 国产伦精品一区二区三区视频 | 蜜桃久久久久久| 欧美日韩国产免费观看视频| 国产aⅴ精品一区二区四区| 国产精品一区二区中文字幕| 亚洲免费观看高清完整版在线观| 亚洲一卡久久| 午夜精品一区二区三区国产| 激情综合网站| 蜜臀va亚洲va欧美va天堂| 欧美日韩中文字幕一区二区三区| 99久久亚洲精品蜜臀| 久久亚洲国产| 免费视频久久| 免费日本视频一区| 国产日韩亚洲| 欧美激情 亚洲a∨综合| 国产精品**亚洲精品| 精品三级av| 1024精品一区二区三区| 亚洲深夜影院| 欧美日韩一区二区国产| 国产日产精品_国产精品毛片| 欧美91在线| 在线成人直播| 亚洲激情黄色| 日韩av黄色在线| 麻豆国产精品视频| 蜜桃一区二区三区| 日韩高清不卡在线| a日韩av网址| 男女性色大片免费观看一区二区| 久久精品凹凸全集| 国产超碰精品| 国产欧美一区二区色老头| 日韩成人a**站| 亚洲一区中文| 麻豆精品久久| 亚洲欧美久久| 亚欧洲精品视频在线观看| 国产欧美综合一区二区三区| 国产在线看片免费视频在线观看| 蘑菇福利视频一区播放| 91精品美女| 国产高清一区二区| 国产精品久久亚洲不卡| 国产亚洲精品久久久久婷婷瑜伽| 日本亚洲三级在线| 99国产精品免费视频观看| 久久精品xxxxx| 亚洲精品一级二级| 国产精品3区| 91麻豆精品激情在线观看最新| 久久久久午夜电影| 久久精品伊人| 蜜臀av性久久久久蜜臀aⅴ流畅| 高清日韩欧美| 国产精品99精品一区二区三区∴ | 另类综合日韩欧美亚洲| 鲁大师影院一区二区三区| 色偷偷偷在线视频播放| 国产欧美日韩精品一区二区免费 | 精品一区二区三区视频在线播放 |