iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 1
0
AI & Data

飛哥與小博的30天-統計與機器學習成長日記系列 第 1

[DAY 1] 章節1-1: 像風一樣的男人-初見平均數與中位數(Python)

1-1 像風一樣的男人

「吱-呀--」門被一位長相思文、臉上總是帶著淺淺笑容的男子打開。

「飛哥!你回來啦?」小博興奮地問著。

「對啊,這次出差去台南兩周才回來有些累,不過倒也挺有趣的。」說著,飛哥便脫下襯衫,嫻熟的泡了杯菊花茶並輕鬆地坐在工作室的沙發上。

小博隨手按了按電視遙控器,電視報導說著「2017年台灣勞工每月平均薪資為4.9萬元,此金額加計年終獎金、年節獎金、紅利、績效獎金及加班費等非經常性薪資 」,小博抱怨道:「我一個月的薪水都沒拿那麼多,怎麼可能? 一半以上的人拿比我多的薪水唉!」

「你被數字的『平均』給迷惑啦!你知道問題在哪裡嗎?」飛哥微笑地問著。

「就大家的薪水加總再每個人平分的結果啊! 不是嗎?!」小博有些心虛地回答。

「假設台積電這家公司有五個人,月薪分別是3萬、3萬、4萬、5萬、5萬元,而安麗這家公司五人的薪水分別是1000、1000、1000、1000、19.6萬元,你覺得哪家的平均月薪比較高呢? 我只是舉例而已」飛哥饒富趣味的說著。

聽完問題的小博,立刻拿起紙筆計算了下平均,「嗯??!!!!兩家公司的平均薪資一樣!」

飛哥點了點頭,「這就是『平均』的障眼法,看似平均一樣的狀態,但是實際上可能數值落差很大,這個時候『中位數』就是一個很好的參考指標啦!」

「中位數? 好像在那裡聽過。鐘衛曙! 我大學同學的名字!」小博突然大聲起來。

「額...好,『中位數』就是將數字從小到大排列後,取最中間的那個數字作為指標,如果有偶數個數字的話,就把『最中間的兩個數字』加起來平均,目的就是避免有過大或過小的數字來影響整體的平均數值,所以通常我們會把這兩個指標一起拿來看,避免被平均數的大小誤導。」飛哥仔細地說著。

小博兩眼發亮的說著:「蠻有道理的耶! 我來看看2018的薪資中位數是多少? 唔… 3.9萬… 跟平均數怎麼差那麼多,果然不能只看平均啊,不過好像稍微沒那麼氣憤了」語氣漸漸變得緩和。

「再順便教你看看『眾數』吧! 眾數就是一串數列中,出現最多次的數字,可以想像是『最大眾的數字』,如果出現一樣多次的話,那就都算眾數,像剛剛提到台積電的五人薪資的眾數就是3萬跟5萬,但是如果數字出現次數都一樣的話,就沒有眾數了。簡單來說,這個指標可以看出哪個數字出現的頻率最高,通常在市場成交價格或是商品進貨尺寸都能看到相關應用」飛哥仔細地說明著。

小博不知何時麻將魂上身並小聲地說著:「差一個4萬就可以吃了… 。」說著說著,只看到飛哥喝完的菊花茶杯中還散著幾片花瓣,窗外斜陽照進屋內,和諧地將房內灑滿溫暖的橘光,或許是剛出差完太累了,剛才還在仔細說明的飛哥,現在正沉沉得睡著呢!


Python程式時間:

import numpy as np
from collections import Counter

a=[30000,30000,40000,50000,50000]
b=[1000,1000,1000,1000,196000]
def my_mode(sample):
    c = Counter(sample)
    return [k for k, v in c.items() if v == c.most_common(1)[0][1]]

print('Mean of a is ',np.mean(a),'.','Mean of b is ',np.int(np.mean(b)),'.')
print('Median of a is ',np.median(a),'.','Median of b is ',np.int(np.median(b)),'.')
print('Mode of a is ',my_mode(a),'.','Mode of b is ',my_mode(b),'.')

p.s. numpy裡面暫無提供眾數的套件,眾數的程式參考網址如下,引用的程式大家可以試試看如何修改成所有數字都出現相同次數時,就顯示「沒有眾數」,答案不一定只有一種寫法,平均數跟中位數也有多種選擇。
https://stackabuse.com/calculating-mean-median-and-mode-in-python/


後記: 第一次嘗試短篇故事的寫法,如果有相關建議歡迎提出一起討論,目的希望不硬生生的將公式或定義直接寫出,而是利用白話的口吻講述,讓不懂原理的人也能較快速進入情境。(第一天就寫那麼多......)


下一篇
[DAY 2] 章節1-2: 意外的雞胸肉-標準差與變異數(Python)
系列文
飛哥與小博的30天-統計與機器學習成長日記30

尚未有邦友留言

立即登入留言