概率概率亦稱“或然率”。它反映隨機事件出現(xiàn)的可能性大小的量度。隨機事件是指在相同條件下,可能出現(xiàn)也可能不出現(xiàn)的事件。例如,從一批有正品和次品的商品中,隨意抽取一件,“抽得的是正品”就是一個隨機事件。設(shè)對某一隨機現(xiàn)象進行了n次試驗與觀察,其中A事件出現(xiàn)了m次,即其出現(xiàn)的頻率為m/n。經(jīng)過大量反復(fù)試驗,常有m/n越來越接近于某個確定的常數(shù)。該常數(shù)即為事件A出現(xiàn)的概率,常用P (A) 表示。 基本定義:
舉例:擲兩個骰子,希望擲出7。 36個樣本點組成的樣本空間。 6個樣本點得到7,所以擲出7的概率是6 / 36 = 0.167 (16.7%)。 P(A) = 0.167 傾斜(Bias): 有時樣本空間中的樣本點沒有相同的概率,我們稱這種情況是傾斜,使得一個結(jié)果比另一個結(jié)果可能性更大,例如: A代表天晴,B代表多云,C代表下雨。 P(A) = 0.6; P(B) = 0.3; P(C) = 0.1 P(A′) = 1 ? P(A) = 1 ? 0.6 = 0.4,A′代表任何一個非晴天 條件概率 事件有以下幾種類型:
獨立事件: 例如投硬幣,樣本空間有兩個可能結(jié)果:正面和背面。得到正面的概率和得到背面的概率都是1/2,每次投硬幣都是一個獨立事件,意味著每次的結(jié)果都不會依賴上一次。 %matplotlib inlineimport random# Create a list with 2 element (for heads and tails)heads_tails = [0,0] # loop through 10000 trialstrials = 10000trial = 0while trial < trials: trial = trial + 1 # Get a random 0 or 1 toss = random.randint(0,1) # Increment the list element corresponding to the toss result heads_tails[toss] = heads_tails[toss] + 1 print (heads_tails) # Show a pie chart of the resultsfrom matplotlib import pyplot as pltplt.figure(figsize=(5,5))plt.pie(heads_tails, labels=['heads', 'tails'])plt.legend()plt.show() [4994, 5006] 如果連續(xù)投硬幣三次,三次都是正面的概率又是多少呢? 這樣的情況就是獨立事件組合。 P(A) = 1/2 * 1/2 * 1/2 = 0.125 依賴事件: 我們來考慮抽撲克牌場景,樣本空間如下: A代表抽取黑色牌,B代表抽取紅色牌。 抽一張牌: 假定不放回去,事件A和B的概率變成: 考慮這樣一個場景:在給定事件A為抽一張黑色牌的前提下,抽一張紅色牌的概率是?這就是所謂的條件概率。 互斥事件: 二項分布: 二項分布就是重復(fù)n次獨立的伯努利試驗。在每次試驗中只有兩種可能的結(jié)果,而且兩種結(jié)果發(fā)生與否互相對立,并且相互獨立,與其它各次試驗結(jié)果無關(guān),事件發(fā)生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n重伯努利實驗,當試驗次數(shù)為1時,二項分布服從0-1分布。
對于二項變量,我們使用該公式來計算概率質(zhì)量函數(shù)。
是離散隨機變量在各特定取值上的概率。概率質(zhì)量函數(shù)和概率密度函數(shù)不同之處在于:概率密度函數(shù)是對連續(xù)隨機變量定義的。 舉例:機場安檢,進行5次試驗,每次試驗都會有一個乘客過安檢,過安檢時會有兩種狀態(tài):被搜身或不搜身,每個乘客被搜身的概率是25%,5位乘客中有3位被搜身的概率是多少?除了通過公式計算外,我們通過scipy.stats.binom.pmf來看下整個分布。 %matplotlib inlinefrom scipy.stats import binomfrom matplotlib import pyplot as pltimport numpy as np n = 5p = 0.25x = np.array(range(0, n+1)) prob = np.array([binom.pmf(k, n, p) for k in x]) # Set up the graphplt.xlabel('x')plt.ylabel('Probability')plt.bar(x, prob)plt.show() 從圖中可以看出,該分布是右傾斜的,原因很簡單,n取值太小,讓我們增加n到100來看看。 %matplotlib inlinefrom scipy.stats import binomfrom matplotlib import pyplot as pltimport numpy as np n = 100p = 0.25x = np.array(range(0, n+1)) prob = np.array([binom.pmf(k, n, p) for k in x]) # Set up the graphplt.xlabel('x')plt.ylabel('Probability')plt.bar(x, prob)plt.show()
μ = np 以上例子的期望值是:μ = 100 × 0.25 = 25,意味著100位乘客有25位乘客被搜身。
方差: 標準差: from scipy.stats import binom n = 100p = 0.25 print(binom.mean(n,p))print(binom.var(n,p))print(binom.std(n,p)) 25.0 18.75 4.330127018922194 假設(shè)檢驗 學(xué)生們結(jié)束了今年的學(xué)業(yè),被要求為其中一門課數(shù)據(jù)科學(xué)打分,-5(糟糕)到5(很好),該課程是通過網(wǎng)上在線形式教授的,受眾學(xué)生成千上萬,這里獲取50個隨機樣本數(shù)據(jù)。 import numpy as npimport matplotlib.pyplot as plt%matplotlib inline np.random.seed(123)lo = np.random.randint(-5, -1, 6)mid = np.random.randint(0, 3, 38)hi = np.random.randint(4, 6, 6)sample = np.append(lo,np.append(mid, hi))print('Min:' + str(sample.min()))print('Max:' + str(sample.max()))print('Mean:' + str(sample.mean())) plt.hist(sample)plt.show() Min:-5 Max:5 Mean:0.84 該樣本的均值0.84意味著學(xué)生們對該課的態(tài)度還是正面的,也就是喜歡該課,但這個結(jié)論只是基于隨機樣本,那如果是整個數(shù)據(jù)呢?我們來定義兩個假設(shè):
H0 : μ ≤ 0 H1 : μ > 0 如果H0假設(shè)正確,50個樣本分布會是一個正態(tài)分布,均值是0。 import numpy as npimport matplotlib.pyplot as plt%matplotlib inline pop = np.random.normal(0, 1.15, 100000)plt.hist(pop, bins=100)plt.axvline(pop.mean(), color='yellow', linestyle='dashed', linewidth=2)plt.show() T檢驗,亦稱student t檢驗(Student's t test),主要用于樣本含量較小(例如n < 30),總體標準差σ未知的正態(tài)分布。 T檢驗是用t分布理論來推論差異發(fā)生的概率,從而比較兩個平均數(shù)的差異是否顯著。單樣本t檢驗是檢驗一個樣本平均數(shù)與一個已知的總體平均數(shù)的差異是否顯著。當總體分布是正態(tài)分布,如總體標準差未知且樣本容量小于30,那么樣本平均數(shù)與總體平均數(shù)的離差統(tǒng)計量呈t分布。 單樣本t檢驗公式: x?是樣本均值,μ是總體均值,s是標準差,n是樣本均值。 from scipy import statsimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline # T-Testt,p = stats.ttest_1samp(sample, 0)# ttest_1samp is 2-tailed, so half the resulting p-value to get a 1-tailed p-valuep1 = '%f' % (p/2)print ('t-statistic:' + str(t))print('p-value:' + str(p1)) # calculate a 90% confidence interval. 10% of the probability is outside this, 5% in each tailci = stats.norm.interval(0.90, 0, 1.15)plt.hist(pop, bins=100)# show the hypothesized population meanplt.axvline(pop.mean(), color='yellow', linestyle='dashed', linewidth=2)# show the right-tail confidence interval threshold - 5% of propbability is under the curve to the right of this.plt.axvline(ci[1], color='red', linestyle='dashed', linewidth=2)# show the t-statistic - the p-value is the area under the curve to the right of thisplt.axvline(pop.mean() + t*pop.std(), color='magenta', linestyle='dashed', linewidth=2)plt.show() t-statistic:2.773584905660377 p-value:0.003911 黃線代表H0假設(shè)的總體均值,紅線右邊和曲線下方圍成的區(qū)域表達了顯著性水平0.05(5%),紫線右邊和曲線下方圍成的區(qū)域表達了p-value。 p-value:統(tǒng)計學(xué)根據(jù)顯著性檢驗方法所得到的P 值,一般以P < 0.05 為顯著, P <0.01 為非常顯著,其含義是樣本間的差異由抽樣誤差所致的概率小于0.05 或0.01。 那結(jié)論是什么呢? p-value小于顯著性水平0.05,說明樣本間的差異由抽樣誤差所致的概率小于0.05,很低,意味著我們可以合理的拒絕H0,也就是說總均值大于0,該課程的評價分數(shù)是積極的、正面的。 雙尾檢驗: 重新定義之前的假設(shè)
H0 : μ = 0 H1 : μ != 0 from scipy import stats import numpy as np import matplotlib.pyplot as plt %matplotlib inline # T-Test t,p = stats.ttest_1samp(sample, 0) print ('t-statistic:' + str(t)) # ttest_1samp is 2-tailed print('p-value:' + '%f' % p) # calculate a 95% confidence interval. 50% of the probability is outside this, 2.5% in each tail ci = stats.norm.interval(0.95, 0, 1.15) plt.hist(pop, bins=100) # show the hypothesized population mean plt.axvline(pop.mean(), color='yellow', linestyle='dashed', linewidth=2) # show the confidence interval thresholds - 5% of propbability is under the curve outside these. plt.axvline(ci[0], color='red', linestyle='dashed', linewidth=2) plt.axvline(ci[1], color='red', linestyle='dashed', linewidth=2) # show the t-statistic thresholds - the p-value is the area under the curve outside these plt.axvline(pop.mean() - t*pop.std(), color='magenta', linestyle='dashed', linewidth=2) plt.axvline(pop.mean() + t*pop.std(), color='magenta', linestyle='dashed', linewidth=2) plt.show() t-statistic:2.773584905660377 p-value:0.007822 雙尾p-value小于0.05,所以我們拒絕H0假設(shè)。 兩樣本檢驗: 這里不再累述。 |
|
來自: taotao_2016 > 《AI》