python分布檢驗
⑴ 如何在python中計算累積正態分布
Python正態分布概率計算方法,喜歡演算法的夥伴們可以參考學習下。需要用到math模塊。先了解一下這個模塊方法,再來寫代碼會更好上手。
def st_norm(u):
'''標准正態分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數時默認為標准正態分布
輸入三個數(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
⑵ Python數據分析 | 數據描述性分析
首先導入一些必要的數據處理包和可視化的包,讀文檔數據並通過前幾行查看數據欄位。
對於我的數據來說,由於數據量比較大,因此對於缺失值可以直接做刪除處理。
得到最終的數據,並提取需要的列作為特徵。
對類別數據進行統計:
類別型欄位包括location、cpc_class、pa_country、pa_state、pa_city、assignee六個欄位,其中:
單變數統計描述是數據分析中最簡單的形式,其中被分析的數據只包含一個變數,不處理原因或關系。單變數分析的主要目的是通過對數據的統計描述了解當前數據的基本情況,並找出數據的分布模型。
單變數數據統計描述從集中趨勢上看,指標有:均值,中位數,分位數,眾數;從離散程度上看,指標有:極差、四分位數、方差、標准差、協方差、變異系數,從分布上看,有偏度,峰度等。需要考慮的還有極大值,極小值(數值型變數)和頻數,構成比(分類或等級變數)。
對於數值型數據,首先希望了解一下數據取值范圍的分布,因此可以用統計圖直觀展示數據分布特徵,如:柱狀圖、正方圖、箱式圖、頻率多邊形和餅狀圖。
按照發布的時間先後作為橫坐標,數值范圍的分布情況如圖所示.
還可以根據最終分類的結果查看這些數值數據在不同類別上的分布統計。
箱線圖可以更直觀的查看異常值的分布情況。
異常值指數據中的離群點,此處定義超出上下四分位數差值的1.5倍的范圍為異常值,查看異常值的位置。
參考:
python數據分析之數據分布 - yancheng111 - 博客園
python數據統計分析 -
科爾莫戈羅夫檢驗(Kolmogorov-Smirnov test),檢驗樣本數據是否服從某一分布,僅適用於連續分布的檢驗。下例中用它檢驗正態分布。
在使用k-s檢驗該數據是否服從正態分布,提出假設:x從正態分布。最終返回的結果,p-value=0.9260909172362317,比指定的顯著水平(一般為5%)大,則我們不能拒絕假設:x服從正態分布。這並不是說x服從正態分布一定是正確的,而是說沒有充分的證據證明x不服從正態分布。因此我們的假設被接受,認為x服從正態分布。如果p-value小於我們指定的顯著性水平,則我們可以肯定的拒絕提出的假設,認為x肯定不服從正態分布,這個拒絕是絕對正確的。
衡量兩個變數的相關性至少有以下三個方法:
皮爾森相關系數(Pearson correlation coefficient) 是反應倆變數之間線性相關程度的統計量,用它來分析正態分布的兩個連續型變數之間的相關性。常用於分析自變數之間,以及自變數和因變數之間的相關性。
返回結果的第一個值為相關系數表示線性相關程度,其取值范圍在[-1,1],絕對值越接近1,說明兩個變數的相關性越強,絕對值越接近0說明兩個變數的相關性越差。當兩個變數完全不相關時相關系數為0。第二個值為p-value,統計學上,一般當p-value<0.05時,可以認為兩變數存在相關性。
斯皮爾曼等級相關系數(Spearman』s correlation coefficient for ranked data ) ,它主要用於評價順序變數間的線性相關關系,在計算過程中,只考慮變數值的順序(rank, 秩或稱等級),而不考慮變數值的大小。常用於計算類型變數的相關性。
返回結果的第一個值為相關系數表示線性相關程度,本例中correlation趨近於1表示正相關。第二個值為p-value,p-value越小,表示相關程度越顯著。
kendall :
也可以直接對整體數據進行相關性分析,一般來說,相關系數取值和相關強度的關系是:0.8-1.0 極強 0.6-0.8 強 0.4-0.6 中等 0.2-0.4 弱 0.0-0.2 極弱。
⑶ python數據統計分析
1. 常用函數庫
scipy包中的stats模塊和statsmodels包是python常用的數據分析工具,scipy.stats以前有一個models子模塊,後來被移除了。這個模塊被重寫並成為了現在獨立的statsmodels包。
scipy的stats包含一些比較基本的工具,比如:t檢驗,正態性檢驗,卡方檢驗之類,statsmodels提供了更為系統的統計模型,包括線性模型,時序分析,還包含數據集,做圖工具等等。
2. 小樣本數據的正態性檢驗
(1) 用途
夏皮羅維爾克檢驗法 (Shapiro-Wilk) 用於檢驗參數提供的一組小樣本數據線是否符合正態分布,統計量越大則表示數據越符合正態分布,但是在非正態分布的小樣本數據中也經常會出現較大的W值。需要查表來估計其概率。由於原假設是其符合正態分布,所以當P值小於指定顯著水平時表示其不符合正態分布。
正態性檢驗是數據分析的第一步,數據是否符合正態性決定了後續使用不同的分析和預測方法,當數據不符合正態性分布時,我們可以通過不同的轉換方法把非正太態數據轉換成正態分布後再使用相應的統計方法進行下一步操作。
(2) 示例
(3) 結果分析
返回結果 p-value=0.029035290703177452,比指定的顯著水平(一般為5%)小,則拒絕假設:x不服從正態分布。
3. 檢驗樣本是否服務某一分布
(1) 用途
科爾莫戈羅夫檢驗(Kolmogorov-Smirnov test),檢驗樣本數據是否服從某一分布,僅適用於連續分布的檢驗。下例中用它檢驗正態分布。
(2) 示例
(3) 結果分析
生成300個服從N(0,1)標准正態分布的隨機數,在使用k-s檢驗該數據是否服從正態分布,提出假設:x從正態分布。最終返回的結果,p-value=0.9260909172362317,比指定的顯著水平(一般為5%)大,則我們不能拒絕假設:x服從正態分布。這並不是說x服從正態分布一定是正確的,而是說沒有充分的證據證明x不服從正態分布。因此我們的假設被接受,認為x服從正態分布。如果p-value小於我們指定的顯著性水平,則我們可以肯定地拒絕提出的假設,認為x肯定不服從正態分布,這個拒絕是絕對正確的。
4.方差齊性檢驗
(1) 用途
方差反映了一組數據與其平均值的偏離程度,方差齊性檢驗用以檢驗兩組或多組數據與其平均值偏離程度是否存在差異,也是很多檢驗和演算法的先決條件。
(2) 示例
(3) 結果分析
返回結果 p-value=0.19337536323599344, 比指定的顯著水平(假設為5%)大,認為兩組數據具有方差齊性。
5. 圖形描述相關性
(1) 用途
最常用的兩變數相關性分析,是用作圖描述相關性,圖的橫軸是一個變數,縱軸是另一變數,畫散點圖,從圖中可以直觀地看到相關性的方向和強弱,線性正相關一般形成由左下到右上的圖形;負面相關則是從左上到右下的圖形,還有一些非線性相關也能從圖中觀察到。
(2) 示例
(3) 結果分析
從圖中可以看到明顯的正相關趨勢。
6. 正態資料的相關分析
(1) 用途
皮爾森相關系數(Pearson correlation coefficient)是反應兩變數之間線性相關程度的統計量,用它來分析正態分布的兩個連續型變數之間的相關性。常用於分析自變數之間,以及自變數和因變數之間的相關性。
(2) 示例
(3) 結果分析
返回結果的第一個值為相關系數表示線性相關程度,其取值范圍在[-1,1],絕對值越接近1,說明兩個變數的相關性越強,絕對值越接近0說明兩個變數的相關性越差。當兩個變數完全不相關時相關系數為0。第二個值為p-value,統計學上,一般當p-value<0.05時,可以認為兩變數存在相關性。
7. 非正態資料的相關分析
(1) 用途
斯皮爾曼等級相關系數(Spearman』s correlation coefficient for ranked data ),它主要用於評價順序變數間的線性相關關系,在計算過程中,只考慮變數值的順序(rank, 值或稱等級),而不考慮變數值的大小。常用於計算類型變數的相關性。
(2) 示例
(3) 結果分析
返回結果的第一個值為相關系數表示線性相關程度,本例中correlation趨近於1表示正相關。第二個值為p-value,p-value越小,表示相關程度越顯著。
8. 單樣本T檢驗
(1) 用途
單樣本T檢驗,用於檢驗數據是否來自一致均值的總體,T檢驗主要是以均值為核心的檢驗。注意以下幾種T檢驗都是雙側T檢驗。
(2) 示例
(3) 結果分析
本例中生成了2列100行的數組,ttest_1samp的第二個參數是分別對兩列估計的均值,p-value返回結果,第一列1.47820719e-06比指定的顯著水平(一般為5%)小,認為差異顯著,拒絕假設;第二列2.83088106e-01大於指定顯著水平,不能拒絕假設:服從正態分布。
9. 兩獨立樣本T檢驗
(1) 用途
由於比較兩組數據是否來自於同一正態分布的總體。注意:如果要比較的兩組數據不滿足方差齊性, 需要在ttest_ind()函數中添加參數equal_var = False。
(2) 示例
(3) 結果分析
返回結果的第一個值為統計量,第二個值為p-value,pvalue=0.19313343989106416,比指定的顯著水平(一般為5%)大,不能拒絕假設,兩組數據來自於同一總結,兩組數據之間無差異。
10. 配對樣本T檢驗
(1) 用途
配對樣本T檢驗可視為單樣本T檢驗的擴展,檢驗的對象由一群來自正態分布獨立樣本更改為二群配對樣本觀測值之差。它常用於比較同一受試對象處理的前後差異,或者按照某一條件進行兩兩配對分別給與不同處理的受試對象之間是否存在差異。
(2) 示例
(3) 結果分析
返回結果的第一個值為統計量,第二個值為p-value,pvalue=0.80964043445811551,比指定的顯著水平(一般為5%)大,不能拒絕假設。
11. 單因素方差分析
(1) 用途
方差分析(Analysis of Variance,簡稱ANOVA),又稱F檢驗,用於兩個及兩個以上樣本均數差別的顯著性檢驗。方差分析主要是考慮各組之間的平均數差別。
單因素方差分析(One-wayAnova),是檢驗由單一因素影響的多組樣本某因變數的均值是否有顯著差異。
當因變數Y是數值型,自變數X是分類值,通常的做法是按X的類別把實例成分幾組,分析Y值在X的不同分組中是否存在差異。
(2) 示例
(3) 結果分析
返回結果的第一個值為統計量,它由組間差異除以組間差異得到,上例中組間差異很大,第二個返回值p-value=6.2231520821576832e-19小於邊界值(一般為0.05),拒絕原假設, 即認為以上三組數據存在統計學差異,並不能判斷是哪兩組之間存在差異 。只有兩組數據時,效果同 stats.levene 一樣。
12. 多因素方差分析
(1) 用途
當有兩個或者兩個以上自變數對因變數產生影響時,可以用多因素方差分析的方法來進行分析。它不僅要考慮每個因素的主效應,還要考慮因素之間的交互效應。
(2) 示例
(3) 結果分析
上述程序定義了公式,公式中,"~"用於隔離因變數和自變數,」+「用於分隔各個自變數, ":"表示兩個自變數交互影響。從返回結果的P值可以看出,X1和X2的值組間差異不大,而組合後的T:G的組間有明顯差異。
13. 卡方檢驗
(1) 用途
上面介紹的T檢驗是參數檢驗,卡方檢驗是一種非參數檢驗方法。相對來說,非參數檢驗對數據分布的要求比較寬松,並且也不要求太大數據量。卡方檢驗是一種對計數資料的假設檢驗方法,主要是比較理論頻數和實際頻數的吻合程度。常用於特徵選擇,比如,檢驗男人和女人在是否患有高血壓上有無區別,如果有區別,則說明性別與是否患有高血壓有關,在後續分析時就需要把性別這個分類變數放入模型訓練。
基本數據有R行C列, 故通稱RC列聯表(contingency table), 簡稱RC表,它是觀測數據按兩個或更多屬性(定性變數)分類時所列出的頻數表。
(2) 示例
(3) 結果分析
卡方檢驗函數的參數是列聯表中的頻數,返回結果第一個值為統計量值,第二個結果為p-value值,p-value=0.54543425102570975,比指定的顯著水平(一般5%)大,不能拒絕原假設,即相關性不顯著。第三個結果是自由度,第四個結果的數組是列聯表的期望值分布。
14. 單變數統計分析
(1) 用途
單變數統計描述是數據分析中最簡單的形式,其中被分析的數據只包含一個變數,不處理原因或關系。單變數分析的主要目的是通過對數據的統計描述了解當前數據的基本情況,並找出數據的分布模型。
單變數數據統計描述從集中趨勢上看,指標有:均值,中位數,分位數,眾數;從離散程度上看,指標有:極差、四分位數、方差、標准差、協方差、變異系數,從分布上看,有偏度,峰度等。需要考慮的還有極大值,極小值(數值型變數)和頻數,構成比(分類或等級變數)。
此外,還可以用統計圖直觀展示數據分布特徵,如:柱狀圖、正方圖、箱式圖、頻率多邊形和餅狀圖。
15. 多元線性回歸
(1) 用途
多元線性回歸模型(multivariable linear regression model ),因變數Y(計量資料)往往受到多個變數X的影響,多元線性回歸模型用於計算各個自變數對因變數的影響程度,可以認為是對多維空間中的點做線性擬合。
(2) 示例
(3) 結果分析
直接通過返回結果中各變數的P值與0.05比較,來判定對應的解釋變數的顯著性,P<0.05則認為自變數具有統計學意義,從上例中可以看到收入INCOME最有顯著性。
16. 邏輯回歸
(1) 用途
當因變數Y為2分類變數(或多分類變數時)可以用相應的logistic回歸分析各個自變數對因變數的影響程度。
(2) 示例
(3) 結果分析
直接通過返回結果中各變數的P值與0.05比較,來判定對應的解釋變數的顯著性,P<0.05則認為自變數具有統計學意義。
⑷ 統計學入門級:常見概率分布+python繪制分布圖
如果隨機變數X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變數。相應的概率分布有二項分布,泊松分布。
如果隨機變數X的所有取值無法逐個列舉出來,而是取數軸上某一區間內的任一點,則稱X為連續型隨機變數。相應的概率分布有正態分布,均勻分布,指數分布,伽馬分布,偏態分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在離散型隨機變數X的一切可能值中,各可能值與其對應概率的乘積之和稱為該隨機變數X的期望值,記作E(X) 。比如有隨機變數,取值依次為:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。
期望值也就是該隨機變數總體的均值。 推導過程如下:
= (2+2+2+4+5)/5
= 1/5 2 3 + 4/5 + 5/5
= 3/5 2 + 1/5 4 + 1/5 5
= 0.6 2 + 0.2 4 + 0.2 5
= 60% 2 + 20% 4 + 20%*5
= 1.2 + 0.8 + 1
= 3
倒數第三步可以解釋為值為2的數字出現的概率為60%,4的概率為20%,5的概率為20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。
0-1分布(兩點分布),它的隨機變數的取值為1或0。即離散型隨機變數X的概率分布為:P{X=0} = 1-p, P{X=1} = p,即:
則稱隨機變數X服從參數為p的0-1分布,記作X~B(1,p)。
在生活中有很多例子服從兩點分布,比如投資是否中標,新生嬰兒是男孩還是女孩,檢查產品是否合格等等。
大家非常熟悉的拋硬幣試驗對應的分布就是二項分布。拋硬幣試驗要麼出現正面,要麼就是反面,只包含這兩個結果。出現正面的次數是一個隨機變數,這種隨機變數所服從的概率分布通常稱為 二項分布 。
像拋硬幣這類試驗所具有的共同性質總結如下:(以拋硬幣為例)
通常稱具有上述特徵的n次重復獨立試驗為n重伯努利試驗。簡稱伯努利試驗或伯努利試驗概型。特別地,當試驗次數為1時,二項分布服從0-1分布(兩點分布)。
舉個栗子:拋3次均勻的硬幣,求結果出現有2個正面的概率 。
已知p = 0.5 (出現正面的概率) ,n = 3 ,k = 2
所以拋3次均勻的硬幣,求結果出現有2個正面的概率為3/8。
二項分布的期望值和方差 分別為:
泊松分布是用來描述在一 指定時間范圍內或在指定的面積或體積之內某一事件出現的次數的分布 。生活中服從泊松分布的例子比如有每天房產中介接待的客戶數,某微博每月出現伺服器癱瘓的次數等等。 泊松分布的公式為 :
其中 λ 為給定的時間間隔內事件的平均數,λ = np。e為一個數學常數,一個無限不循環小數,其值約為2.71828。
泊松分布的期望值和方差 分別為:
使用Python繪制泊松分布的概率分布圖:
因為連續型隨機變數可以取某一區間或整個實數軸上的任意一個值,所以通常用一個函數f(x)來表示連續型隨機變數,而f(x)就稱為 概率密度函數 。
概率密度函數f(x)具有如下性質 :
需要注意的是,f(x)不是一個概率,即f(x) ≠ P(X = x) 。在連續分布的情況下,隨機變數X在a與b之間的概率可以寫成:
正態分布(或高斯分布)是連續型隨機變數的最重要也是最常見的分布,比如學生的考試成績就呈現出正態分布的特徵,大部分成績集中在某個范圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。
正態分布的定義 :
如果隨機變數X的概率密度為( -∞<x<+∞):
則稱X服從正態分布,記作X~N(μ,σ²)。其中-∞<μ<+∞,σ>0, μ為隨機變數X的均值,σ為隨機變數X的標准差。 正態分布的分布函數
正態分布的圖形特點 :
使用Python繪制正態分布的概率分布圖:
正態分布有一個3σ准則,即數值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分數值是分布在(μ-3σ,μ+3σ)區間內,超出這個范圍的可能性很小很小,僅占不到0.3%,屬於極個別的小概率事件,所以3σ准則可以用來檢測異常值。
當μ=0,σ=1時,有
此時的正態分布N(0,1) 稱為標准正態分布。因為μ,σ都是確定的取值,所以其對應的概率密度曲線是一條 形態固定 的曲線。
對標准正態分布,通常用φ(x)表示概率密度函數,用Φ(x)表示分布函數:
假設有一次物理考試特別難,滿分100分,全班只有大概20個人及格。與此同時語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家後告訴家長,這時家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應該如何判斷呢?此時Z-score就派上用場了。 Z-Score的計算定義 :
即 將隨機變數X先減去總體樣本均值,再除以總體樣本標准差就得到標准分數啦。如果X低於平均值,則Z為負數,反之為正數 。通過計算標准分數,可以將任何一個一般的正態分布轉化為標准正態分布。
小明家長從老師那得知物理的全班平均成績為40分,標准差為10,而語文的平均成績為92分,標准差為4。分別計算兩科成績的標准分數:
物理:標准分數 = (60-40)/10 = 2
語文:標准分數 = (85-95)/4 = -2.5
從計算結果來看,說明這次考試小明的物理成績在全部同學中算是考得很不錯的,而語文考得很差。
指數分布可能容易和前面的泊松分布混淆,泊松分布強調的是某段時間內隨機事件發生的次數的概率分布,而指數分布說的是 隨機事件發生的時間間隔 的概率分布。比如一班地鐵進站的間隔時間。如果隨機變數X的概率密度為:
則稱X服從指數分布,其中的參數λ>0。 對應的分布函數 為:
均勻分布的期望值和方差 分別為:
使用Python繪制指數分布的概率分布圖:
均勻分布有兩種,分為 離散型均勻分布和連續型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現的點數就是一個離散型隨機變數,點數可能有1,2,3,4,5,6。每個數出現的概率都是1/6。
設連續型隨機變數X具有概率密度函數:
則稱X服從區間(a,b)上的均勻分布。X在等長度的子區間內取值的概率相同。對應的分布函數為:
f(x)和F(x)的圖形分別如下圖所示:
均勻分布的期望值和方差 分別為: