# 十二、為什么均值重要
> 原文:[Why the Mean Matters](https://github.com/data-8/textbook/tree/gh-pages/chapters/12)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
在這個課程中,我們已經研究了幾個不同的統計量,包括總編譯距離,最大值,中位數和平均值。在關于隨機性的明確假設下,我們繪制了所有這些統計量的經驗分布。有些統計量,比如最大和總變異距離,分布明顯偏向一個方向。但是,無論研究對象如何,樣本均值的經驗分布幾乎總是接近鐘形。
如果隨機樣本的性質是真的,不管總體如何,它都能成為一個有力的推理工具,因為我們通常不清楚總體中的數據。大型隨機樣本的均值分布屬于這類性質。這就是隨機抽樣方法廣泛用于數據科學的原因。
在本章中,我們將研究均值,以及我們可以說的一些東西,僅僅使用最基本的底層總體的假設。我們要解決的問題包括:
+ 均值正好測量了什么?
+ 大部分數據與平均值有多接近?
+ 樣本量如何與樣本的均值相關?
+ 為什么隨機樣本的經驗分布出現鐘形?
+ 我們如何有效地使用抽樣方法進行推理?
## 均值的性質
在這個課程中,我們可以互換地使用“average”和“mean”兩個單詞(譯者注,在中文中都譯為“均值”),后面也一樣。 在你高中甚至更早的時候,你熟悉均值的定義。
定義:數值集合的均值是集合中所有元素的總和,除以集合中元素的數量。
`np.average`和`np.mean`方法返回數組的均值。
```py
not_symmetric = make_array(2, 3, 3, 9)
np.average(not_symmetric)
4.25
np.mean(not_symmetric)
4.25
```
### 基本性質
上面的定義和例子指出了均值的一些性質。
+ 它不一定是集合中的一個元素。
+ 即使集合的所有元素都是整數,也不一定是整數。
+ 它在集合的最小值和最大值之間。
+ 它不一定在兩個極值的正中間;集合中一半的元素并不總是大于均值。
+ 如果集合含有一個變量的值,以指定單位測量,則均值也具有相同的單位。
我們現在將研究一些其他性質,它有助于理解均值,并與其他統計量相關。
### 均值是個“平滑器”
你可以將均值視為“均衡”或“平滑”操作。 例如,將上面的`not_symmetric`中的條目設想為四個不同人的口袋中的美元。 為此,你先把所有的錢都放進一個大袋子,然后平均分配給四個人。 最開始,他們在口袋中裝了不同數量的錢(2 美元,3 美元,3 美元和9 美元),但現在每個人都有平均數量 4.25 美元。
### 均值的性質
如果一個集合只包含 1 和 0,那么集合的總和就是集合中 1 的數量,集合的均值就是 1 的比例。
```py
zero_one = make_array(1, 1, 1, 0)
sum(zero_one)
3
np.mean(zero_one)
0.75
```
捏可以將 1 替換為布爾值`True`,0 替換為`False`。
```py
np.mean(make_array(True, True, True, False))
0.75
```
因為比例是均值的一個特例,隨機樣本均值的結果也適用于隨機樣本比例。
### 均值和直方圖
集合`{2, 3, 3, 9}`的平均值是 4.25,這不是數據的“正中間的點”。 那么這是什么意思?
為了了解它,請注意,平均值可以用不同的方式計算。

最后一個表達式就是一個普遍事實的例子:當我們計算平均值時,集合中的每個不同的值都由它在集合中出現的時間比例加權。
這有一個重要的結果。 集合的平均值僅取決于不同的值及其比例,而不取決于集合中元素的數量。 換句話說,集合的平均值僅取決于集合中值的分布。
因此,如果兩個集合具有相同的分布,則它們具有相同的均值。
例如,這里是另一個集合,它的分布與`not_symmetric`相同,因此均值也相同。
```py
not_symmetric
array([2, 3, 3, 9])
same_distribution = make_array(2, 2, 3, 3, 3, 3, 9, 9)
np.mean(same_distribution)
4.25
```
均值是分布直方圖的物理屬性。這里是`not_symmetric`的分布直方圖,或者等價的`same_distribution`的分布直方圖。

想象一下,直方圖是由紙板組成的圖形,它附著在一條線上,線沿著橫軸延伸。并且,將這些條形想象為附加在值 2, 3 和 9 上的權重。假設你嘗試在線上的某個點平衡這個圖形。如果該點接近 2,圖形就向右傾斜。如果該點接近 9,則圖形就向左傾斜。之間的某個地方是這個數字取得平衡的點。這個點是 4.25,就是均值。
均值是直方圖的重心或平衡點。
為了理解這是為什么,了解一些物理會有幫助。重心的計算與我們計算平均值的方法完全相同,通過將不同值按它們比例加權。
因為均值是一個平衡點,有時在直方圖的底部顯示為一個支點或三角形。

### 均值和中位數
如果一個學生的考試成績低于平均水平,這是否意味著該學生在該考試中處于后一半?
對于學生來說,回答是“不一定”。 原因與直方圖的平衡點即均值,和數據的“中間點”即中位數之間的關系有關。
通過這個關系很容易看到一個簡單的例子。 這里是數組`symmetric`的集合`{2, 3, 3, 4}`的直方圖。 分布對稱于 3。均值和中位數都等于 3。
```py
symmetric = make_array(2, 3, 3, 4)
```

```py
np.mean(symmetric)
3.0
percentile(50, symmetric)
3
```
一般來說,對于對稱分布,均值和中位數是相等的。
如果分布不對稱呢? 我們來比較`symmetric`和`not_symmetric`。

藍色直方圖表示原始的`symmetric`分布。 `not_symmetric `的金色從左端起始,和藍色一樣,但是最右邊的條形到了數值 9。棕色部分是兩個直方圖重疊的位置。
藍色分布的中位數和均值都等于 3。金色分布的中值也等于 3,盡管右半部分與左邊的分布不同。
但金色分布的平均值不是 3:金色直方圖在 3 時不平衡。平衡點已經向右移動到 4.25。
在金色分布中,4 個條目中有 3 個(75%)低于平均水平。 因此,低于平均分的學生可以放心。 他或她可能是班上的大多數人。
一般來說,如果直方圖的一邊有尾巴(整數屬于是“偏斜的”),那么平均值就會從中間拉到尾巴的方向。
### 示例
`sf2015`表包含 2015 年舊金山城市員工的薪水和福利數據。與以前一樣,我們將我們的分析僅限于那些等價于至少就業半年的人。
```py
sf2015 = Table.read_table('san_francisco_2015.csv').where('Salaries', are.above(10000))
```
我們前面看到了,最高薪資高于 60 萬美元,但絕大多數雇員的薪資低于 30 萬美元。
```py
sf2015.select('Total Compensation').hist(bins = np.arange(10000, 700000, 25000))
```

這個直方圖向右偏斜;它的右側有個尾巴。
平均值拉向了尾巴的方向。 所以我們預計平均薪酬會比中位數大,事實確實如此。
```py
compensation = sf2015.column('Total Compensation')
percentile(50, compensation)
110305.78999999999
np.mean(compensation)
114725.98411824222
```
大量總體的收入分布往往是右偏的。 當總體的大部分收入中到低,但很小一部分收入很高時,直方圖的右側有條細長的尾巴。
平均收入受這條尾巴的影響:尾巴向右延伸得越遠,平均值就越大。 但中位數不受分布極值的影響。 這就是經濟學家經常用收入分布的中位數來代替平均值的原因。
## 可變性
平均值告訴我們直方圖平衡的位置。 但是在我們所看到的幾乎所有的直方圖中,值都位于均值的兩邊。 他們距離均值有多遠? 為了回答這個問題,我們將開發一個關于均值的可變性度量。
我們首先描述如何計算度量值。 然后我們就會明白,為什么這是很好的計算方法。
### 距離均值的偏差的大致大小
為了簡單起見,我們將在簡單數組`any_numbers `的上下文中開始計算,它由四個值組成。 你將會看到,我們的方法非常易于擴展到任何其他數組。
```py
any_numbers = make_array(1, 2, 2, 10)
```
我們的目標是,大致衡量這些數值離他們的平均水平有多遠。 為了實現它,我們首先需要均值:
```py
# Step 1. The average.
mean = np.mean(any_numbers)
mean
3.75
```
接下來,我們來看看每個數值離均值有多遠。 這些被稱為到均值的偏差。 “到均值的偏差”只是每個值減去平均值。 `calculation_steps`表顯示了結果。
```py
# Step 2. The deviations from average.
deviations = any_numbers - mean
calculation_steps = Table().with_columns(
'Value', any_numbers,
'Deviation from Average', deviations
)
calculation_steps
```
| Value | Deviation from Average |
| --- | --- |
| 1 | -2.75 |
| 2 | -1.75 |
| 2 | -1.75 |
| 10 | 6.25 |
一些偏差是負的;它們對應于低于均值的值。 正的偏差對應于高于平均值的值。
要計算偏差有多大,計算偏差的平均值是很自然的。 但是當所有的偏差加在一起的時候,會發生一些有趣的事:
```py
sum(deviations)
0.0
```
正的偏差正好和負的偏差抵消。 無論列表的直方圖是什么樣子,所有的數字列表都是如此:到均值的偏差總和為零。
由于偏差的總和為零,偏差的均值也將為零:
```py
np.mean(deviations)
0.0
```
因此,偏差的均值不是偏差大小的有用度量。 我們真正想知道的是偏差有多大,不管它們是正的還是負的。 所以我們需要一種方法來消除偏差的符號。
有兩種歷史悠久的丟掉符號的方式:絕對值和平方。 事實證明,采用平方會構建一個度量,帶有非常強大的性質,其中一些我們將在這個課程中學習。
所以讓我們計算所有偏差的平方,來消除符號。 那么我們將計算平方的均值:
```py
# Step 3. The squared deviations from average
squared_deviations = deviations ** 2
calculation_steps = calculation_steps.with_column(
'Squared Deviations from Average', squared_deviations
)
calculation_steps
```
| Value | Deviation from Average | Squared Deviations from Average |
| --- | --- | --- |
| 1 | -2.75 | 7.5625 |
| 2 | -1.75 | 3.0625 |
| 2 | -1.75 | 3.0625 |
| 10 | 6.25 | 39.0625 |
```py
# Step 4. Variance = the mean squared deviation from average
variance = np.mean(squared_deviations)
variance
13.1875
```
方差:上面計算的偏差平方的均值稱為方差。
雖然方差確實給了我們延展度的概念,但它和原始變量不是一個量綱,因為它的單位是原始變量的平方。 這使得解釋非常困難。
所以我們通過計算方差的算術平方根的來返回原來的量綱:
```py
# Step 5.
# Standard Deviation: root mean squared deviation from average
# Steps of calculation: 5 4 3 2 1
sd = variance ** 0.5
sd
3.6314597615834874
```
### 標準差
我們剛計算出來的數量叫做列表的標準差,簡寫為 SD。 它大致衡量列表中的數字與其平均水平的差距。
定義:列表的 SD 定義為方差(偏差平方的均值)的算術平方根。這很拗口。 但是從左到右閱讀,你需要執行一系列的步驟的計算。
計算:上述五個步驟會產生 SD。 你還可以使用函數`np.std`來計算數組中值的標準差:
```py
np.std(any_numbers)
3.6314597615834874
```
> 譯者注:寫在一起就是`np.mean((arr - arr.mean()) ** 2) ** 0.5`。
### 使用 SD
要看看我們可以從SD中學到什么,讓我們轉向一個比`any_numbers`更有趣的數據集。 `nba13`表包含了 2013 年 NBA 的球員數據。對于每個球員來說,表格中記錄了球員通常的位置,他的身高(英寸),體重(磅)和年齡。
```py
nba13 = Table.read_table('nba2013.csv')
nba13
```
| Name | Position | Height | Weight | Age in 2013 |
| --- | --- | --- | --- | --- |
| DeQuan Jones | Guard | 80 | 221 | 23 |
| Darius Miller | Guard | 80 | 235 | 23 |
| Trevor Ariza | Guard | 80 | 210 | 28 |
| James Jones | Guard | 80 | 215 | 32 |
| Wesley Johnson | Guard | 79 | 215 | 26 |
| Klay Thompson | Guard | 79 | 205 | 23 |
| Thabo Sefolosha | Guard | 79 | 215 | 29 |
| Chase Budinger | Guard | 79 | 218 | 25 |
| Kevin Martin | Guard | 79 | 185 | 30 |
| Evan Fournier | Guard | 79 | 206 | 20 |
(省略了 495 行)
這里是球員身高的直方圖。
```py
nba13.select('Height').hist(bins=np.arange(68, 88, 1))
```

NBA 球員身材高大并不奇怪! 他們的平均身高只有 79 英寸(6'7"),比美國男子的平均身高高出 10 英寸。
```py
mean_height = np.mean(nba13.column('Height'))
mean_height
79.065346534653472
```
球員的身高距離平均有多遠? 這通過身高的 SD 來測量,大約是 3.45 英寸。
```py
sd_height = np.std(nba13.column('Height'))
sd_height
3.4505971830275546
```
俄克拉荷馬雷霆的高個中鋒哈希姆·塔比特(Hasheem Thabeet)是最高的球員,身高 87 英寸。
```py
nba13.sort('Height', descending=True).show(3)
```
| Name | Position | Height | Weight | Age in 2013 |
| --- | --- | --- | --- | --- |
| Hasheem Thabeet | Center | 87 | 263 | 26 |
| Roy Hibbert | Center | 86 | 278 | 26 |
| Tyson Chandler | Center | 85 | 235 | 30 |
(省略了 502 行)
Thabeet 比平均身高高了大約 8 英寸。
```py
87 - mean_height
7.9346534653465284
```
這個就是距離均值的偏差,大約是 2.3 乘標準差。
```py
(87 - mean_height)/sd_height
2.2995015194397923
```
換句話說,最高球員的身高比均值高了 2.3 個 SD。
以賽亞·托馬斯(Isaiah Thomas)身高 69 英寸,是 2013 年 NBA 最矮的球員之一。他的身高比均值低了 2.9 個 SD。
```py
nba13.sort('Height').show(3)
```
| Name | Position | Height | Weight | Age in 2013 |
| --- | --- | --- | --- | --- |
| Isaiah Thomas | Guard | 69 | 185 | 24 |
| Nate Robinson | Guard | 69 | 180 | 29 |
| John Lucas III | Guard | 71 | 157 | 30 |
(省略了 502 行)
```py
(69 - mean_height)/sd_height
-2.9169868288775844
```
我們觀察到,最高和最矮的球員都距離平均身高只有幾個標準差。 這是例子,說明了為什么 SD 是延展度的有效度量。無論直方圖的形狀如何,平均值和 SD 一起告訴你很多東西,關于直方圖在數軸上的位置。
### 使用 SD 度量延展度的最主要原因
非正式聲明:在所有的數值數據集中,大部分條目都在“均值上下幾個標準差”的范圍內。
現在,先克制住自己,不要了解“散”,“少”等模糊詞的確切含義。 我們將在本節的后面進行詳細說明。 我們僅僅在更多示例的背景下研究這個陳述。
我們已經看到,所有 NBA 球員的身高都在“均值上下幾個標準差”的范圍內。
那年齡呢? 這里是分布的直方圖,以及年齡的平均值和標準差。
```py
nba13.select('Age in 2013').hist(bins=np.arange(15, 45, 1))
```

```py
ages = nba13.column('Age in 2013')
mean_age = np.mean(ages)
sd_age = np.std(ages)
mean_age, sd_age
(26.19009900990099, 4.3212004417203067)
```
平均年齡只有 26 歲,標準差大約是 4.3 歲。
年齡與均值相差多遠? 就像我們對身高所做的那樣,讓我們看看兩個年齡的極端值。
Juwan Howard 是年齡最大的球員 40 歲。
```py
nba13.sort('Age in 2013', descending=True).show(3)
```
| Name | Position | Height | Weight | Age in 2013 |
| --- | --- | --- | --- | --- |
| Juwan Howard | Forward | 81 | 250 | 40 |
| Marcus Camby | Center | 83 | 235 | 39 |
| Derek Fisher | Guard | 73 | 210 | 39 |
(省略了 502 行)
Howard 的年齡比均值高了 3.2 個標準差。
```py
(40 - mean_age)/sd_age
3.1958482778922357
```
年齡最小的是 15 歲的 Jarvis Varnado,他當年在邁阿密熱火隊(Miami Heat)奪得了 NBA 總冠軍。 他的年齡比均值低了 2.6 個標準差。
```py
nba13.sort('Age in 2013').show(3)
```
| Name | Position | Height | Weight | Age in 2013 |
| --- | --- | --- | --- | --- |
| Jarvis Varnado | Forward | 81 | 230 | 15 |
| Giannis Antetokounmpo | Forward | 81 | 205 | 18 |
| Sergey Karasev | Guard | 79 | 197 | 19 |
(省略了 502 行)
```py
(15 - mean_age)/sd_age
-2.5895811038670811
```
對于高度和年齡,我們觀察到的東西非常普遍。 對于所有列表,大部分條目都不超過平均值 2 或 3 個標準差。
### 切比雪夫邊界
俄羅斯數學家切比雪夫(Pafnuty Chebychev,1821-1894)證明了這個結論,使我們的粗略陳述更加精確。
對于所有列表和所有數字`z`,“均值上下`z`個標準差”范圍內的條目比例至少為 。
值得注意的是,結果給出了一個界限,而不是一個確切的數值或近似值。
是什么讓結果變得強大,對于所有列表來說都是這樣呢 - 所有的分布,無論多么不規則?
具體來說,對于每個列表:
在“均值上下兩個標準差”范圍內的比例至少是`1 - 1/4 = 0.75`
在“均值上下三個標準差”范圍內的比例至少為`1 - 1/9 ≈ 0.89`
在“均值上下 4.5 個標準差”范圍內的比例至少為`1 - 1/4.5^2 ≈ 0.95`
如上所述,切比雪夫的結果給出了一個下界,而不是一個確切的答案或近似值。例如,“均值上下兩個標準差”范圍內的條目百分比可能比 75% 大得多。但它不會更小。
### 標準單位
在上面的計算中,`z`的數量是標準單位,高于平均水平的標準差的數量。
標準單位的某些值是負值,對應于低于均值的原始值。 標準單位的其他是正值。 但是無論列表的分布如何,切比雪夫邊界意味著標準單位一般在`(-5, 5)`范圍內。
要將一個值轉換為標準單位,首先要求出距離平均值有多遠,然后將該偏差與標準差比較。

我們將會看到,標準單位經常用于數據分析。 所以定義一個函數,將數值的數組轉換為標準單位是很有用的。
```py
def standard_units(numbers_array):
"Convert any array of numbers to standard units."
return (numbers_array - np.mean(numbers_array))/np.std(numbers_array)
```
### 示例
我們在前面的章節中看到,`united`表包含了`Delay`列,包括 2015 年夏天聯合航空數千航班的起飛延誤時間,以分鐘為單位。我們將創建一個名為`Delay (Standard Units)`的新列, 通過將函數`standard_units`應用于`Delay`列。 這使我們可以看到所有延誤時間(分鐘)以及標準單位的相應值。
```py
united = Table.read_table('united_summer2015.csv')
united = united.with_column(
'Delay (Standard Units)', standard_units(united.column('Delay'))
)
united
```
| Date | Flight Number | Destination | Delay | Delay (Standard Units) |
| --- | --- | --- | --- | --- |
| 6/1/15 | 73 | HNL | 257 | 6.08766 |
| 6/1/15 | 217 | EWR | 28 | 0.287279 |
| 6/1/15 | 237 | STL | -3 | -0.497924 |
| 6/1/15 | 250 | SAN | 0 | -0.421937 |
| 6/1/15 | 267 | PHL | 64 | 1.19913 |
| 6/1/15 | 273 | SEA | -6 | -0.573912 |
| 6/1/15 | 278 | SEA | -8 | -0.62457 |
| 6/1/15 | 292 | EWR | 12 | -0.117987 |
| 6/1/15 | 300 | HNL | 20 | 0.0846461 |
| 6/1/15 | 317 | IND | -10 | -0.675228 |
(省略了 13815 行)
我們看到的標準單位與我們根據切比雪夫邊界的預期一致。 大部分都是相當小的值;只有一個大于 6。
但是,當我們將延誤時間從高到低排序時,會發生一些驚人的事情。 我們看到的標準單位是非常高的!
```py
united.sort('Delay', descending=True)
```
| Date | Flight Number | Destination | Delay | Delay (Standard Units) |
| --- | --- | --- | --- | --- |
| 6/21/15 | 1964 | SEA | 580 | 14.269 |
| 6/22/15 | 300 | HNL | 537 | 13.1798 |
| 6/21/15 | 1149 | IAD | 508 | 12.4453 |
| 6/20/15 | 353 | ORD | 505 | 12.3693 |
| 8/23/15 | 1589 | ORD | 458 | 11.1788 |
| 7/23/15 | 1960 | LAX | 438 | 10.6722 |
| 6/23/15 | 1606 | ORD | 430 | 10.4696 |
| 6/4/15 | 1743 | LAX | 408 | 9.91236 |
| 6/17/15 | 1122 | HNL | 405 | 9.83637 |
| 7/27/15 | 572 | ORD | 385 | 9.32979 |
(省略了 13815 行)
這表明,數據有可能高于均值很多個標準差(對于延誤了 10 個小時的航班)。 延誤的最高值超過 14 個標準單位。
然而,這些極端值的比例很小,切比雪夫邊界仍然是真的。 例如,讓我們計算在“均值上下三個標準差”范圍內的延誤百分比。 這與標準單位在`(-3, 3)`范圍內的時間百分比相同。 這大約是 98%,計算在下面,和切比雪夫邊界“至少 89%”一致。
```py
within_3_sd = united.where('Delay (Standard Units)', are.between(-3, 3))
within_3_sd.num_rows/united.num_rows
0.9790235081374322
```
延誤時間的直方圖如下所示,橫軸以標準單位表示。 從上表中可以看出,右邊的尾巴一直延伸到`z = 14.27 `個標準單位(580 分鐘)。 在`z = -3`到`z = 3`范圍外的直方圖面積大約是 2%,加起來非常小,在直方圖中幾乎不可見。
```py
united.hist('Delay (Standard Units)', bins=np.arange(-5, 15.5, 0.5))
plots.xticks(np.arange(-6, 17, 3));
```

## 標準差和正態曲線
我們知道均值是直方圖的平衡點。 標準差與平均值不同,通常不容易通過查看直方圖來識別。
然而,有一種分布形狀,它的標準差與平均值幾乎一樣清晰可辨。 這是鐘形分布。 本節將查看該形狀,因為它經常出現在概率直方圖中,也出現在一些數據的直方圖中。
### 數據的大致鐘形的直方圖
讓我們看看母親的身高分布,它們在我們熟悉的 1174 對母親和新生兒的樣本中。母親的平均身高為 64 英寸,SD 為 2.5 英寸。 與籃球運動員的身高不同,母親身高關于鐘形曲線中的平均值對稱分布。
```py
baby = Table.read_table('baby.csv')
heights = baby.column('Maternal Height')
mean_height = np.round(np.mean(heights), 1)
mean_height
64.0
sd_height = np.round(np.std(heights), 1)
sd_height
2.5
baby.hist('Maternal Height', bins=np.arange(55.5, 72.5, 1), unit='inch')
positions = np.arange(-3, 3.1, 1)*sd_height + mean_height
plots.xticks(positions);
```

上面單元格中的最后兩行代碼更改了橫軸的標簽。 現在,對于`z=0, ±1, ±2, ±3`,標簽對應于“標簽上下`z`個標準差”。 由于分布的形狀,“中心”具有明確的含義,在 64 處清晰可見。
### 如何定位鐘形曲線上的 SD
要看 SD 如何與曲線相關,請從曲線頂部開始,向右看。 請注意,曲線有一個地方,從看起來像“倒扣的杯子”,變為“朝右的杯子”。 在形式上,曲線有一個拐點。 這個點高于均值一個 SD。 這是`z = 1`的點,即“均值加一個標準差”,為 66.5 英寸。
在均值的左邊也對稱,拐點在`z = -1`處,也就是“均值減一個標準差”,為 61.5 英寸。
一般來說,對于鐘形分布,SD 是均值和任一側的拐點之間的距離。
### 標準正態曲線
除了軸上的標簽,我們所看到的所有鐘形直方圖,看起來基本相同。 的確,通過適當地重新標記坐標軸,從所有這些曲線中,實際上只能繪制一條曲線。
為了繪制這條基本曲線,我們將使用標準單位,我們可以將每個列表轉換成它。所得到的曲線因此被稱為標準正態曲線。
標準正態曲線的方程令人印象深刻。 但是現在,最好把它看作是變量直方圖的平滑輪廓,變量以標準單位測量并具有鐘形分布。


與往常一樣,當你檢查新的直方圖時,首先查看橫軸。在標準正態曲線的橫軸上,這些值是標準單位。
這里是曲線的一些屬性。有些是通過觀察顯而易見的,有些則需要大量的數學才能建立起來。
曲線下面的總面積是1.所以你可以把它看作是繪制為密度標度的直方圖。
曲線是對稱的。所以如果一個變量具有這個分布,它的平均值和中位數都是 0。
曲線的拐點在 -1 和 +1 處。
如果一個變量具有這種分布,那么它的 SD 是 1。正態曲線是 SD 清晰可辨的極少數分布之一。
由于我們將曲線視為平滑的直方圖,因此我們希望用曲線下方的面積來表示數據總量的比例。
平滑曲線下的面積通常是通過微積分來計算的,使用一種稱為積分的方法。然而,一個數學的事實是,標準的正態曲線不能通過任何微積分方式來積分。
因此,曲線下方的面積必須近似。這就是幾乎所有的統計教科書,都帶有曲線下方的面積的原因。這也是所有統計系統,包括 Python 模塊在內,都包含提供這些面積的優秀近似的方法的原因。
```py
from scipy import stats
```
### 標準正態的累積分布函數(CDF)
用于求出正態曲線下的面積的基本函數是`stats.norm.cdf`。 它接受一個數值參數,并返回曲線下,該數值的左側的所有面積。 它在形式上被稱為標準正態曲線的“累積分布函數”。 在口語里縮寫為 CDF。
讓我們使用這個函數來求出標準正態曲線下,`z=1`左側的面積。

陰影區域的數值可以通過調用`stats.norm.cdf`來求出。
```py
stats.norm.cdf(1)
0.84134474606854293
```
這大概是 84%。 現在我們可以使用曲線的對稱性,以及曲線下面的總面積為 1 事實,來求出其他面積。
`z = 1`右側的面積大概是`100% - 84% = 16%`。

```py
1 - stats.norm.cdf(1)
0.15865525393145707
```
`z = -1`和`z = 1`之間的面積可以用幾種不同的方式來計算。 它是下面的曲線下方的金色區域。

例如,我們可以將面積計算為“`100% -`兩個相等的尾巴”,結果大致是`100% - 2X16% = 68%`。
或者我們可以注意到,`z = 1`和`z = -1`之間的區域等于`z = 1`左邊的所有區域,減去`z = -1`左邊的所有區域。
```py
stats.norm.cdf(1) - stats.norm.cdf(-1)
0.68268949213708585
```
通過類似的計算,我們看到`-2`和`2`之間的區域大約是 95%。

```py
stats.norm.cdf(2) - stats.norm.cdf(-2)
0.95449973610364158
```
換句話說,如果一個直方圖大致是鐘形,那么在“均值上下兩個標準差”范圍內的數據比例大約是 95%。
這比切比雪夫的下界 75% 還要多。 切比雪夫邊界較弱,因為它必須適用于所有的分布。 如果我們知道一個分布是正態的,那么我們就有很好的比例近似,而不僅僅是邊界。
下表比較了我們對所有分布和正態分布的了解。 請注意,當`z = 1`時,切比雪夫的邊界是正確的,但沒有啟發性。
| Percent in Range | All Distributions: Bound | Normal Distribution: Approximation |
| --- | --- | --- |
| 均值上下一個標準差 | 至少 0% | 約 68% |
| 均值上下兩個標準差 | 至少 75% | 約 95% |
| 均值上下三個標準差 | 至少 88.888...% | 約 99.73% |
## 中心極限定律
我們在本課程中看到的很少數據直方圖是鐘形的。 當我們遇到一個鐘形的分布時,它幾乎總是一個基于隨機樣本的統計量的經驗直方圖。
下面的例子顯示了兩個非常不同的情況,其中在這樣的直方圖中出現了近似的鐘形。
### 輪盤賭的凈收益
在前面的章節中,如果我們在輪盤的不同輪次上重復下相同的賭注,那么我們所花費的總金額的粗略形狀就會成為鐘形。
```py
wheel
```
| Pocket | Color |
| --- | --- |
| 0 | green |
| 00 | green |
| 1 | red |
| 2 | black |
| 3 | red |
| 4 | black |
| 5 | red |
| 6 | black |
| 7 | red |
| 8 | black |
(省略了 28 行)
回想一下,紅色的下注返回相等的錢,1 比 1。我們定義的函數`red_winnings`返回對紅色下注一美元的凈收益。具體來說,該函數將顏色作為參數,如果顏色為紅色,則返回 1。 對于所有其他顏色,它返回 -1。
```py
def red_winnings(color):
if color == 'red':
return 1
else:
return -1
```
`red`表展示了紅色情況下,每個口袋的獎金。
```py
red = wheel.with_column(
'Winnings: Red', wheel.apply(red_winnings, 'Color')
)
red
```
| Pocket | Color | Winnings: Red |
| --- | --- | --- |
| 0 | green | -1 |
| 00 | green | -1 |
| 1 | red | 1 |
| 2 | black | -1 |
| 3 | red | 1 |
| 4 | black | -1 |
| 5 | red | 1 |
| 6 | black | -1 |
| 7 | red | 1 |
| 8 | black | -1 |
(省略了 28 行)
你在賭注上的凈收益`Winnings: Red`的隨機抽樣。 有 1/18 的幾率賺一美元,20/38 的幾率損失一美元。 這個概率分布顯示在下面的直方圖中。
```py
red.select('Winnings: Red').hist(bins=np.arange(-1.5, 1.6, 1))
```

現在假設你多次對紅色下注。 你的凈收益將是來自上述分布的,多個帶放回隨機抽樣的總和。
這將需要一些數學,來列出凈收益的所有可能值,以及所有的記錄。 我們不會那樣做;相反,我們將通過模擬來逼近概率分布,就像我們在這個過程中一直做的那樣。
下面的代碼模擬你的凈收益,如果你在輪盤賭的 400 個不同的輪次中,對紅色下注一美元。
```py
num_bets = 400
repetitions = 10000
net_gain_red = make_array()
for i in np.arange(repetitions):
spins = red.sample(num_bets)
new_net_gain_red = spins.column('Winnings: Red').sum()
net_gain_red = np.append(net_gain_red, new_net_gain_red)
results = Table().with_column(
'Net Gain on Red', net_gain_red
)
results.hist(bins=np.arange(-80, 50, 6))
```

這是一個大致鐘形的直方圖,即使我們正在繪制的分布并不是鐘形。
中心。分布集中在`-$20`附近。 要知道為什么,請注意,你的獎金在 18/38 左右的下注中為 1 美元,剩下的 20/38 則為負一美元。 所以每個一美元賭注的平均獎金大概是 -5.26 美分:
```py
average_per_bet = 1*(18/38) + (-1)*(20/38)
average_per_bet
-0.05263157894736842
```
因此,在 400 次下注中,你預計凈收益大約是 21 美元。
```py
400 * average_per_bet
-21.052631578947366
```
為了確認,我們可以計算 10,000 次模擬凈收益的平均值:
```py
np.mean(results.column(0))
-20.8992
```
延展。讓你的眼睛沿著曲線從中心開始,注意到拐點在 0 附近。在鐘形曲線上,SD 是中心到拐點的距離。 中心大概是 -20 美元,這意味著分布的標準差大約是 20 美元。
在下一節中,我們將看到 20 美元是怎么來的。 現在,讓我們通過簡單計算 10,000 個模擬凈收益的 SD 來證實我們的觀察:
```py
np.std(results.column(0))
20.043159415621083
```
總結。 400 次下注的凈收益是每個單獨賭注的 400 個獎金的總和。 這個總和的概率分布近似正態,我們可以近似它的均值和標準差。
### 平均航班延誤
`united`表包含 2015 年夏季舊金山機場出發的 13,825 個聯合航空國內航班的出發延誤數據。正如我們以前所見,延誤的分布的右側有著很長的尾巴。
```py
united = Table.read_table('united_summer2015.csv')
united.select('Delay').hist(bins=np.arange(-20, 300, 10))
```

平均延誤約為 16.6 分鐘,SD 約為 39.5 分鐘。 注意 SD 與平均值相比有多大。 但是右側的較大偏差會產生影響,盡管它們在數據中占很小的比例。
```py
mean_delay = np.mean(united.column('Delay'))
sd_delay = np.std(united.column('Delay'))
mean_delay, sd_delay
(16.658155515370705, 39.480199851609314)
```
現在假設我們隨機抽取了 400 個延誤。 如果你愿意,你可以無放回抽樣,但是結果與放回抽樣非常相似。 如果你從 13,825 個中無放回地抽取幾百個,那么每當你抽出一個值時,幾乎不會改變總體。
在樣本中,平均延誤會是多少? 我們預計在 16 或 17 左右,因為這是總體的均值。 但可能會有些偏差。 讓我們看看我們通過抽樣得到了什么。 我們將處理`delay `表,僅包含延遲的列。
```py
delay = united.select('Delay')
np.mean(delay.sample(400).column('Delay'))
16.68
```
樣本均值根據樣本的出現方式而變化,因此我們將重復模擬抽樣過程,并繪制樣本均值的經驗直方圖。 這是樣本均值的概率直方圖的近似值。
```py
sample_size = 400
repetitions = 10000
means = make_array()
for i in np.arange(repetitions):
sample = delay.sample(sample_size)
new_mean = np.mean(sample.column('Delay'))
means = np.append(means, new_mean)
results = Table().with_column(
'Sample Mean', means
)
results.hist(bins=np.arange(10, 25, 0.5))
```

即使我們從非常偏斜的分布抽樣,我們再次看到了大致的鐘形。 正如我們所期望的那樣,這個鐘形的中心在 16 到 17 之間。
### 中心極限定律
鐘形出現在這樣的環境中的原因,是一個概率理論的顯著結果,稱為中心極限定律。
中心極限定理表明,無論用于抽取樣本的總體分布如何,帶放回抽取的大型隨機樣本的總和或均值的概率分布大致是正態的。
我們在研究切比雪夫邊界時指出,不管總體分布如何,結果都可以應用于隨機樣本,這非常強大,因為在數據科學中,我們很少知道總體的分布。
如果我們有一個大型隨機樣本,那么中心極限定理就能夠在總體知識很少的情況下進行推理。 這就是它是統計推斷領域的核心的原因。
### 紫色的花的分布
回憶孟德爾的豌豆植物的花朵顏色的概率模型。 該模型表明,植物的花朵顏色類似于來自`{紫色,紫色,紫色,白色}`的帶放回隨機抽樣。
在植物的大型樣本中,紫色的花約有多少比例? 我們預計答案約為 0.75,模型中紫色的比例。 而且,由于比例是均值,中心極限定理表明,紫色的樣本比例的分布大致是正態的。
我們可以通過模擬來確認。 我們來模擬 200 株植物樣本中紫色的花的比例。
```py
colors = make_array('Purple', 'Purple', 'Purple', 'White')
model = Table().with_column('Color', colors)
model
```
| Color |
| --- |
| Purple |
| Purple |
| Purple |
| White |
```py
props = make_array()
num_plants = 200
repetitions = 10000
for i in np.arange(repetitions):
sample = model.sample(num_plants)
new_prop = np.count_nonzero(sample.column('Color') == 'Purple')/num_plants
props = np.append(props, new_prop)
results = Table().with_column('Sample Proportion: 200', props)
results.hist(bins=np.arange(0.65, 0.85, 0.01))
```

正如你所期望的那樣,中央極限定理預測了,正態曲線再次集中于 0.75 左右。
如果我們增加樣本量,這個分布如何變化? 讓我們再次運行代碼,樣本量為 800 ,并將模擬結果收集在同一個表中,我們在里面收集了樣本量為 200 的模擬結果。我們使重復次數與之前相同,以便兩列具有相同的長度。
```py
props2 = make_array()
num_plants = 800
for i in np.arange(repetitions):
sample = model.sample(num_plants)
new_prop = np.count_nonzero(sample.column('Color') == 'Purple')/num_plants
props2 = np.append(props2, new_prop)
results = results.with_column('Sample Proportion: 800', props2)
results.hist(bins=np.arange(0.65, 0.85, 0.01))
```

兩個分布都大致是正態,但一個比另一個更窄。 樣本量為 800 的比例,比樣本量為 200 的比例更緊密地聚集在 0.75 左右。增加樣本量可以減少樣本比例的可變性。
這應該不會令人驚訝。 我們多次產生了這樣的直覺,更大的樣本量通常會降低統計量的可變性。 然而,在樣本均值的案例中,我們可以量化樣本量和可變性之間的關系。
樣本量究竟是如何影響樣本均值或比例的可變性呢? 這是我們將在下一節中討論的問題。
## 樣本均值的可變性
根據中心極限定理,大型隨機樣本的均值的概率分布是大致正態的。 鐘形曲線以總體平均值為中心。 一些樣本均值較高,有些則較低,但距離總體均值的偏差在兩邊大致對稱,正如我們已經看到的那樣。 形式上,概率論表明樣本均值是總體均值的無偏估計。
在我們的模擬中,我們也注意到較大樣本的均值,相對較小樣本的平均值更傾向于緊密聚集于總體均值附近。 在本節中,我們將量化樣本均值的可變性,并建立可變性和樣本量之間的關系。
我們從航班延誤表開始。 平均延誤時間約為 16.7 分鐘,延誤分布右傾。
```py
united = Table.read_table('united_summer2015.csv')
delay = united.select('Delay')
pop_mean = np.mean(delay.column('Delay'))
pop_mean
16.658155515370705
```

現在我們來隨機抽樣,來查看樣本均值的概率分布。 像往常一樣,我們將使用模擬來得到這種分布的經驗近似。
我們將定義一個函數`simulate_sample_mean`來實現,因為我們將在稍后改變樣本量。 參數是表的名稱,包含變量的列標簽,樣本量和模擬次數。
```py
"""Empirical distribution of random sample means"""
def simulate_sample_mean(table, label, sample_size, repetitions):
means = make_array()
for i in range(repetitions):
new_sample = table.sample(sample_size)
new_sample_mean = np.mean(new_sample.column(label))
means = np.append(means, new_sample_mean)
sample_means = Table().with_column('Sample Means', means)
# Display empirical histogram and print all relevant quantities
sample_means.hist(bins=20)
plots.xlabel('Sample Means')
plots.title('Sample Size ' + str(sample_size))
print("Sample size: ", sample_size)
print("Population mean:", np.mean(table.column(label)))
print("Average of sample means: ", np.mean(means))
print("Population SD:", np.std(table.column(label)))
print("SD of sample means:", np.std(means))
```
讓我們模擬 100 個延誤的隨機樣本的均值,然后是 400 個,最后是 625 個延誤的均值。 我們將對這些過程中的每一個執行 10,000 次重復。 `xlim`和`ylim`在所有圖表中設置一致的坐標軸,以便比較。 你可以忽略每個單元格中的這兩行代碼。
```py
simulate_sample_mean(delay, 'Delay', 100, 10000)
plots.xlim(5, 35)
plots.ylim(0, 0.25);
Sample size: 100
Population mean: 16.6581555154
Average of sample means: 16.662059
Population SD: 39.4801998516
SD of sample means: 3.90507237968
```

```py
simulate_sample_mean(delay, 'Delay', 400, 10000)
plots.xlim(5, 35)
plots.ylim(0, 0.25);
Sample size: 400
Population mean: 16.6581555154
Average of sample means: 16.67117625
Population SD: 39.4801998516
SD of sample means: 1.98326299651
```

```py
simulate_sample_mean(delay, 'Delay', 625, 10000)
plots.xlim(5, 35)
plots.ylim(0, 0.25);
Sample size: 625
Population mean: 16.6581555154
Average of sample means: 16.68523712
Population SD: 39.4801998516
SD of sample means: 1.60089096006
```

你可以在實踐中看到中心極限定律 - 樣本均值的直方圖是大致正態的,即使延誤本身的直方圖與正態分布相差甚遠。
你還可以看到,樣本均值的三個直方圖中的每一個中心都非常接近總體均值。 在每種情況下,“樣本均值的均值”非常接近 16.66 分鐘,是總體均值。 每個直方圖上方的打印輸出都提供了這兩個值。 像預期一樣,樣本均值是對總體均值的無偏估計。
### 所有樣本均值的 SD
隨著樣本量的增加,你還可以看到直方圖變窄,因此更高。 我們之前已經看到,但現在我們將更加關注延展度的度量。
所有延誤總體的標準差約為 40 分鐘。
```py
pop_sd = np.std(delay.column('Delay'))
pop_sd
39.480199851609314
```
看看上面的樣本均值的直方圖中的標準差。在這三個里面,延誤總體的標準差約為 40 分鐘,因為所有的樣本都來自同一個總體。
現在來看,樣本量為 100 時,所有 10,000 個樣本均值的標準差。標準差是總體標準差的十分之一。當樣本量為 400 時,所有樣本均值的標準差約為總體標準差的二十分之一。當樣本量為 625 時,樣本均值的標準差為總體標準差的二十五分之一。
將樣本均值的經驗分布的標準差與“總體標準差除以樣本量的平方根”的數量進行比較,似乎是一個好主意。
這里是數值。對于第一列中的每個樣本量,抽取 10,000 個該大小的隨機樣本,并計算 10,000 個樣本均值。第二列包含那些 10,000 個樣本均值的標準差。第三列包含計算結果“總體標準差除以樣本量的平方根”。
該單元格需要一段時間來運行,因為這是大型模擬。但是你很快就會看到它值得等待。
```py
repetitions = 10000
sample_sizes = np.arange(25, 626, 25)
sd_means = make_array()
for n in sample_sizes:
means = make_array()
for i in np.arange(repetitions):
means = np.append(means, np.mean(delay.sample(n).column('Delay')))
sd_means = np.append(sd_means, np.std(means))
sd_comparison = Table().with_columns(
'Sample Size n', sample_sizes,
'SD of 10,000 Sample Means', sd_means,
'pop_sd/sqrt(n)', pop_sd/np.sqrt(sample_sizes)
)
sd_comparison
```
| Sample Size n | SD of 10,000 Sample Means | pop_sd/sqrt(n) |
| --- | --- | --- |
| 25 | 7.95017 | 7.89604 |
| 50 | 5.53425 | 5.58334 |
| 75 | 4.54429 | 4.55878 |
| 100 | 3.96157 | 3.94802 |
| 125 | 3.51095 | 3.53122 |
| 150 | 3.23949 | 3.22354 |
| 175 | 3.00694 | 2.98442 |
| 200 | 2.74606 | 2.79167 |
| 225 | 2.63865 | 2.63201 |
| 250 | 2.51853 | 2.49695 |
(省略了 15 行)
第二列和第三列的值非常接近。 如果我們用橫軸上的樣本量繪制每個列,那么這兩個圖基本上是不可區分的。
```py
sd_comparison.plot('Sample Size n')
```

那里確實有兩條曲線。但他們彼此如此接近,看起來好像只有一個。
我們看到了一個普遍結果的實例。 請記住,上面的圖表基于每個樣本量的 10,000 個重復。 但是每個樣本量有超過 10,000 個樣本。 樣本均值的概率分布基于大小固定的所有可能樣本的均值。
固定樣本大小。如果樣本是從總體中帶放回隨機抽取的:

這是所有可能樣本均值的標準差。 它大致衡量了樣本均值與總體均值的差距。
### 用于樣本均值的中心極限定律
如果從總體中帶放回地抽取大型隨機樣本,那么不管總體分布情況如何,樣本均值的概率分布大致是正態的,以總體均值為中心,標準等于總體標準差除以樣本量的平方根。
### 樣本均值的準確性
所有可能的樣本均值的標準差表示樣本均值的變化程度。因此,它被視為樣本均值作為總體均值的估計的準確度的一個度量。標準差越小,估計越準確。
公式表明:
+ 總體大小不影響樣本均值的準確性。公式中的任何地方都沒有出現總體大小。
+ 總體標準差是一個常數;從總體中抽取的每個樣本都是一樣的。樣本量可以變化。由于樣本量出現在分母中,樣本均值的可變性隨著樣本量的增加而降低,因此準確度增加。
### 平方根法則
從標準差比較表中可以看出,25 次航班延誤的隨機樣本的均值的標準差約為 8 分鐘。 如果你將樣本量乘以 4,你將得到大小為 100 的樣本。所有這些樣本的均值的標準差約為 4 分鐘。 這比 8 分鐘還小,但并不是 4 倍,只有 2 倍。 這是因為分母中的樣本量上面有一個平方根。 樣本量增加了 4 倍,但標準差下降了`2 = sqrt(4)`倍。 換句話說,準確度上升了`2 = sqrt(4)`倍。
一般來說,當你將樣本量乘以一個因數時,樣本均值的準確度將會上升該因數的平方根。
所以為了提高 10 倍的準確度,你必須將樣本量乘以 100 倍。精度并不便宜!
## 選取樣本量
候選人 A 在大選中競選。一個投票機構想要估計投票給她的選民的比例。假設他們打算隨機抽取選民,但實際上他們的抽樣方法會更復雜。他們如何決定樣本應該多大,才能達到理想的準確度?
在作出一些假設之后,我們現在可以回答這個問題:
+ 選民人數非常多,所以我們可以假定隨機樣本帶放回地抽取。
+ 投票機構將通過為候選人 A 的選民百分比,構建一個約 95% 置信區間來做出估計。
+ 準確度的理想水平是間隔寬度不應超過 1%。這非常準確!例如,置信區間`(33.2%, 34%)`可以,但`(33.2%, 35%)`不行。
+ 我們將以候選人 A 的選民比例為例。回想一下,比例是一個平均值,其中總體中的值只有 0(你不計算的個體類型)或 1(你計算的個體類型)。
### 置信區間的寬度
如果我們有一個隨機樣本,我們可以使用自舉法為候選人 A 的選民百分比構建一個置信區間。但是我們還沒有樣本 - 我們試圖找出樣本有多大,為了讓我們的置信區間如我們所希望的那樣狹窄。
在這樣的情況下,了解理論預測的結果會有幫助。
中心極限定律表明,樣本比例大致是正態分布的,以總體中 1 的比例為中心,標準差等于總體中 0 和 1 的標準差除以樣本量的平方根。
所以即使我們不能把自己的目標作為自舉比例的第 2.5 和第 97.5 個百分點,那么置信區間仍然是正態分布的“中間 95%”。
有沒有另外一種方法來求出間隔有多大?是的,因為我們知道對于正態分布變量,“中心上下兩個標準差”的間隔包含 95% 的數據。
置信區間將延伸到樣本比例的兩個標準差,位于中心的任一側。因此,間隔的寬度將是樣本比例的 4 個標準差。
我們愿意容忍`1% = 0.01`的寬度。因此,使用上一節中開發的公式:

所以:

### 01 集合的標準差
如果我們知道總體的標準差,我們就完成了。 我們可以計算樣本量的平方根,然后取平方得到樣本量。 但我們不知道總體的標準差。 總體中,候選人 A 的每個選民為 1,其余選民為 0,我們不知道每種選民的比例是多少。 這就是我們正在估計的。
那么我們卡住了嗎? 不,因為我們可以限制人口的標準差。 這里是兩個這樣的分布的直方圖,一個是相等比例的 1 和 0 ,另一個是 90% 的 1 和 10% 的 0。 哪一個標準差更大?

請記住,總體中的可能值只有 0 和 1。
藍色直方圖(50% 的 1 和 50% 的 0)比金色延展度更大。 它的均值是 0.5。 距離均值的偏差,一半等于 0.5,另一半等于 -0.5,所以標準差是 0.5。
在金色直方圖中,所有的區域都擠壓在 1 左右,從而延展度更小。 90% 的偏差很小,為 0.1。 其他的 10% 是 -0.9 ,較大,但總體上的延展度比藍色直方圖小。
如果我們改變 1 的比例或者讓 0 的比例大于 1 的比例,那么同樣的觀察也成立。 我們通過計算不同比例,只包含 0 和 1 的 10 個元素的總體的標準差來檢查它。 函數`np.ones`對此很有用。 它接受一個正整數作為它的參數,并返回一個由多個 1 組成的數組。
```py
sd = make_array()
for i in np.arange(1, 10, 1):
# Create an array of i 1's and (10-i) 0's
population = np.append(np.ones(i), 1-np.ones(10-i))
sd = np.append(sd, np.std(population))
zero_one_sds = Table().with_columns(
"Population Proportion of 1's", np.arange(0.1, 1, 0.1),
"Population SD", sd
)
zero_one_sds
```
| Population Proportion of 1's | Population SD |
| --- | --- |
| 0.1 | 0.3 |
| 0.2 | 0.4 |
| 0.3 | 0.458258 |
| 0.4 | 0.489898 |
| 0.5 | 0.5 |
| 0.6 | 0.489898 |
| 0.7 | 0.458258 |
| 0.8 | 0.4 |
| 0.9 | 0.3 |
毫不奇怪,10% 的 1 和 90% 的 0 的總體標準差,與 90% 的 1 和 10% 的 0 的總體標準差相同。 那是因為你把直方圖的一個條和兩一個條互換,延展度沒有變化。
更重要的是,出于我們的目的,標準差隨著 1 的比例增加而增加,直到 1 的比例為 0.5;然后開始對稱下降。
```py
zero_one_sds.scatter("Population Proportion of 1's")
```

總結:01 總體的標準差最大為 0.5。 當 50% 的總體為 1 而另外 50% 為 0 時,這就是標準差的值。
### 樣本量
我們知道了 ,并且 01 總體的標準差最大為 0.5,無論總體中 1 的比例。 所以這樣是安全的:

所以樣本量應該至少是`200 ^ 2 = 40,000`。 這是一個巨大的樣本! 但是,如果你想以較高的置信度確保高精度,不管總體是什么樣子,那就是你所需要的。