2021年7月23日

頭有多重?

前幾天買了一個行李拉秤想要來秤東秤西,不過拿到之後想秤的第一個東西卻是「頭」。

秤頭真是麻煩,雖然廚房有工具可以幫忙拿下來,但是拿下來怕地板要洗很久,然後又怕會放不回去,所以就想了一個方法來秤-躺在地上戴著頭巾叫老婆把我頭鉤起來量,因為鉤的地方不是質心,所以用了不同的方式和鉤位來測量。

1.身體躺著,頭巾綁在額頭
2.身體趴著,頭巾綁在額頭


也有用別的方式,頭巾通過嘴巴,對,就像是被綁架那樣,然後身體趴著,但這樣太難量,很怕下巴會掉出去。或者頭巾綁在下巴,身體坐著頭垂著,但這樣勾著會有人生跑馬燈跑出來,還是算了。

量了之後,得到的數據大致上在5.2公斤到5.8公斤之間。

後來我想試試看自己有沒有辦法量呢?

一樣是綁著頭巾在額頭上,躺在地上自己抓著秤來量自己頭重,結果發現完全沒有辦法耶。當我手出力把頭勾起來時,頸前的肌肉啊,就會反射收縮主動讓頭抬起來,結果秤出來只有兩公斤多。


想想這麼重的東西,快要是三罐2000cc可樂的重量了,如果它的位置不是平穩地安放在脖子上方,而是一整天頭前傾都往前垂出去,那麼肩頸肌肉負擔有多大啊。


這種測量方式準不準呢?我發現還蠻準的,因為我想起來以前有用過更精密的方式測量過啊。


幾個月前去作過 DXA的體脂肪、肌肉與骨質測量,那是用低能量的X光去照射全身所作的測量,藉由影像中X光對不同組織的穿透度,來估算各部位的質量。



裡頭就有頭部重量的數據,是5811g,其中 fat mass是1307g。



但我覺得其中的fat mass 不一定是脂肪,可能是腦,一般成年人的腦重也就是1-1.5kg之間,
當然還有一種可能就是我這個頭裡面沒有腦,就只有脂肪,但是這個可能性很低,我們不應該考慮。

2021年7月16日

便利商店的地理資訊分析

最近在弄這個專案,純粹是因為幾個月前去台南玩的時候,逛街逛著想要找間便利商店,有種感覺-便利商店好像比新竹少?在新竹市街上走著,好像很容易就看到便利商店。

要來驗證這種主觀的感覺是否為真,就得要有充分的數據來支持。

首先得先找到超商的資料庫,在政府開放資料平臺上,有一個全國5大超商資料集,剛好可以用來解答。



不過我熟悉的就只有四大超商而已,哪來五大呢?看了資料集才知道它是連全聯一起算進去啊。

有了這個資料集,可以先作一些簡單的探索性分析,像是各縣市的五大超商數量。

  1. 新北、台北是第一名和第二名
  2. 小七在各縣市都是最多的,接下來就是全家
  3. 在某些縣市是沒有OK、萊爾富、全聯等便利商店

各縣市五大超商 便利商店分析


在五大超商資料集中,還有各分公司的地址,既然有地址,就可以拿來作地理資訊分析了。不過地址怎麼轉成經緯度呢?有兩種作法,一是用 Google Maps API,不過有一些數量和時間的限制,所以我改用方法二。

方法二就是用地理資訊圖資雲服務平台,平台有一個「全國門牌地址定位服務」,只要成為TGOS會員,一天可以比對一萬筆的資料。會員的申請不用錢,比對資料也不用錢,真是太棒了。

會員申請好了以後,再申請[ 批次門牌地址比對服務 ] ,就可拿到一組認證金鑰(API KEY)。申請會員和申請地址比對服務大概都是人工作業,所以不是隨時申請就隨時通過的,但上班時間內幾個小時內就會通過。然後地址轉經緯度也不用寫程式去呼叫,只要上傳你的地址csv檔之後,過一段時間,系統就會通知你去下載結果。

由於我使用的超商資料接近兩萬筆,所以我就分兩天去轉經緯度,但不是每一個地址都有順利轉出來的,大約三百多筆資料沒轉出來,比較多是因為該超商的地址有多個門牌號碼,而系統只能比對一個門牌。我評估三百多筆資料的缺失,對我的分析作業影響不大,所以我就不管那些呢。



第一張圖並不區分超商的公司為何,沒想到完全可以勾勒出台灣的位置。但是啊,仔細看會發現怎麼台灣西北方會出現一些超商的點啊?這個應該是轉門牌為經緯度的時候,有些點位的誤差。

臺灣五大超商分佈_全

另外一張圖將不同公司用不同顏色標上去,乍看之下到處都是全聯,但其實是因為全聯是繪圖時最後一組被標上的,所以它把其他超商蓋過去了。
臺灣五大超商分佈


接下來就開始用內政部的其他資料一起來畫圖吧,找了各縣市的人口和面積,然後計算兩個指標
  1. 該縣市的人口/除以該縣市的便利商店店數,這當作是一個店的服務人口。那為什麼不用店數/人口呢?可以看一個人可以有幾家店呢?是可以啦,但是會一堆小數點,不是那麼直觀。
  2. 該縣市的商店數/該縣市的面積,這個就便利商店的面積密度。
用這兩個指標畫圖以後,喔,就看到呈現兩種趨勢,大多數的縣市在每一平方公里的商店數量大致相同,但是幾個縣市如台北、新竹、嘉義、基隆等就比別的縣市多。服務人口的部份,金門縣的單店服務人口就很多。

但仔細想想用面積密度來算,可能會有一些缺失,比方說某縣市可能有很大的郊區,例如很大的山區如陽明山,或是很大的水庫,而這些地方本來就沒有什麼便利商店啊。所以在分析時,這種郊區的存在就可以能造成分析的偏差。


各縣市便利商店面積密度與服務人口


怎麼辦呢?我改用另一種方式來分析,改用「在有便利商店的區域中,你在兩百公尺內可以找到幾家便利商店」來分析吧!我用下圖作範例來說明一下吧。

假設以下三個縣市都有三個便利商店(淺藍色的點),而三個縣市的形狀剛好都是正方形,所以我們計算三個縣市的商店密度,都會得到相同的數值。

但如果我們把每個商店周圍都劃一個圓圈,代表這個商店的勢力範圍(灰圈圈),然後把每個商店的勢力範圍取聯集。我們就可以用這個方式去計算出在這個聯集的勢力範圍內,你可以遇到幾家便利商店。這代表的意義是什麼呢?

如果是左邊第一個縣市,它的商店就是很分散,你到了一家便利商店之後,附近200公尺內就沒有其他便利商店了。但右邊的商店就很集中,到處都看得到便利商店。


demo



改用這種指標之後,再來畫個圖,這時就會發現又不一樣囉。新竹無論縣市,在便利商店的區域中,你很容易就找到另一家便利商店。但有些縣市就不是這樣。


在有便利商店的區域中集中度與服務人口


作完了這兩張圖之後,其實心裡還想到很多分析的變項,像是便利商店的多寡一定是跟人口數量有關,所以如果拿人口再來作圖會變成怎樣呢?想來想去,覺得光是用2維的靜態圖表來呈現實在不夠,所以就在用D3來做動態圖表吧


你可以在以下網址自由改變不同的 X軸和 Y軸,看看這些變項與便利商店的關係


以下貼幾個範例,這是觀察面積和人口的關係,左上角的「縣市標籤」勾選後,會出現縣市名稱,另外滑鼠靠近資料點,也會呈現該資料點的各種屬性數值。

D3 D3 D3



本來想說做完這個動態的散佈圖應該就可以結束了吧,但是某天早上醒來,想想好像可以作一個隨著時間變化,便利商店在各地的增長。所以我又做了一個動態圖表

拖曳那個時間軸,可以看到各地的便利商店的變化


不過喔,一直有bug,因為一次是畫了一萬多個點上去,所以每次調整時間軸,都有一些便利商店的點沒有被畫上去,特別是按那個「play」,會看到便利商店變稀疏。如果要比較真實呈現的話,也不要用slider在那邊滑,你就直接點時間軸的特定位置,畫出來的還比較準確哩。

便利商店時間變化

2021年7月4日

歷年國中生物教科書比較

前幾天,月鈴老師因為要寫一份文件,要討論歷年的教科書變化,拿了一份資料問我,如何整理比較好,那份資料是歷年教科書的目錄。

我想了想,如果是用章或節來分,可能的問題是各期教科書的排法並不同,不容易看出比較,也可能分得太粗。後來我想乾脆就用現在教科書的幾個大概念來將每節與每個實驗活動來分類,不知道怎麼分類的就算「其他」,有一些上冊第一二章的東西,就當作「概論」,這樣應該可以。

所以我就先將所有資料以節為單位,把資料先清理乾淨,像這樣才好做後續的整理


有了這樣的資料庫之後,再用python抓資料寫成html檔,變成這樣

你可以在這裡看到全貌

https://chihhsiangchien.github.io/textbookAnalyze/analyze.html



看到歷史軌跡的變化,真是有趣而且嚇人。

57年版本的教科書寫「依照課程標準,生物科每週上課三小時,其中三分之一為實驗時間。但作實驗之次數及每次所用之時間,可由教師自行斟酌,只須總時間符合三分之一之規定即可。」

你知道這個版本教科書上下學期多少實驗嗎? 80個耶!

不過後來看到月鈴提供的教科書照片,原來那時的實驗並不像現在的教科書那樣的巨大,有些就是幾單的觀察活動而已,而且也沒有硬性一定要做那些實驗。再加上當時的師資結構,也許也不一定都有做這些實驗就是。


歷年各科會考分析的通過率鑑別度的視覺化呈現

前一篇我說,我本來在做交通的視覺化呈現,可是中間卡觀去做別的專案了,意外發現D3.js可以解決問題。我說的別的專案就是這個- 歷屆各科國中會考分析的視覺化呈現

但我以前不就在這邊已經做過了嗎?

https://chihhsiangchien.github.io/question_database/

點進去可以看到有各科所有年度合計的通過率鑑別度等,要看到各科最高鑑別度的題目也可以啊,但是之前的做法就是讓那些資料都分散的。

現在的新作法就是用D3.js來打造新的散佈圖

https://chihhsiangchien.github.io/question_database/d3/index.html

可以看各科單年度或全部年度的通過率和鑑別度的圖形分布,點到那個點上,還可以看到那一題的題目是什麼?不過啊因為題目是直接用程式擷取的,所以我就沒有細修,因此題目內會看到一些莫名的碼,那個其實是題目本來有含圖的,或是題目的選項有點錯置。但是我覺得這不影響使用。因為你要看這個東西,目的是要看題目的類型和通過率、鑑別度之間的關係。

另外,透過各科之間的比較,也會發現各科的歧異度很大,有些科目對學生來說應該都算簡單,所以通過率都高,但有些就真的是難科。




端午連假,開車出門去到哪?D3 js弧形圖的視覺化呈現

 兩三週前,寫了這篇

《端午連假,台灣人有出遠門嗎?用高公局的交通資料庫找證據》


過了幾週後,其實民眾應該已經忘記端午連假前,有人出遠門這件事。不過,我沒忘,我一直在想找這個答案。


當時那篇我最後寫了

最後回到一開始的問題,到底有沒有出遠門呢?我目前只能說,我的資料無法支持「有出遠門」這樣的主張。主要是我處理的資料庫中沒有提供起訖點,當然也不知道南北向。所以目前我只能說我不支持這樣的主張,但是並不代表我反駁這樣的主張喔。


後來我在高速公路局的交通資料庫裡看到了M06A的 各旅次路徑原始資料,裡頭居然鉅細靡遺的紀錄了每天每一台車的起訖點和經過各門架的時間,有了這種資料要回答我之前提出的問題。還好沒有提供車號,不然真的可以拿來為非作歹啊。

這個資料庫裡有區分車種,如小客車、大客車、小貨車、大貨車、聯結車等,我抓取了每台車的起點和終點門架做統計之後,知道那些門架進出數量,但是卻不知道怎麼去呈現這些資料。

嘗試過各種方式,但總是沒能達到我要的效果


試過畫出每個門架的位置,想從裡頭視覺化,但是想不出來。


也試過熱區圖,用進出門架的縣市為縱橫軸,用實際車次為數值,看「從哪個縣市進入的,大多去哪個縣市」。但是用實際車次就會受到母體的影響,比方說雙北的人口多,車輛當然多,而且雙北的面積大,所以很容易就得出「從台北市進去的車子大多從台北市離開」的結論


後來我就想,那我先不要分縣市,直接看各門架的進出好了。(先說下面兩張圖後來想到有一些問題)

我抓取6/11,旅程小於300公里的聯結車的行車紀錄,共計202454輛次。再篩選各收費門架中,找出起點和終點門架各大於500輛次的門架,用其前後的出入口當作該車輛進入和離開高速公路的點。看看聯結車和小客車進入高速公路的熱點,和離開高速公路的熱點是哪裡?

這張圖怎麼看,每個色塊都代表一群車子,顏色深淺代表這群車子的數量,沿著色塊往左看可以看這群車子從哪裡來,往下看可以看這群車子從哪裡離開。

跟一開始我推測的差不多,基隆和高雄就是熱區。

我說的問題是什麼,實際上第一名的入口門架,所使用的出口門架,和第二名、第三名等的所使用的出口門架都是不同的,所以這樣的圖看起來很漂亮,但其實漏掉很多訊息。






卡關一陣子之後,分心去處理別的專案,用了D3.js,發現弧形圖 arc diagram很適合用在我這個交通分析的專案。

於是花了一些時間弄懂範例之後,終於打造了一個我滿意的視覺化呈現

噹噹

https://chihhsiangchien.github.io/trafficAnalyze/arc-diagram/d3/index.html

點選門架,就可以看到從那個門架進去的車,從哪個門架出去?線條的粗細代表車流的大小,越細車越少,越粗車越多。我是把車流取10為底的log值,每粗一倍的線條,就是10倍車流,最粗的線條就是幾十萬台車,最細的就是十幾台車。




最後我終於可以看出,當天北部的小車到底有沒有跑到南部呢?當然是有啊。那麼是多還是少呢?這個我就沒做了,因為多和少的評斷,你得和其他日子一起比啊。