Python計算庫numpy進行方差/標準方差/樣本標準方差/協(xié)方差的計算
使用numpy可以做很多事情,在這篇文章中簡單介紹一下如何使用numpy進行方差/標準方差/樣本標準方差/協(xié)方差的計算。
variance: 方差
方差(Variance)是概率論中最基礎(chǔ)的概念之一,它是由統(tǒng)計學天才羅納德·費雪1918年最早所提出。用于衡量數(shù)據(jù)離散程度,因為它能體現(xiàn)變量與其數(shù)學期望(均值)之間的偏離程度。具有相同均值的數(shù)據(jù),而標準差可能不同,而通過標準差的大小則能更好地反映出數(shù)據(jù)的偏離度。
計算:一組數(shù)據(jù)1,2,3,4,其方差應(yīng)該是多少?
計算如下:
均值=(1+2+3+4)/4=2.5
方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/4 = (2.25+0.25+0.25+2.25)/4 = 1.25
python的numpy庫中使用var函數(shù)即可求解,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-5.py #!/usr/local/bin/python import numpy as np arr = np.array([1,2,3,4]) print("variance of [1,2,3,4]:", np.var(arr)) liumiaocn:tmp liumiao$ python np-5.py ('variance of [1,2,3,4]:', 1.25) liumiaocn:tmp liumiao$
standard deviation: 標準偏差
標準偏差=方差的開放,所以:
計算: 一組數(shù)據(jù)1,2,3,4,其標準偏差應(yīng)該是多少?
計算就很簡單了,對其求出的方差1.25進行開方運算即可得到大約1.118
可以使用numpy庫中的std函數(shù)就可以非常簡單的求解,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-6.py #!/usr/local/bin/python import numpy as np arr = np.array([1,2,3,4]) print("variance of [1,2,3,4]:", np.var(arr)) print("sqrt of variance [1,2,3,4]:",np.sqrt(np.var(arr))) print("standard deviation: np.std()", np.std(arr)) liumiaocn:tmp liumiao$ python np-6.py ('variance of [1,2,3,4]:', 1.25) ('sqrt of variance [1,2,3,4]:', 1.118033988749895) ('standard deviation: np.std()', 1.118033988749895) liumiaocn:tmp liumiao$
sample standard deviation: 樣本標準偏差
標準偏差是對總體樣本進行求解,如果有取樣,則需要使用樣本標準偏差,它也是一個求開方的運算,但是對象不是方差,方差使用是各個數(shù)據(jù)與數(shù)學均值的差的求和的均值,簡單來說除的對象是N,樣本偏差則是N-1。
計算: 一組數(shù)據(jù)1,2,3,4,其樣本標準偏差應(yīng)該是多少?
計算如下:
均值=(1+2+3+4)/4=2.5
樣本標準偏差的方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/3 = (2.25+0.25+0.25+2.25)/4 = 5/3
所以對5/3開方運算所得到的就是樣本標準偏差為:1.29
同樣適用numpy的std函數(shù)就可以做到這點,只需要將其一個Optional的參數(shù)設(shè)定為1即可,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-7.py #!/usr/local/bin/python import numpy as np arr = np.array([1,2,3,4]) print("sample standard deviation: np.std()", np.std(arr, ddof=1)) liumiaocn:tmp liumiao$ python np-7.py ('sample standard deviation: np.std()', 1.2909944487358056) liumiaocn:tmp liumiao$
注意:matlab中的std實際指的是樣本標準偏差,這點需要注意,如果你的代碼從matlab上copy過來,請注意其實際的意義是標準偏差還是樣本標準偏差
Covariance:協(xié)方差
協(xié)方差和方差較為接近,區(qū)別在于除數(shù)為N-1。
計算: 一組數(shù)據(jù)1,2,3,4,其協(xié)方差應(yīng)該是多少?
計算如下:
均值=(1+2+3+4)/4=2.5
方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/(4-1) = (2.25+0.25+0.25+2.25)/3 = 1.66667
使用numpy的cov函數(shù)即可簡單求出,代碼和執(zhí)行結(jié)果如下:
liumiaocn:tmp liumiao$ cat np-8.py #!/usr/local/bin/python import numpy as np arr = np.array([1,2,3,4]) print("Covariance: np.cov()", np.cov(arr)) liumiaocn:tmp liumiao$ python np-8.py ('Covariance: np.cov()', array(1.66666667)) liumiaocn:tmp liumiao$
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
pandas創(chuàng)建DataFrame對象失敗的解決方法
本文主要介紹了pandas創(chuàng)建DataFrame對象失敗的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對比詳解
今天小編就為大家分享一篇關(guān)于Django ForeignKey 反向查詢中filter和_set的效率對比詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python?Pygame實戰(zhàn)之五款童年經(jīng)典游戲合集
本文為大家總結(jié)了五款利用Python+Pygame實現(xiàn)的童年經(jīng)典游戲:推箱子、滑雪、八分音符醬、保衛(wèi)蘿卜和飛機大戰(zhàn),快跟隨小編一起學習一下2022-04-04