Python實(shí)現(xiàn)繪制置信區(qū)間
置信區(qū)間是從觀測(cè)數(shù)據(jù)的統(tǒng)計(jì)量計(jì)算的一種估計(jì)值,它給出了一個(gè)可能包含具有特定置信水平的總體參數(shù)的值范圍。
平均值的置信區(qū)間是總體平均值可能位于其間的值的范圍。如果我預(yù)測(cè)明天的天氣在零下100度到+100度之間,我可以100%肯定這是正確的。然而,如果我預(yù)測(cè)溫度在20.4到20.5攝氏度之間,我就不那么有信心了。注意置信度如何隨著區(qū)間的減小而減小。這同樣適用于統(tǒng)計(jì)置信區(qū)間,但它們也依賴于其他因素。
一個(gè)95%的置信區(qū)間,會(huì)告訴我,如果我們從我的總體中取無(wú)限多個(gè)樣本,每次計(jì)算區(qū)間,那么在95%的區(qū)間中,區(qū)間將包含真正的總體均值。因此,對(duì)于一個(gè)樣本,我們可以計(jì)算樣本均值,并從中得到一個(gè)區(qū)間,該區(qū)間最有可能包含真實(shí)的總體均值。
置信區(qū)間(Confidence Interval)的概念是由Jerzy Neyman在1937年發(fā)表的一篇論文中提出的。置信區(qū)間有多種類型,最常用的是:平均值CI,中位數(shù)CI,平均值差異CI,比例CI和比例差異CI。
使用linepot()計(jì)算給定底層分布的CI
Seaborn中提供的lineplot()函數(shù)是一個(gè)Python數(shù)據(jù)可視化庫(kù),它最適合顯示一段時(shí)間內(nèi)的趨勢(shì),但它也有助于繪制置信區(qū)間。
sns.lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, dashes=True, markers=None, style_order=None, units=None, estimator=’mean’, ci=95, n_boot=1000, sort=True, err_style=’band’, err_kws=None, legend=’brief’, ax=None, **kwargs,)
默認(rèn)情況下,該圖在每個(gè)x值處聚合多個(gè)y值,并顯示集中趨勢(shì)的估計(jì)值和該估計(jì)值的置信區(qū)間。
示例
# import libraries import numpy as np import seaborn as sns import matplotlib.pyplot as plt # generate random data np.random.seed(0) x = np.random.randint(0, 30, 100) y = x+np.random.normal(0, 1, 100) ???????# create lineplot ax = sns.lineplot(x, y)
在上面的代碼中,變量x將存儲(chǔ)從0(含)到30(不含)的100個(gè)隨機(jī)整數(shù),變量y將存儲(chǔ)來(lái)自高斯(正態(tài))分布的100個(gè)樣本,該分布以0為中心,擴(kuò)展/標(biāo)準(zhǔn)偏差為1。NumPy操作通常在逐個(gè)元素的基礎(chǔ)上對(duì)數(shù)組對(duì)進(jìn)行。在最簡(jiǎn)單的情況下,兩個(gè)數(shù)組必須具有完全相同的形狀,如上面的示例所示。最后,在seaborn庫(kù)的幫助下創(chuàng)建一個(gè)默認(rèn)為95%置信區(qū)間的線圖。置信區(qū)間可以很容易地通過(guò)改變位于[0,100]范圍內(nèi)的參數(shù)“ci”的值來(lái)改變,這里我沒(méi)有傳遞這個(gè)參數(shù),因此它認(rèn)為默認(rèn)值為95。
淺藍(lán)色陰影表示該點(diǎn)周圍的置信水平,如果置信度較高,則陰影線將更粗。
使用regplot()計(jì)算給定底層分布CI
seaborn.regplot()幫助繪制數(shù)據(jù)和線性回歸模型擬合。此功能還允許繪制置信區(qū)間。
seaborn.regplot( x, y, data=None, x_estimator=None, x_bins=None, x_ci=’ci’, scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker=’o’, scatter_kws=None, line_kws=None, ax=None)
基本上,它包括散點(diǎn)圖中的回歸線,并有助于查看兩個(gè)變量之間的任何線性關(guān)系。下面的例子將展示如何使用它來(lái)繪制置信區(qū)間。
# import libraries import numpy as np import seaborn as sns import matplotlib.pyplot as plt # create random data np.random.seed(0) x = np.random.randint(0, 10, 10) y = x+np.random.normal(0, 1, 10) # create regression plot ax = sns.regplot(x, y, ci=80)
regplot()函數(shù)的工作方式與lineplot()相同,默認(rèn)情況下置信區(qū)間為95%。置信區(qū)間可以通過(guò)改變位于[0,100]范圍內(nèi)的參數(shù)“ci”的值來(lái)容易地改變。這里我傳遞了ci=80,這意味著繪制的置信區(qū)間不是默認(rèn)的95%,而是80%。
淡藍(lán)色陰影的寬度表示回歸線周圍的置信水平。
使用Bootstrapping計(jì)算CI
Bootstrapping是一種使用隨機(jī)抽樣和替換的測(cè)試/度量。它給出了準(zhǔn)確性的度量(偏差、方差、置信區(qū)間、預(yù)測(cè)誤差等)抽樣估計(jì)。它允許使用隨機(jī)抽樣方法估計(jì)大多數(shù)統(tǒng)計(jì)量的抽樣分布。它也可以用于構(gòu)建假設(shè)檢驗(yàn)。
# import libraries import pandas import numpy from sklearn.utils import resample from sklearn.metrics import accuracy_score from matplotlib import pyplot as plt # load dataset x = numpy.array([180,162,158,172,168,150,171,183,165,176]) # configure bootstrap n_iterations = 1000 # here k=no. of bootstrapped samples n_size = int(len(x)) # run bootstrap medians = list() for i in range(n_iterations): s = resample(x, n_samples=n_size); m = numpy.median(s); medians.append(m) # plot scores plt.hist(medians) plt.show() # confidence intervals alpha = 0.95 p = ((1.0-alpha)/2.0) * 100 lower = numpy.percentile(medians, p) p = (alpha+((1.0-alpha)/2.0)) * 100 upper = numpy.percentile(medians, p) ???????print(f"\n{alpha*100} confidence interval {lower} and {upper}")
導(dǎo)入所有必要的庫(kù)后,創(chuàng)建一個(gè)大小為n=10的樣本S,并將其存儲(chǔ)在變量x中。使用簡(jiǎn)單的循環(huán)生成1000個(gè)樣本(=k),每個(gè)樣本大小m=10(因?yàn)閙<=n)。這些樣本稱為bootstrapped樣本。計(jì)算它們的中位數(shù)并將其存儲(chǔ)在列表“medians”中。借助matplotlib庫(kù)繪制1000個(gè)bootstrapped樣本的中位數(shù)直方圖,并使用樣本統(tǒng)計(jì)量的公式置信區(qū)間計(jì)算基于樣本數(shù)據(jù)計(jì)算的指定置信水平下統(tǒng)計(jì)量總體值的上限和下限。
以上就是Python實(shí)現(xiàn)繪制置信區(qū)間的詳細(xì)內(nèi)容,更多關(guān)于Python置信區(qū)間的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
將圖片文件嵌入到wxpython代碼中的實(shí)現(xiàn)方法
前面一篇文章中提到的那個(gè)程序,GUI中包含了一張圖片。在編譯成exe文件發(fā)布時(shí),無(wú)法直接生成一個(gè)單獨(dú)的exe文件。因此需要直接把圖片寫(xiě)入到代碼中2014-08-08使用memory_profiler監(jiān)測(cè)python代碼運(yùn)行時(shí)內(nèi)存消耗方法
今天小編就為大家分享一篇使用memory_profiler監(jiān)測(cè)python代碼運(yùn)行時(shí)內(nèi)存消耗方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù)
這篇文章主要介紹了Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04- 這篇文章主要介紹了如何在 Python 中導(dǎo)入文本文件,在Python中導(dǎo)入文本文件是很常見(jiàn)的操作,我們可以使用內(nèi)置的open函數(shù)和with語(yǔ)句來(lái)讀取或?qū)懭胛谋疚募?,需要的朋友可以參考?/div> 2023-05-05
Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的MySQL類
這篇文章主要介紹了Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的MySQL類,可實(shí)現(xiàn)基本的初始化連接及查詢、刪除等功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01在Python函數(shù)中輸入任意數(shù)量參數(shù)的實(shí)例
今天小編就為大家分享一篇在Python函數(shù)中輸入任意數(shù)量參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07最新評(píng)論