官术网_书友最值得收藏!

1.3 SciPy

SciPy為Python添加了大量的函數(shù)庫。由于SciPy在后端使用NumPy,因此通常這兩個(gè)組件需要一起安裝。關(guān)于SciPy的完整指南,可以查閱其官方文檔。

在本書中,我們主要聚焦于scipy.stats模塊。啟動Python,執(zhí)行如下代碼:

>>> import scipy
>>> scipy.__version__
'1.2.1'

以上代碼將加載SciPy并方便你確認(rèn)其版本是否符合最低要求,通常更新的版本在本書中也適用。

下面做幾個(gè)簡單的小實(shí)驗(yàn)。

>>> from scipy.stats import ttest_ind
>>> a = np.random.normal(0,1,1000)
>>> b = np.random.normal(0,0.5,1000)
>>> c = np.random.normal(0.1,1,1000)
>>> ttest_ind(a,b)
Ttest_indResult(statistic=-0.027161815649563964, pvalue=0.9783333836992686)
>>> ttest_ind(a,c)
Ttest_indResult(statistic=-2.295584443456226, pvalue=0.021802794508002675)

我們首先加載NumPy,然后從SciPy的stats模塊中導(dǎo)入ttest_ind函數(shù)。該函數(shù)能夠接收兩個(gè)集合作為參數(shù),比如來自兩個(gè)類別的數(shù)值集合,然后回答如下問題:這兩個(gè)集合的均值是否相同?或者更準(zhǔn)確地說,回答我們有多大把握相信這兩組數(shù)據(jù)來自同樣的生成過程。解決這個(gè)問題的一種經(jīng)典算法就是t檢驗(yàn)(t-test)。評估方式則是看結(jié)果中的p值,即pvalue一項(xiàng)。你可以把p值理解為,如果兩組數(shù)據(jù)來自同樣的生成過程,那么這兩組數(shù)據(jù)的均值差有多大概率與我們觀測的結(jié)果一致。如果概率接近1,則可以基本相信這兩組數(shù)據(jù)的生成過程相同。

a、b和c是一維數(shù)組,其中的元素(有1000個(gè)值)都取自高斯曲線(也稱為正態(tài)曲線)。我們會在后面詳細(xì)說明數(shù)據(jù)的生成過程,這里你只需要理解每個(gè)數(shù)值都取自一條鐘形曲線,這種曲線中間的部分相比邊緣更有可能被取樣。normal函數(shù)的前兩個(gè)參數(shù)分別定義均值和標(biāo)準(zhǔn)差,后者用于衡量曲線的寬度。也就是說,標(biāo)準(zhǔn)差越大,曲線的形狀越扁平,曲線越寬。

在這個(gè)例子中,我們預(yù)期a和b是十分相似的兩組數(shù)據(jù),因?yàn)樗鼈兊木刀际?.0,只不過它們?nèi)拥溺娦吻€在形狀上存在稍許差異。相比而言,c的均值為0.1。我們希望t檢驗(yàn)算法的結(jié)果能夠體現(xiàn)這兩者之間的差異,也就是告訴我們a和c不大可能來自同樣的生成過程。

函數(shù)ttest_ind執(zhí)行t檢驗(yàn)并輸出包含pvalue一項(xiàng)的信息。正如我們所料,輸入a和b,得到的p值約為0.98。這表示如果兩組數(shù)據(jù)來自同一生成過程,那么這兩組數(shù)據(jù)的均值差異有98%的概率與我們給出的數(shù)據(jù)一致。相比而言,當(dāng)輸入a和c時(shí),得到的p值約為0.027。這表示如果兩組數(shù)據(jù)的生成過程相同,那么它們的均值差異只有3%的概率符合我們給出的數(shù)據(jù)。因而我們可以推斷a和c來自不同的生成過程。我們稱這兩組數(shù)據(jù)具有統(tǒng)計(jì)顯著性差異。

傳統(tǒng)上,我們認(rèn)為p值小于0.05就具有統(tǒng)計(jì)顯著性了。然而使用這個(gè)閾值有些武斷,最近在復(fù)現(xiàn)一些實(shí)驗(yàn),尤其是軟科學(xué)中的實(shí)驗(yàn)時(shí),大家發(fā)現(xiàn)這個(gè)閾值應(yīng)該設(shè)置得更為嚴(yán)格。以p值等于0.05為閾值,這意味著每20次實(shí)驗(yàn)中就有1次結(jié)論錯誤(1/20 = 0.05),這樣的閾值過于寬泛。應(yīng)該說,p值接近0.05只能證明某個(gè)結(jié)論有可能是事實(shí),值得我們投入更多精力(和更大規(guī)模的數(shù)據(jù))去做進(jìn)一步研究。

主站蜘蛛池模板: 民和| 兰西县| 赤城县| 万荣县| 东丽区| 长垣县| 彭阳县| 磴口县| 方城县| 瑞丽市| 常州市| 天津市| 崇信县| 科尔| 平舆县| 姚安县| 长葛市| 张掖市| 荣成市| 金溪县| 乐清市| 阜南县| 岢岚县| 兴文县| 顺平县| 农安县| 镇雄县| 桦甸市| 花垣县| 娱乐| 宜丰县| 利川市| 惠东县| 奉新县| 慈利县| 永清县| 鄢陵县| 湖南省| 张北县| 汾西县| 崇礼县|