@ -4,8 +4,8 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction to Probability and Statistics \n",
"In this notebook, we will play around with some of the concepts we have previously discussed. Many concepts from probability and statistics are well-represented in major libraries for data processing in Python, such as `numpy` and `pandas`. \n"
"# 概率與統計簡介 \n",
"在本筆記本中,我們將操弄一些之前討論過的概念。許多來自概率與統計的概念在 Python 的主要資料處理函式庫中都有良好展現,例如 `numpy` 和 `pandas`。 \n"
]
},
{
@ -24,8 +24,8 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## 隨機變量 與分佈\n",
"讓我們從介乎 0 至 9 的均勻分佈中抽取 30 個樣本值。 我們亦會計算平均數和 變異數。\n"
"## 隨機變數 與分佈\n",
"我們先從 0 到 9 的均勻分佈中抽取 30 個數值的樣本。並且計算其平均值及 變異數。\n"
]
},
{
@ -44,7 +44,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"為了視覺上估計樣本中有多少不同的值,我們可以繪製**直方圖** : \n"
"要視覺上估計樣本中有多少不同的值,我們可以繪製<strong>直方圖</strong> : \n"
]
},
{
@ -63,7 +63,7 @@
"source": [
"## 分析實際數據\n",
"\n",
"均值和方差在分析實際世界數據時非常重要。讓我們從 [SOCR MLB Height/Weight Data](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights)載入有關棒球運動員的數據。 \n"
"均值和方差在分析現實世界數據時非常重要。讓我們載入來自 [SOCR MLB Height/Weight Data](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) 的棒球運動員數據 \n"
]
},
{
@ -80,7 +80,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"> 我們在這裏使用一個名為 [**Pandas**](https://pandas.pydata.org/) 的套件來進行數據分析。我們會在這門課程稍後討論更多關於 Pandas 和在 Python 中處理數據的內容 。\n",
"> 我們這裡使用一個名為 [**Pandas**](https://pandas.pydata.org/) 的套件來進行數據分析。稍後在本課程中,我們會進一步討論 Pandas 以及如何在 Python 中處理數據 。\n",
"\n",
"讓我們計算年齡、身高和體重的平均值:\n"
]
@ -98,7 +98,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"現在讓我們專注於身高,並計算標準差和變異數: \n"
"而家嚟集中睇身高,計算標準差同變異數: \n"
]
},
{
@ -126,7 +126,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"除了平均值之外,查看中位數和四分位數也是很有意義的。它們可以用**箱型圖**來視覺化: \n"
"除了平均值之外,查看中位數和四分位數也是有意義的。它們可以用<strong>箱型圖</strong>來視覺化: \n"
]
},
{
@ -136,7 +136,7 @@
"outputs": [],
"source": [
"plt.figure(figsize=(10,2))\n",
"plt.boxplot(df['Height'].ffill(), vert=False , showmeans=True)\n",
"plt.boxplot(df['Height'].ffill(), orientation='horizontal' , showmeans=True)\n",
"plt.grid(color='gray', linestyle='dotted')\n",
"plt.tight_layout()\n",
"plt.show()"
@ -146,7 +146,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"我哋亦可以對數據集中嘅子集製 作箱形圖,例如按球員角色分組。\n"
"我哋都可以將數據集嘅子集 作箱形圖,例如按球員角色分組。\n"
]
},
{
@ -165,9 +165,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"> **注意**:這個圖表表明,平均而言,一壘手的身高較二壘手的身高高。稍後我們會學習如何更正式地檢驗這個假設,以及如何證明我們的數據在統計上顯著支持這一點 。 \n",
"> <strong>注意</strong>:此圖表顯示,一壘手的平均身高比二壘手的身高高。稍後我們會學習如何更正式地檢驗此假設,以及如何證明我們的數據在統計上具有顯著性 。 \n",
"\n",
"年齡、身高和體重都是連續隨機變數。你認為它們的分佈是什麼?一個好方法是繪製值的直方圖: \n"
"年齡、身高和體重都是連續隨機變數。你認為它們的分佈是如何?一個好的方法是繪製數值的直方圖來找出答案: \n"
]
},
{
@ -188,9 +188,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## 常 態分佈\n",
"## 正 態分佈\n",
"\n",
"讓我們創建一個人工重量樣本,該樣本遵循與我們的真實數據具有相同均值和方差的常態分佈 : \n"
"讓我們創建一個符合正態分佈的人工權重樣本,其均值和變異數與我們的真實數據相同 : \n"
]
},
{
@ -231,7 +231,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"由於現實生活中大多數數值呈常態分佈,因此我們不應使用均勻隨機數生成器來生成樣本數據。以下是如果我們 嘗試使用均勻分佈(由 `np.random.rand` 生成)來生成體重數據 時會發生的情況:\n"
"由於現實生活中的 大多數數值通常 呈常態分佈,因此我們不應該 使用均勻隨機數生成器來生成樣本數據。以下是嘗試使用均勻分佈(由 `np.random.rand` 生成)來生成體重時會發生的情況:\n"
]
},
{
@ -251,9 +251,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## 置 信區間\n",
"## 信心 區間\n",
"\n",
"現在讓我們計算棒球運動員體重及身高的置信區間。我們將使用[這個stackoverflow討論中的程式碼 ](https://stackoverflow.com/questions/15033511/compute-a-confidence-interval-from-sample-data): \n"
"而家我哋嚟計算棒球員嘅體重同身高嘅信心區間。 我哋會用[呢個stackoverflow討論 ](https://stackoverflow.com/questions/15033511/compute-a-confidence-interval-from-sample-data)嘅代碼 : \n"
]
},
{
@ -272,7 +272,7 @@
" return m, h\n",
"\n",
"for p in [0.85, 0.9, 0.95]:\n",
" m, h = mean_confidence_interval(df['Weight'].fillna (method='pad' ),p)\n",
" m, h = mean_confidence_interval(df['Weight'].ff ill(),p)\n",
" print(f\"p={p:.2f}, mean = {m:.2f} ± {h:.2f}\")"
]
},
@ -282,7 +282,7 @@
"source": [
"## 假設檢定\n",
"\n",
"讓我們探索我們棒球選手資料集中的不同 角色:\n"
"讓我們探索棒球選手數據集中不同的 角色:\n"
]
},
{
@ -298,7 +298,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"讓我們測試一個假設,即一壘手的身高比二壘手高。最簡單的方法是檢驗置信 區間:\n"
"讓我們檢驗一下第一壘手是否比二壘手高的假設。最簡單的方法是檢驗信賴 區間:\n"
]
},
{
@ -317,9 +317,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"我哋可以見到啲區間冇 重疊。\n",
"我們可以看到區間並沒有 重疊。\n",
"\n",
"一個統計上更正確嘅方法去證明呢個假設係用 **Student t檢定**: \n"
"一個在統計上更正確證明假設的方法是使用 **Student t檢定**: \n"
]
},
{
@ -338,18 +338,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"`ttest_ind` 函式 返回的兩個值是:\n",
"* p 值可以 被視為兩個分佈具有相同平均值的機率。在我們的案例中,該值非常低,表示有強烈 證據支持一壘手較高。\n",
"* t 值是標準化平均差的中間值,用於 t 檢定,並且會與給定信心水準 的閾值進行比較。\n"
"`ttest_ind` 函數所 返回的兩個值是:\n",
"* p 值可被視為兩個分佈具有相同平均值的機率。在我們的例子中,這個值非常低,意味著有強烈的 證據支持一壘手較高。\n",
"* t 值是標準化平均差的中間值,該值被用於 t 檢驗,並與給定置信值 的閾值進行比較。\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模擬常態分佈與中心極限定理 \n",
"## 使用中心極限定理 模擬常態分佈\n",
"\n",
"Python 的偽隨機生成器設計成給我們一個均勻分佈。如果我們想要建立一個常態分佈的生成器,可以使用中心極限定理。要取得常態分佈的值,我們只需計算 均勻生成樣本的平均值。\n"
"Python 中的偽隨機生成器設計是給我們一個均勻分佈。如果我們想要創建一個常態分佈的生成器,我們可以使用中心極限定理。要獲得一個常態分佈的值,我們只需計算一組 均勻生成樣本的平均值。\n"
]
},
{
@ -375,7 +375,7 @@
"source": [
"## 相關性與邪惡棒球公司\n",
"\n",
"相關性讓我們能夠找到數據序列之間的關係。在我們的玩具範例中,假設有一家邪惡的棒球公司根據球員的身高支付薪水——球員越高,薪水越多。假設有一個基本薪資為$1000, 並根據身高額外獎勵$0到$100。我們將採用MLB的真實球員, 並計算他們的虛擬薪水 : \n"
"相關性讓我們能找到資料序列之間的關係。在我們的玩具示例中,假設有一間邪惡的棒球公司,根據球員的身高支付他們的薪水——球員越高,獲得的錢越多。假設有一個基本薪資是$1000, 還有一個根據身高介乎$0到$100的額外獎金。我們將取美國職棒大聯盟( MLB) 的真實球員資料, 計算他們的虛構薪資 : \n"
]
},
{
@ -384,7 +384,7 @@
"metadata": {},
"outputs": [],
"source": [
"heights = df['Height'].fillna (method='pad' )\n",
"heights = df['Height'].ff ill()\n",
"salaries = 1000+(heights-heights.min())/(heights.max()-heights.mean())*100\n",
"print(list(zip(heights, salaries))[:10])"
]
@ -393,7 +393,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"現在讓我們計算這些序列的協方差和相關係數。`np.cov` 將會給我們所謂的**協方差矩陣**,這是協方差對多個變量的擴展。協方差矩陣 $M$ 的元素 $M_{ij}$ 是輸入變量 $X_i$ 和 $X_j$ 之間的協方差,而對角線上的值 $M_{ii}$ 是 $X_{i}$ 的變異數。類似地,`np.corrcoef` 將會給我們**相關矩陣** 。\n"
"現在讓我們計算這些序列的協方差和相關性。`np.cov` 會給我們所謂的<strong>協方差矩陣</strong>,這是多變量協方差的擴展。協方差矩陣 $M$ 的元素 $M_{ij}$ 是輸入變量 $X_i$ 和 $X_j$ 之間的相關性,而對角線上的值 $M_{ii}$ 則是 $X_i$ 的變異數。同樣地,`np.corrcoef` 會給我們<strong>相關係數矩陣</strong> 。\n"
]
},
{
@ -411,7 +411,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"相關係數等於1表示兩個變數之間存在強烈的**線性關係**。我們可以通過繪製一個值與另一個值的圖形來直觀地看到這種 線性關係:\n"
"相關係數等於 1 意味著兩個變量之間存在強烈的 <strong>線性關係</strong>。我們可以通過將一個值與另一個值繪圖來直觀地看到 線性關係:\n"
]
},
{
@ -430,7 +430,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"讓我們看看如果關係不是線性會發生什麼。假設我們的公司決定隱藏身高和薪水之間明顯的線性依賴,並在公式中引入一些非線性,如 `sin`: \n"
"我們來看看如果關係不是線性的結果會如何。假設我們的公司決定隱藏身高與薪水之間明顯的線性依賴關係,並在公式中引入了一些非線性成分,例如 `sin`: \n"
]
},
{
@ -447,7 +447,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"在這種情況下,相關性稍微小一些,但仍然相當高。現在,為了使關係更不明顯,我們可能想通過向薪水中加入一些隨機變量來增加額外的隨機性。讓我們 看看會發生什麼:\n"
"在這種情況下,相關性稍微小一點,但仍然相當高。現在,為了讓關係看起來更不明顯,我們或許想透過加入一些隨機變數到薪水中,增加額外的隨機性。讓我們來 看看會發生什麼:\n"
]
},
{
@ -476,9 +476,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"> 你能猜到為什麼點會排成這樣的 垂直線嗎?\n",
"> 你能猜出為什麼這些點會像這樣排列成 垂直線嗎?\n",
"\n",
"我們已經觀察到像薪水這種人工設計的概念與觀察變量*身高*之間的相關性。現在讓我們也看看兩個觀察變量,比如身高和體重,是否也存在 相關性:\n"
"我們已經觀察到像薪水這類人為設計的概念和觀察變量 <em>身高</em> 之間的相關性。現在讓我們也看看兩個觀察變量,例如身高和體重,是否也有 相關性:\n"
]
},
{
@ -494,11 +494,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"不幸的是,我們沒有得到任何結果——只有一些奇怪的 `nan` 值。這是因為我們序列中的一些值未定義,表示為 `nan`,這導致運算結果也未定義。從矩陣中我們可以看到, `Weight` 是有問題的欄位,因為已經計算了 `Height` 值之間的自我 相關。\n",
"不幸地,我們沒有取得任何結果——只有一些奇怪的 `nan` 值。這是因為我們的系列中有些值是未定義的,用 `nan` 表示,這導致運算結果也變成未定義。從矩陣中我們可以看到 `Weight` 是有問題的欄位,因為已經計算了 `Height` 值之間的自相關。\n",
"\n",
"> 此範例顯示了**資料準備**和**清理** 的重要性。沒有適當的資料,我們無法計算任何東西。\n",
"> 這個例子顯示了<strong>資料準備</strong>和<strong>清理</strong> 的重要性。沒有適當的資料,我們無法計算任何東西。\n",
"\n",
"讓我們使用 `fillna` 方法來填補 缺失值,並計算相關性:\n"
"讓我們使用 `fillna` 方法填充 缺失值,並計算相關性:\n"
]
},
{
@ -507,14 +507,14 @@
"metadata": {},
"outputs": [],
"source": [
"np.corrcoef(df['Height'].fillna (method='pad' ), df['Weight'])"
"np.corrcoef(df['Height'].ff ill(), df['Weight'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"確實存在相關性,但沒有我們人工示例中的那麼強烈。事實上,如果我們觀察一個數值與另一個數值的散點圖,這種關係會不那麼明顯 : \n"
"確實存在一個關聯,但並不像我們的人為範例中那麼強烈。事實上,如果我們看一下其中一個值對另一個值的散點圖,這種關係會明顯得少得多 : \n"
]
},
{
@ -535,16 +535,16 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion \n",
"## 結論 \n",
"\n",
"在本筆記本中,我們學會了如何對資料進行基本操作以計算統計函數。我們現在知道如何使用完善的數學和統計工具來驗證某些假設,以及如何根據資料樣本計算任意變數 的信賴區間。\n"
"在這個筆記本中,我們學會了如何對數據執行基本操作來計算統計函數。我們現在知道如何使用健全的數學和統計工具來驗證一些假設,以及如何根據數據樣本計算任意變量 的信賴區間。\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**: \n本文件是 使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們努力確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。請以原文文件為權威資料來源。對於重要資訊,建議採用專業人工翻譯。對於因使用此翻譯而引起的任何誤解或錯誤詮釋,我們概不負責 。\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**: \n本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們力求準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任 。\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -568,12 +568,6 @@
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
},
"coopTranslator": {
"original_hash": "0f899e3c5019f948e7c787b22f3b2304",
"translation_date": "2026-01-16T10:08:43+00:00",
"source_file": "1-Introduction/04-stats-and-probability/notebook.ipynb",
"language_code": "mo"
}
},
"nbformat": 4,