03.03 統計學中的置信區間是指什麼?

Arphetian


今天,我想談談統計學中的一個基本術語——置信區間,我希望以一種非常友好的方式來進行,只討論一般概念,沒有太多花哨的統計術語同時使用 python!


儘管這個術語是非常基礎的,但它有時很難完全理解(就像我之前那樣),究竟發生了什麼,為什麼我們需要它,我們應該在什麼時候使用它。


那麼我麼開始吧。


假設你想知道美國有多少人熱愛足球。為了得到 100% 正確的答案,你可以做的唯一一件事是向美國的每一位公民詢問他們是否熱愛足球。根據維基百科的說法,美國有超過 3.25 億的人口。與 3.25 億人談話並不現實,所以我們必須考慮其他事情,我們必須通過問(更)少的人來得到答案。


我們可以通過在美國隨機抽取一些人(與更少人交談)並獲得熱愛足球的人的百分比來做到這一點,但是我們不能 100% 確信這個數字是正確的,或者這個數字離真正的答案有多遠,所以,我們試圖實現的是獲得一個區間,例如,對這個問題的一個可能的答案是:「我 95% 相信在美國足球愛好者的比例是 58% 至 62%」。這就是置信區間名字的來源,我們有一個區間,並且我們對它此一定的信心。


邊注:非常重要的是我們的樣本是隨機的,我們不能只從我們居住的城市中選擇 1000 人,因為這樣就不能很好地代表整個美國。另一個不好的例子是,我們不能給這 1000 個隨機的人發 Facebook 消息,因為這樣我們就會得到美國 Facebook 用戶的代表,當然也不是所有的美國公民都使用 Facebook。


因此,假設我們隨機抽取了 1000 個美國人的樣本,我們發現,在 1000 人中有 63% 的人喜歡足球,我們能假設(推斷)出整個美國人口的情況嗎??


為了回答這個問題,我希望我們以一個不同的方式來看待它。假設我們知道(理論上)美國人的確切比例,假設它是 65%,那麼隨機挑選 1000 人只有 63% 的人喜歡足球的機會是多少?讓我們用 python 來探索這個問題!


love_soccer_prop = 0.65 # Real percentage of people who love soccer

total_population = 325*10**6 # Total population in the U.S. (325M)

num_people_love_soccer = int(total_population * love_soccer_prop)

num_people_dont_love_soccer = int(total_population * (1 - love_soccer_prop))

people_love_soccer = np.ones(num_of_people_who_love_soccer)

people_dont_love_soccer = np.zeros(num_

people_dont_love_soccer)

all_people = np.hstack([people_love_soccer, people_dont_love_soccer])

print np.mean(all_people)

# Output = 0.65000000000000002


在這段代碼中,我創建了一個擁有 3.25 億人的 numpy 數組,對於每個人,如果他/她喜歡足球,那麼我會存儲一,否則就是零。我們可以通過計算它的平均值來得到數組中的百分比,實際上它是 65%。


現在,讓我們取幾個樣本,看看我們得到的百分比是多少:


for i in range(10):

sample = np.random.choice(all_people, size=1000)

print 'Sample', i, ':', np.mean(sample)

# Output:

Sample 0 : 0.641

Sample 1 : 0.647

Sample 2 : 0.661

Sample 3 : 0.642

Sample 4 : 0.652

Sample 5 : 0.647

Sample 6 : 0.671

Sample 7 : 0.629

Sample 8 : 0.648

Sample 9 : 0.627


你可以看到對於每個樣本我麼獲得了不同的值,但直覺(和統計理論)表示,大量樣本的平均值應該非常接近真實百分比。讓我們這樣做!讓我們取很多樣本,然後看看會發生什麼:


values = []

for i in range(10000):

sample = np.random.choice(all_people, size=1000)

mean = np.mean(sample)

values.append(mean)

print np.mean(values)

# Output = 0.64982259999999992


我們創建了 10K 個樣本,檢查了每個樣本中熱愛足球的人的百分比,然後取平均值,我們得到了 64.98%,這非常接近於實際值 65%。讓我們畫出我們得到的所有值:



這裡你看到的是我們得到的所有樣本值的直方圖,這個直方圖的一個很好的性質是它和正態分佈非常相似。正如我所說的,我不想在這裡使用太多的統計術語,但假設如果我們這樣做了很多次(無限次),我們將得到一個非常接近正態分佈的直方圖,我們可以知道該分佈的參數。用更簡單的話來說,我們會知道這個直方圖的形狀,所以我們可以精確地知道有多少個樣本可以獲得任意值範圍。


下面是一個例子,我們會多次運行這個模擬(試圖達到無窮大):



首先,我們可以看到直方圖的中心(平均值)接近 65%,正如我們所預期的,但我們可以通過查看直方圖來得到更多信息,例如,我們可以說,一半樣本都大於 65%,或者我們可以說大約 25% 的樣品大於 67%,甚至可以說(大致)只有 2.5% 的樣本大於 68%。


在這一點上,很多人可能會問兩個重要的問題:「我怎樣才能取得無數的樣本?」和「它對我有什麼幫助?」。


讓我們回到我們的例子,我們抽取了 1000 人的樣本,得到了 63%,我們想知道,隨機抽樣的 1000 人中有 63% 的足球愛好者的概率是多少。使用這個直方圖,我們可以說有(大概)25%的概率,我們會得到一個小於或等於 63% 的值。該理論告訴我們,我們實際上並不需要得到無限的樣本,如果我們隨機選擇 1000 人,只有 63% 的人喜歡足球是可能發生的。


邊注#2:實際上,為了實現這一切(找到值範圍的概率),我們需要知道或至少估計人口的標準偏差。因為我想把事情變得簡單一點,我現在先不討論它。


讓我們回到現實和真正的問題,我不知道美國足球愛好者的實際比例,我只抽取了一個樣本,得到了 63%,這對我有什麼幫助?


所以,我們不知道在美國熱愛足球的人的實際比例。我們所知道的是,如果我們取無數個樣本,它將如下所示:



這裡 μ 是人口的平均值(我們例子中足球愛好者的實際百分比),σ 是人口的標準差。

如果我們知道這一點(並且我們知道標準差),我們可以說約 64% 的樣品會落在紅色區域,或者 95% 以上的樣品會落在圖中的綠色區域之外:



如果我們在假設實際百分比為 65% 之前使用該圖,那麼 95% 以上的樣本將在 62% 和 68% 之間(+ - 3)



當然,距離是對稱的,所以如果樣本百分比有 95% 落在在實際百分比 -3 和實際百分比 +3 之間,那麼真實百分比將是樣本百分比 -3 和樣本百分比 +3 之間的 95%。


如果我們抽取一個樣本,得到了 63%,那麼我們可以說我們 95% 確信實際比例在 60%(63-3)和 66%(63 + 3)之間。


這就是置信區間,區間為 63 + -3,置信度為 95%。


我希望現在置信區間更有意義,正如我之前所說,這個介紹忽略了一些重要的技術性的部分。有很多文章包含了這些部分,我希望現在能夠更容易地跟上它們。


機器之心Pro


為什麼需要置信區間?

因為有時只用點估計不夠,需要再進行區間估計,即參數最可能的取值範圍,即題主的“置信區間”

機器之心用py實例答,很精彩!

我以t統計量出發,偏理論的說一下:

首先引入“置信度”的概念~

即t統計量落入接受域的概率為1-α


變形得到:

則“置信區間”為:

圖示為:


皮壹俠


置信區間、置信度都是用來衡量所採集數據樣本數的可靠程度的。它們成對出現,例如置信區間(a,b),置信度90%,意思就是說根據你所採集的數據進行估算,可以推斷,90%的(未知)數據會落在(a,b)區間內。

天氣預報、事故控制等工作有時就是根據它來進行預測,並進行可靠性控制的。


分享到:


相關文章: