<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 十二、為什么均值重要 > 原文:[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,這不是數據的“正中間的點”。 那么這是什么意思? 為了了解它,請注意,平均值可以用不同的方式計算。 ![](https://img.kancloud.cn/da/a8/daa8f469f965fd8f942576795bde8b8d_353x281.gif) 最后一個表達式就是一個普遍事實的例子:當我們計算平均值時,集合中的每個不同的值都由它在集合中出現的時間比例加權。 這有一個重要的結果。 集合的平均值僅取決于不同的值及其比例,而不取決于集合中元素的數量。 換句話說,集合的平均值僅取決于集合中值的分布。 因此,如果兩個集合具有相同的分布,則它們具有相同的均值。 例如,這里是另一個集合,它的分布與`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`的分布直方圖。 ![](https://box.kancloud.cn/51847f2b3bb8231fdd3b1dfced76a382_443x298.png) 想象一下,直方圖是由紙板組成的圖形,它附著在一條線上,線沿著橫軸延伸。并且,將這些條形想象為附加在值 2, 3 和 9 上的權重。假設你嘗試在線上的某個點平衡這個圖形。如果該點接近 2,圖形就向右傾斜。如果該點接近 9,則圖形就向左傾斜。之間的某個地方是這個數字取得平衡的點。這個點是 4.25,就是均值。 均值是直方圖的重心或平衡點。 為了理解這是為什么,了解一些物理會有幫助。重心的計算與我們計算平均值的方法完全相同,通過將不同值按它們比例加權。 因為均值是一個平衡點,有時在直方圖的底部顯示為一個支點或三角形。 ![](https://box.kancloud.cn/86631e00768c18cf1049fc82938a70b8_443x298.png) ### 均值和中位數 如果一個學生的考試成績低于平均水平,這是否意味著該學生在該考試中處于后一半? 對于學生來說,回答是“不一定”。 原因與直方圖的平衡點即均值,和數據的“中間點”即中位數之間的關系有關。 通過這個關系很容易看到一個簡單的例子。 這里是數組`symmetric`的集合`{2, 3, 3, 4}`的直方圖。 分布對稱于 3。均值和中位數都等于 3。 ```py symmetric = make_array(2, 3, 3, 4) ``` ![](https://box.kancloud.cn/a9b87a2b9c158a86bba15b0b7dc31e0d_443x298.png) ```py np.mean(symmetric) 3.0 percentile(50, symmetric) 3 ``` 一般來說,對于對稱分布,均值和中位數是相等的。 如果分布不對稱呢? 我們來比較`symmetric`和`not_symmetric`。 ![](https://box.kancloud.cn/6e514f48ccf9c0209f9fa62a01ee5f56_566x243.png) 藍色直方圖表示原始的`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)) ``` ![](https://box.kancloud.cn/f41d4ffc67e30481c517502e0c946c5e_473x337.png) 這個直方圖向右偏斜;它的右側有個尾巴。 平均值拉向了尾巴的方向。 所以我們預計平均薪酬會比中位數大,事實確實如此。 ```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)) ``` ![](https://box.kancloud.cn/67a06fda616e8b5049e75ef3edcd32b1_443x298.png) 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)) ``` ![](https://box.kancloud.cn/a322299712e5c2b90b85717a801e338c_443x298.png) ```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`個標準差”范圍內的條目比例至少為 ![](https://img.kancloud.cn/14/da/14da8190eacd0267d9d2e4274d5c4666_49x37.gif)。 值得注意的是,結果給出了一個界限,而不是一個確切的數值或近似值。 是什么讓結果變得強大,對于所有列表來說都是這樣呢 - 所有的分布,無論多么不規則? 具體來說,對于每個列表: 在“均值上下兩個標準差”范圍內的比例至少是`1 - 1/4 = 0.75` 在“均值上下三個標準差”范圍內的比例至少為`1 - 1/9 ≈ 0.89` 在“均值上下 4.5 個標準差”范圍內的比例至少為`1 - 1/4.5^2 ≈ 0.95` 如上所述,切比雪夫的結果給出了一個下界,而不是一個確切的答案或近似值。例如,“均值上下兩個標準差”范圍內的條目百分比可能比 75% 大得多。但它不會更小。 ### 標準單位 在上面的計算中,`z`的數量是標準單位,高于平均水平的標準差的數量。 標準單位的某些值是負值,對應于低于均值的原始值。 標準單位的其他是正值。 但是無論列表的分布如何,切比雪夫邊界意味著標準單位一般在`(-5, 5)`范圍內。 要將一個值轉換為標準單位,首先要求出距離平均值有多遠,然后將該偏差與標準差比較。 ![](https://img.kancloud.cn/32/01/3201da1149feb33b2ddf88a213c9b834_180x38.gif) 我們將會看到,標準單位經常用于數據分析。 所以定義一個函數,將數值的數組轉換為標準單位是很有用的。 ```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)); ``` ![](https://box.kancloud.cn/c69df1d066f9b81faba97554bbcef878_452x298.png) ## 標準差和正態曲線 我們知道均值是直方圖的平衡點。 標準差與平均值不同,通常不容易通過查看直方圖來識別。 然而,有一種分布形狀,它的標準差與平均值幾乎一樣清晰可辨。 這是鐘形分布。 本節將查看該形狀,因為它經常出現在概率直方圖中,也出現在一些數據的直方圖中。 ### 數據的大致鐘形的直方圖 讓我們看看母親的身高分布,它們在我們熟悉的 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); ``` ![](https://box.kancloud.cn/ff0248f49828705f314a72a16b743642_440x298.png) 上面單元格中的最后兩行代碼更改了橫軸的標簽。 現在,對于`z=0, ±1, ±2, ±3`,標簽對應于“標簽上下`z`個標準差”。 由于分布的形狀,“中心”具有明確的含義,在 64 處清晰可見。 ### 如何定位鐘形曲線上的 SD 要看 SD 如何與曲線相關,請從曲線頂部開始,向右看。 請注意,曲線有一個地方,從看起來像“倒扣的杯子”,變為“朝右的杯子”。 在形式上,曲線有一個拐點。 這個點高于均值一個 SD。 這是`z = 1`的點,即“均值加一個標準差”,為 66.5 英寸。 在均值的左邊也對稱,拐點在`z = -1`處,也就是“均值減一個標準差”,為 61.5 英寸。 一般來說,對于鐘形分布,SD 是均值和任一側的拐點之間的距離。 ### 標準正態曲線 除了軸上的標簽,我們所看到的所有鐘形直方圖,看起來基本相同。 的確,通過適當地重新標記坐標軸,從所有這些曲線中,實際上只能繪制一條曲線。 為了繪制這條基本曲線,我們將使用標準單位,我們可以將每個列表轉換成它。所得到的曲線因此被稱為標準正態曲線。 標準正態曲線的方程令人印象深刻。 但是現在,最好把它看作是變量直方圖的平滑輪廓,變量以標準單位測量并具有鐘形分布。 ![](https://img.kancloud.cn/ba/5a/ba5a88755a6ee1129cb7e2b69e94d52b_273x42.gif) ![](https://box.kancloud.cn/b45283b439142a6e5b4e0d9e4b6e74c4_447x313.png) 與往常一樣,當你檢查新的直方圖時,首先查看橫軸。在標準正態曲線的橫軸上,這些值是標準單位。 這里是曲線的一些屬性。有些是通過觀察顯而易見的,有些則需要大量的數學才能建立起來。 曲線下面的總面積是1.所以你可以把它看作是繪制為密度標度的直方圖。 曲線是對稱的。所以如果一個變量具有這個分布,它的平均值和中位數都是 0。 曲線的拐點在 -1 和 +1 處。 如果一個變量具有這種分布,那么它的 SD 是 1。正態曲線是 SD 清晰可辨的極少數分布之一。 由于我們將曲線視為平滑的直方圖,因此我們希望用曲線下方的面積來表示數據總量的比例。 平滑曲線下的面積通常是通過微積分來計算的,使用一種稱為積分的方法。然而,一個數學的事實是,標準的正態曲線不能通過任何微積分方式來積分。 因此,曲線下方的面積必須近似。這就是幾乎所有的統計教科書,都帶有曲線下方的面積的原因。這也是所有統計系統,包括 Python 模塊在內,都包含提供這些面積的優秀近似的方法的原因。 ```py from scipy import stats ``` ### 標準正態的累積分布函數(CDF) 用于求出正態曲線下的面積的基本函數是`stats.norm.cdf`。 它接受一個數值參數,并返回曲線下,該數值的左側的所有面積。 它在形式上被稱為標準正態曲線的“累積分布函數”。 在口語里縮寫為 CDF。 讓我們使用這個函數來求出標準正態曲線下,`z=1`左側的面積。 ![](https://box.kancloud.cn/74bf461cddc3abc827932dd7ec3adbd1_447x313.png) 陰影區域的數值可以通過調用`stats.norm.cdf`來求出。 ```py stats.norm.cdf(1) 0.84134474606854293 ``` 這大概是 84%。 現在我們可以使用曲線的對稱性,以及曲線下面的總面積為 1 事實,來求出其他面積。 `z = 1`右側的面積大概是`100% - 84% = 16%`。 ![](https://box.kancloud.cn/e3b57d88b4fbf7f607318df48e5afbec_447x313.png) ```py 1 - stats.norm.cdf(1) 0.15865525393145707 ``` `z = -1`和`z = 1`之間的面積可以用幾種不同的方式來計算。 它是下面的曲線下方的金色區域。 ![](https://box.kancloud.cn/b98c8cceadaaed82e0c167221ba85016_447x313.png) 例如,我們可以將面積計算為“`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%。 ![](https://box.kancloud.cn/8367bc7f055d8957a3c5a015f2c527b0_447x313.png) ```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)) ``` ![](https://box.kancloud.cn/98522921afc6f45af7d5054ea5d3090d_446x298.png) 現在假設你多次對紅色下注。 你的凈收益將是來自上述分布的,多個帶放回隨機抽樣的總和。 這將需要一些數學,來列出凈收益的所有可能值,以及所有的記錄。 我們不會那樣做;相反,我們將通過模擬來逼近概率分布,就像我們在這個過程中一直做的那樣。 下面的代碼模擬你的凈收益,如果你在輪盤賭的 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)) ``` ![](https://box.kancloud.cn/d0d1064e6ef6412fc563c9445834834e_448x298.png) 這是一個大致鐘形的直方圖,即使我們正在繪制的分布并不是鐘形。 中心。分布集中在`-$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)) ``` ![](https://box.kancloud.cn/a27fd121e8acddf14aa4972a267c20ff_452x298.png) 平均延誤約為 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)) ``` ![](https://box.kancloud.cn/7824a596c89a890a4a96bd6cd1f07f0f_443x298.png) 即使我們從非常偏斜的分布抽樣,我們再次看到了大致的鐘形。 正如我們所期望的那樣,這個鐘形的中心在 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)) ``` ![](https://box.kancloud.cn/5577a570fdc0c8807181ec4b83624528_468x298.png) 正如你所期望的那樣,中央極限定理預測了,正態曲線再次集中于 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)) ``` ![](https://box.kancloud.cn/49ac791667c375f955c184ae94c48ee9_566x213.png) 兩個分布都大致是正態,但一個比另一個更窄。 樣本量為 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 ``` ![](https://box.kancloud.cn/2f931426ed4aa083f4bef57b4306f778_452x298.png) 現在我們來隨機抽樣,來查看樣本均值的概率分布。 像往常一樣,我們將使用模擬來得到這種分布的經驗近似。 我們將定義一個函數`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 ``` ![](https://box.kancloud.cn/962924f6e9b77753ccb72778efbfb2ce_443x311.png) ```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 ``` ![](https://box.kancloud.cn/92b4115ba3622b422b6c14b6fd0a023c_443x311.png) ```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 ``` ![](https://box.kancloud.cn/a3bbc25f6c1be236a77e92ada0993602_443x311.png) 你可以在實踐中看到中心極限定律 - 樣本均值的直方圖是大致正態的,即使延誤本身的直方圖與正態分布相差甚遠。 你還可以看到,樣本均值的三個直方圖中的每一個中心都非常接近總體均值。 在每種情況下,“樣本均值的均值”非常接近 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') ``` ![](https://box.kancloud.cn/16a00dc3f54601caa2232a40f2a4da24_566x234.png) 那里確實有兩條曲線。但他們彼此如此接近,看起來好像只有一個。 我們看到了一個普遍結果的實例。 請記住,上面的圖表基于每個樣本量的 10,000 個重復。 但是每個樣本量有超過 10,000 個樣本。 樣本均值的概率分布基于大小固定的所有可能樣本的均值。 固定樣本大小。如果樣本是從總體中帶放回隨機抽取的: ![](https://img.kancloud.cn/2a/fb/2afb1974f5103951a3aa5b0a9f872c83_404x43.gif) 這是所有可能樣本均值的標準差。 它大致衡量了樣本均值與總體均值的差距。 ### 用于樣本均值的中心極限定律 如果從總體中帶放回地抽取大型隨機樣本,那么不管總體分布情況如何,樣本均值的概率分布大致是正態的,以總體均值為中心,標準等于總體標準差除以樣本量的平方根。 ### 樣本均值的準確性 所有可能的樣本均值的標準差表示樣本均值的變化程度。因此,它被視為樣本均值作為總體均值的估計的準確度的一個度量。標準差越小,估計越準確。 公式表明: + 總體大小不影響樣本均值的準確性。公式中的任何地方都沒有出現總體大小。 + 總體標準差是一個常數;從總體中抽取的每個樣本都是一樣的。樣本量可以變化。由于樣本量出現在分母中,樣本均值的可變性隨著樣本量的增加而降低,因此準確度增加。 ### 平方根法則 從標準差比較表中可以看出,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`的寬度。因此,使用上一節中開發的公式: ![](https://img.kancloud.cn/a8/e2/a8e2ff162f03c1a835aec754f160a844_304x43.gif) 所以: ![](https://img.kancloud.cn/26/69/26695c1519c24f9d0d0bf7c716a6b1da_368x39.gif) ### 01 集合的標準差 如果我們知道總體的標準差,我們就完成了。 我們可以計算樣本量的平方根,然后取平方得到樣本量。 但我們不知道總體的標準差。 總體中,候選人 A 的每個選民為 1,其余選民為 0,我們不知道每種選民的比例是多少。 這就是我們正在估計的。 那么我們卡住了嗎? 不,因為我們可以限制人口的標準差。 這里是兩個這樣的分布的直方圖,一個是相等比例的 1 和 0 ,另一個是 90% 的 1 和 10% 的 0。 哪一個標準差更大? ![](https://box.kancloud.cn/3d3140f30f63c496a5cd4ae96fa29884_566x223.png) 請記住,總體中的可能值只有 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") ``` ![](https://box.kancloud.cn/3ffad55ab06d1c60d0996d0b5fb1ba1f_393x358.png) 總結:01 總體的標準差最大為 0.5。 當 50% 的總體為 1 而另外 50% 為 0 時,這就是標準差的值。 ### 樣本量 我們知道了 ![](https://img.kancloud.cn/26/69/26695c1519c24f9d0d0bf7c716a6b1da_368x39.gif),并且 01 總體的標準差最大為 0.5,無論總體中 1 的比例。 所以這樣是安全的: ![](https://img.kancloud.cn/f1/70/f1705442be5e4c4139005900c2374d58_270x39.gif) 所以樣本量應該至少是`200 ^ 2 = 40,000`。 這是一個巨大的樣本! 但是,如果你想以較高的置信度確保高精度,不管總體是什么樣子,那就是你所需要的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看