資料科學的原理與技巧二、資料生成
二、資料生成
原文:DS-100/textbook/notebooks/ch02
譯者:飛龍
自豪地採用谷歌翻譯
資料科學很難成為沒有資料的科學。 因此重要的是,我們通過了解我們的資料是如何生成的,來啟動任何資料分析。
在本章中,我們將討論資料來源。 雖然術語“資料來源”通常指的是資料的整個歷史,以及它隨時間變化的位置,但我們將在本教科書中使用這個術語,來指代我們的資料的生成過程。 許多人得出了不成熟的結論,因為他們對資料的理解不夠細緻; 我們將討論一個例子來證明,概率抽樣在資料科學中的重要性。
Dewey 擊敗了 Truman
在 1948 年的美國總統大選中,紐約州州長托馬斯杜威(Thomas Dewey)與現任的杜魯門(Harry Truman)競爭。 像往常一樣,一些投票機構進行民意調查,來預測哪個候選人更有可能贏得選舉。
1936 年:以前的民意調查災難
在 1936 年,1948 年的三次選舉之前,《文學文摘》(Literary Digest)預言,富蘭克林·德拉諾·羅斯福會遇到斷崖式下跌,這使其聲名狼藉。為了做出這個斷言,該雜誌根據電話和車管局調查了 200 多萬人的樣本。 你可能知道,這種抽樣方案存在抽樣偏差:那些擁有電話和汽車的人往往比沒有的人更富有。 在這種情況下,抽樣偏差如此之大,足以使《文學文摘》認為羅斯福只有 43% 的大眾選票,而他最終以 61% 的大眾選票勝出,相差近 20%,這是有史以來,由民意調查引發的最大的錯誤。“文學文摘”不久之後就停刊了 [1]。
[1] https://www.qualtrics.com/blog/the-1936-election-a-polling-catastrophe/
1948 年:蓋洛普(Gallup)民意調查
為了從過去的錯誤中學習,蓋洛普民意調查採用了一種稱為配額抽樣的方法,來預測 1948 年選舉的結果。 在他們的抽樣方案中,每位採訪者都會調查來自每個特徵類別的一定數量的人。 例如,採訪者需要採訪不同年齡,種族和收入水平的男性和女性,來匹配美國人口普查的人口特徵。 這確保了民意調查不會遺漏投票人群的重要子分組。
使用這種方法,蓋洛普民意調查預測,托馬斯杜威將比哈里杜魯門多贏得 5% 的大眾選票。 這種差異非常顯著,眾所周知,《芝加哥論壇報》( Chicago Tribune)的標題是“杜威擊敗杜魯門”:
配額抽樣的問題
雖然配額抽樣確實有助於民意調查者減少抽樣偏差,但它以另一種方式引入了偏差。蓋洛普民意調查機構對其採訪者說,只要他們實現了配額,他們就可以採訪他們想要的任何人。為什麼採訪者的投票結果與共和黨人不成比例,以下是一個可能的解釋:當時,共和黨人平均較富裕,而且更有可能居住在較好的社群,這使他們更容易受到採訪。蓋洛普民意調查預測的共和黨票數,將比之前的 3 次選舉的實際結果多出 2 % 至 6%。
這些例子強調了在資料收集過程中,儘可能理解抽樣偏差的重要性。《文學文摘》和蓋洛普民意調查都錯誤地認為,當他們的抽樣方案始終基於人類判斷時,他們的方法是沒有偏差的。
我們現在依靠概率抽樣,一組抽樣方法,為每個樣本的外觀賦予精確的概率,來儘可能減少資料收集過程中的偏差。
大資料?
在大資料時代,我們試圖通過收集更多資料來應對偏差。 畢竟,我們知道人口普查會向我們提供完美的估計;不管抽樣技術如何,一個非常大的樣本不應該給出幾乎完美的估計值嘛?
在討論概率抽樣方法來比較兩種方法之後,我們將回到這個問題。
概率抽樣
與任意抽樣不同,概率抽樣允許我們,為抽取特定樣本的事件分配精確的概率。 我們將首先回顧 Data8 中的簡單隨機樣本,然後介紹概率抽樣的兩種替代方法:整群抽樣和分層抽樣。
假設我們有 6 個個體。 我們已經給了每個個體一封 的信。
簡單隨機抽樣
從這個總體中抽取大小為 2 的簡單隨機樣本,我們可以在單個索引卡片上寫下 的每個字母,將所有卡片放入一個帽子中,充分混合這些卡片,然後抽出兩張卡片而不看它們。 也就是說,SRS 是無放回隨機抽樣。
這裡是所有可能的大小為 2 的樣本:
我們的大小為 6 的總體,有 15 非可能的樣本,大小 2。 計算可能的樣本數量的另一種方法是:
由於在 SRS 中我們隨機均勻抽樣,這些 15 非樣本中的每個都是等可能選中的:
我們也可以使用這種機率機制,來回答樣本組成的其他問題。 例如:
根據對稱性,我們可以說:
另一種計算 的方法是,確認對於樣本中的 ,我們需要將其作為第一個彈子或第二個彈子來抽取。
整群抽樣
在整群抽樣中,我們將總體劃分為簇。 然後,我們使用 SRS 來隨機選擇簇而不是個體。
作為一個例子,假設我們從大小為 6 的總體選取個體,我們將他們中的每一個配對:,組成 3 個個體為 2 的簇。 然後,我們使用 SRS 選擇一個簇來產生大小為 2 的樣本。
和以前一樣,我們可以計算 在我們樣本中的概率:
與之類似,任何特定個體出現在我們的樣本中的概率是 。 請注意,這與我們的 SRS 相同。 然而,當我們觀察樣本本身時,我們看到了差異。 例如,在 SRS 中獲得 的機會與獲得 的機會相同,都是 。 但是,採用這種整群抽樣方案:
由於如果我們只選擇一個簇, 和 永遠不會出現在同一個樣本中。
整群抽樣仍然是抽率取樣,因為我們可以為每個潛在的抽樣分配一個概率。 然而,所得概率與使用 SRS 不同,取決於總體如何聚集。
為什麼使用整群抽樣? 整群抽樣是最有用的,因為它使得樣本收集更容易。 例如,調查 100 個城鎮的人口比調查遍佈整個美國的數千人要容易得多。 這就是今天許多民意調查機構使用整群抽樣形式進行調查的原因。
整群抽樣的主要缺點是,它往往會產生更大的估計差異。 這通常意味著,我們在使用整群抽樣時需要更大的樣本。 請注意,現實比這更復雜,但我們將把細節留給未來的抽樣技術課程。
分層抽樣
在分層抽樣中,我們將總體分成幾層,然後每層產生一個簡單隨機樣本。 在整群抽樣和分層抽樣中,我們將人口分成幾組;在整群抽樣中,我們使用單個 SRS 來選擇組,而在分層抽樣中,我們使用多個 SRS,每組有一個 SRS。
我們可以將我們大小為 6 的總體分成以下幾層:
我們使用 SRS 從每一層中選擇一個個體,來生成一個大小為 2 的樣本。這向我們提供了以下可能的樣本:
再次,我們可以計算 在我們樣本中的概率:
但是:
因為 和 不能出現在同一個樣本中。
與整群抽樣一樣,分層抽樣也是一種概率抽樣方法,它根據總體的分層情況產生不同的概率。 請注意,就像這個例子,層的大小不一定相同。 例如,我們可以根據職業對美國進行分層,然後根據美國職業分佈,從每個層級抽取樣本 – 如果美國只有 0.01% 的人是統計人員,我們可以確保我們樣本的 0.01% 將由統計人員組成。 簡單的隨機樣本可能完全忽略了可憐的統計人員!
你可能已經想到,分層抽樣可能被稱為配額抽樣的合理方式。 它允許研究人員確保總體中的子組,在樣本中得到很好的代表,而不用人為判斷來選擇樣本中的個體。 這通常會使估計差異較小。 然而,分層抽樣有時更難完成,因為我們有時不知道每一層有多大。 在前面的例子中,我們有美國人口普查的優勢,但有些時候我們並不那麼幸運。
為什麼是概率抽樣?
我們在 Data8 中看到,概率抽樣使我們能夠量化,我們對估計或預測的不確定性。 只有通過這個精確度,我們才能進行推斷和假設檢驗。 當任何人向你給出 p 值或置信度,而沒有正確解釋他們的抽樣技術時,要小心。
現在我們理解了概率抽樣,讓我們看看卑微的 SRS 與“大資料”相比如何。
SRS vs “大資料”
我們之前提到,通過使用大量資料來消除我們冗長的偏差問題,是很有吸引人的。按照定義,人口普查確實會產生無偏估計。如果我們收集大量資料,也許我們不必擔心偏差。
假設我們是 2012 年的民意調查者,試圖預測美國總統選舉的大眾投票,巴拉克·奧巴馬與米特·羅姆尼競爭。由於我們知道準確的大眾投票結果,因此我們可以比較 SRS 的預測,與大型非隨機資料集(通常稱為行政資料集)的預測,因為它們通常作為某些行政工作的一部分而收集。
我們將比較大小為 400 的 SRS 和大小為 60,000,000 的非隨機樣本。我們的非隨機樣本比我們的 SRS 大近 15 萬倍!由於 2012 年大約有 1.2 億選民,我們可以將我們的非隨機樣本看作一個調查,其中美國所有選民的一半做出了回應(沒有超過 10,000,000 個選民的實際調查)。
# HIDDEN
total = 129085410
obama_true_count = 65915795
romney_true_count = 60933504
obama_true = obama_true_count / total
romney_true = romney_true_count / total
# 1 percent off
obama_big = obama_true - 0.01
romney_big = romney_true + 0.01
這是一個繪圖,比較了非隨機樣本的比例與真實比例。 標有真實值的條形顯示了,每位候選人收到的選票的真實比例。 標有“大”的條形顯示了,我們 6000 萬選民的資料集中的比例。
pd.DataFrame({
`truth`: [obama_true, romney_true],
`big`: [obama_big, romney_big],
}, index=[`Obama`, `Romney`], columns=[`truth`, `big`]).plot.bar()
plt.title(`Truth compared to a big non-random dataset`)
plt.xlabel(`Candidate`)
plt.ylabel(`Proportion of popular vote`)
plt.ylim(0, 0.75)
None
我們可以看到,就像 1948 年的蓋洛普民意調查一樣,我們的大資料集僅僅有點偏向共和黨候選人羅姆尼。儘管如此,這個資料集可以向我們提供準確的預測。 為了檢查,我們可以從總體中模擬抽取大小為 400 的隨機樣本,和大小為 60,000,000 的大型非隨機樣本。 我們將計算每個樣本中的奧巴馬的選票比例,並繪製比例分佈圖。
srs_size = 400
big_size = 60000000
replications = 10000
def resample(size, prop, replications):
return np.random.binomial(n=size, p=prop, size=replications) / size
srs_simulations = resample(srs_size, obama_true, replications)
big_simulations = resample(big_size, obama_big, replications)
現在,我們將繪製模擬結果並放上一條紅線,表示投票給奧巴馬的選民的真實比例。
bins = bins=np.arange(0.47, 0.55, 0.005)
plt.hist(srs_simulations, bins=bins, alpha=0.7, normed=True, label=`srs`)
plt.hist(big_simulations, bins=bins, alpha=0.7, normed=True, label=`big`)
plt.title(`Proportion of Obama Voters for SRS and Big Data`)
plt.xlabel(`Proportion`)
plt.ylabel(`Percent per unit`)
plt.xlim(0.47, 0.55)
plt.ylim(0, 50)
plt.axvline(x=obama_true, color=`r`, label=`truth`)
plt.legend()
None
正如你所看到的,SRS 分佈是分散的,但圍繞著奧巴馬選民的真實總體比例。 另一方面,大型非隨機樣本建立的分佈非常狹窄,但沒有一個模擬樣本能夠產生真實總體比例。 如果我們嘗試使用非隨機樣本建立置信區間,則它們都不會包含真實總體比例。 更糟糕的是,由於樣本非常大,置信區間將非常狹窄。我們最終會確信錯誤估計。
事實上,當我們的抽樣方法有偏差時,由於我們收集了更多的資料,我們的估計會變得更糟,因為我們會更加確信不正確的結果,只有當我們的資料集幾乎是人口普查時才會變得更加準確。 資料的質量比它的大小重要得多。
重要結論
在接受資料分析結果之前,仔細檢查資料的質量是值得的。 特別是,我們必須提出以下問題:
資料是否為人口普查(是否包括整個人群)? 如果是這樣,我們可以直接計算總體的屬性而不必使用推斷。
如果資料是樣本,那麼樣本是如何收集的? 為了正確進行推斷,樣本應該根據概率抽樣方法收集。
在產生結果之前對資料進行了哪些更改? 這些變化是否會影響資料的質量?
對於隨機和非隨機大樣本之間的比較的更多細節,我們建議觀看統計學家 Xiao-Li Meng 的這個講座。
相關文章
- 資料科學的原理與技巧 一、資料科學的生命週期資料科學
- 2022年學習資料科學的技巧:資料科學
- 資料科學家的命令列技巧資料科學命令列
- 你與資料科學家只差這26條python技巧資料科學Python
- 著陸資料科學工作的8個技巧!資料科學
- Python資料科學(八)- 資料探索與資料視覺化Python資料科學視覺化
- 資料分析與資料探勘 - 04科學計算
- 資料科學資料科學
- WebSocket原理與實踐(四)--生成資料幀Web
- 資料分析師與資料科學家有什麼不同? - Reddit資料科學
- 資料科學、資料工程學習路線資料科學
- 10個SQL技巧之二:使用遞迴SQL生成資料SQL遞迴
- 【資料科學家】如何成為一名資料科學家?資料科學
- 資料科學與Python(習題彙總)資料科學Python
- 大資料到底怎麼學:資料科學概論與大資料學習誤區大資料資料科學
- 通往資料科學之路資料科學
- 做資料科學領域的「召喚師」,組織一場人人可參與的資料科學比賽資料科學
- 美國資深資料科學家暢聊:資料分析與北美電商資料科學
- 學習筆記(1):Python零基礎入門到實戰-資料科學原理與資料處理流程筆記Python資料科學
- (資料科學學習手札59)從抓取資料到生成shp檔案並展示資料科學
- 【譯Py】資料科學麵試終極指南(二)資料科學
- 資料科學求職建議:掌握5種型別的資料科學專案資料科學求職型別
- Spotify如何改進資料科學家的資料發現?資料科學
- 資料科學家已死?AutoML使得資料科學更加普及化 - enterpriseai資料科學TOMLAI
- 做資料分析必須瞭解的獲取資料與清洗資料技巧
- Python 資料科學之 PandasPython資料科學
- 【Python資料科學】之NumpyPython資料科學
- 《Python入門與資料科學庫》學習筆記Python資料科學筆記
- 機器學習工程師與資料科學家的大斗法機器學習工程師資料科學
- 公民資料科學家的侷限性資料科學
- 足球比賽中的資料科學資料科學
- Yahoo前任資料官:資料探勘與分析技巧(下)IF
- 資料科學的歷史,從洞穴壁畫到大資料資料科學大資料
- 學習資料科學的五大免費資源資料科學
- 資料科學家與機器學習工程師的區別? - kdnuggets資料科學機器學習工程師
- TikTok機器學習與資料科學家的面試題 - Reddit機器學習資料科學面試題
- 1688商品資料API介面的資料分析與挖掘技巧API
- 資料科學50年,資料科學家是否依然是21世紀最性感的職業?資料科學