National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 78 24°C PM2.5 18
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 15

敘述統計

平均數、中位數、標準差、四分位數,極端值的影響
Interaction實作 30 minute(s)

Learning Objectives

  • 用平均數與中位數描述資料的中心,說出極端值對兩者的影響
  • 用標準差、四分位數與 IQR 描述資料的分散程度,並說出 pandas 與 numpy 的 std 為什麼不同
  • 用 1.5×IQR 規則找出可能的極端值,並說明找到之後該怎麼處理
  • 依分布的形狀選擇要報告哪些統計量

把 200 個數字說成幾個數字

200 位學生的每週讀書時數,一個一個念出來沒有人記得住。敘述統計用少數幾個數字摘要一組資料,回答兩個問題:

問題 常用的統計量
中心在哪裡?(典型的值大約是多少) 平均數、中位數
分得多散?(每個值離中心多遠) 標準差、四分位數與 IQR、全距

這一課也會看到:同樣是「中心」,平均數和中位數可能差很多;一個極端值就能讓平均數和標準差大幅改變,中位數和 IQR 卻幾乎不動。 資料是 students.csv 與 grades.csv,都是程式產生的模擬資料,不是任何學校的真實資料。

平均數與中位數

  • 平均數(mean):全部加起來除以筆數。每一個值都會影響它。
  • 中位數(median):由小排到大,排在正中間的值;筆數是偶數時,取中間兩個的平均。它只看「排在中間的是誰」。

pandas 的 Series 用 s.mean()、s.median(),會自動略過缺值;numpy 用 np.mean(a)、np.median(a),遇到 nan 結果也是 nan(要略過缺值改用 np.nanmean)。

逐步看:加入一個極端值

先看 5 個數的平均數與中位數,再加入一個 60,比較兩者各變了多少。

分散程度:標準差、四分位數與 IQR

標準差(standard deviation)大致是「每個值離平均數多遠」的典型距離。樣本標準差的公式:

s = √( Σ(x − 平均數)² ÷(n − 1))

除以 n − 1 而不是 n,是因為用樣本推估母體時,除以 n 會系統性地偏小。這個「減掉的 1」在程式裡叫 ddof:

寫法 除以 用在
pandas s.std() n − 1(ddof=1,預設) 把資料當成樣本
numpy np.std(a) n(ddof=0,預設) 把資料當成整個母體
numpy np.std(a, ddof=1) n − 1 和 pandas 相同

同一份資料,pandas 和 numpy 算出來的標準差不一樣,原因就在這裡。報告時寫清楚你用的是哪一種。

四分位數把排好的資料切成四等分:Q1(第 1 四分位數,25%)、Q2(就是中位數)、Q3(75%)。IQR=Q3 − Q1,是中間一半的資料占的範圍。 s.quantile([0.25, 0.75]) 算四分位數;s.describe() 一次列出筆數、平均數、標準差、最小、Q1、中位數、Q3、最大。

逐步看:標準差的兩種算法、四分位數與 describe

可能的極端值:1.5×IQR 規則

箱形圖由 John Tukey 在《Exploratory Data Analysis》(1977)推廣。常見的規則是:

小於 Q1 − 1.5×IQR,或大於 Q3 + 1.5×IQR 的值,標成可能的極端值(outlier)

matplotlib 的 boxplot 預設就用這個規則:鬚只延伸到界線以內最遠的點,界線外的點單獨畫成小圓圈。

標出來不等於刪掉。 極端值可能是輸入錯誤(第 8 課的 150 分),也可能是真實但少見的情況(真的有人每週讀 25 小時)。 找到之後先查它是怎麼來的:確定是錯誤才修正或排除;是真實的值就保留,必要時改用不受極端值影響的統計量,並在報告中說明你怎麼處理。

逐步看:找出極端值,比較平均數與中位數的位置

先用 1.5×IQR 規則找出極端值,再畫直方圖(標出平均數與中位數)和箱形圖。

互動練習:極端值怎麼改變每一個統計量

下面是 15 位學生的每週讀書時數(students.csv 的前 15 位,模擬資料)。用滑鼠或手指左右拖動任何一點; 也可以按 Tab 選到一點,再用方向鍵移動(Shift+方向鍵一次移動比較多)。表格同時列出原本與現在的統計量。依序完成下方的任務。

要報告哪幾個數?

分布的樣子 中心 分散
大致對稱、沒有明顯的極端值 平均數 標準差
偏斜(例如收入、通勤時間、讀書時數)或有極端值 中位數 IQR(或 Q1、Q3)

不管用哪一種,都要寫出筆數 n,最好也附上圖(直方圖或箱形圖),讀者才知道分布長什麼樣子。 平均數 9.9、標準差 4.7 這兩個數,對稱的分布和右偏的分布都可能算得出來,只看數字會看不出差別。

實作:住宿與不住宿的通勤時間

讀入 students.csv,依是否住宿(dorm,Y 或 N)分組。對每一組的通勤時間(commute_min), 在同一行依序印出:組名、平均數(小數 1 位)、中位數、標準差(pandas 的 std,小數 1 位)、IQR(Q3 − Q1)。

你的輸出
預期輸出

小測驗:中心與分散

1.

下面程式會印出什麼?

import numpy as np
x = [3, 4, 5, 6, 100]
print(np.mean(x), np.median(x))
2.

下面程式會印出什麼?

import numpy as np
import pandas as pd
s = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])
print(round(s.std(), 3), np.std(s.to_numpy()))
3.

某校學生每月打工收入的分布右偏:大多數人幾千元,少數人好幾萬。平均數和中位數最可能是什麼關係?

第 1 次作答

小測驗:極端值

1.

一組資料的 Q1 = 20、Q3 = 30。依 1.5×IQR 規則,下列哪一個值會被標成可能的極端值?

2.

分析時發現一筆每週讀書時數 25.4 小時被標成極端值,最恰當的下一步是什麼?

第 1 次作答

重點整理

  • 中心:平均數用到每一個值,會被極端值拉走;中位數只看排在中間的值,不受極端值影響。右偏分布的平均數通常大於中位數。
  • 分散:標準差大約是每個值離平均數的典型距離;pandas 的 std 除以 n − 1(ddof=1),numpy 的 np.std 預設除以 n(ddof=0)。
  • 四分位數:Q1、中位數、Q3;IQR=Q3 − Q1 是中間一半資料的範圍,describe() 一次列出。
  • 1.5×IQR 規則標出可能的極端值;標出來之後先查原因,不要直接刪掉。
  • 對稱的資料報告平均數與標準差,偏斜的資料報告中位數與 IQR;都要寫出筆數,並附上圖。
  • 下一課從「手上這一份資料」走向「母體」:常態分布、從母體抽樣,以及樣本平均數會怎麼變動(中央極限定理)。
這一課完成了!
Next lesson:分布與抽樣
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。