iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Vibe Coding

與Claude一起從零打造產值評估工具系列 第 13

Day 13 | 不用API,要怎麼建立「投入產出模型」?

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260815/20183196WdIKESDXC6.png

在我之前規劃的模型清單中,
目前在產業評估模型中灰階的部分,
目前產業關聯表示尚未具備的,
當然這個在資料建置中是非常費時費力的,
今天就是要對此進行資料實踐
因此今天所要製作的「投入產出分析(Input-Output Analysis)」
靠著其與產業關聯兼具有高度關聯性
可以說是所有工具內,評估模型最難建置的部分
也是資料最難取得的部分

一、今日目標

  • 把主計總處產業關聯表的「資料現實」處理掉
  • Input-Output Analysis模型的關聯係數計算
  • 把平台上產值評估的灰階解除

二、先講資料現實:無 API、五年一版、人工下載

https://ithelp.ithome.com.tw/upload/images/20260815/2018319603mQj85yKO.png

考量產業關聯表是主計總處
約每5年編製一版的大工程,只提供網頁下載
並沒有API可以串聯
因此這邊主要採人工下載的方式執行
因此在建置上,我需要從官網把表抓下來,交給解析腳本轉成 data/io_table.json

此外對於此次建置內容,需要配套措施,分別如下:

  • 列入每季人工更新清單:跟MOPS財報同一份checklist,更新是例行公事不是意外
  • 種子檔要誠實:開發期先用結構相同的種子檔開工,但檔內 meta.warning 明確標示「示範資料」
  • 基準年上卡:關聯表五年一版,結果卡固定顯示「資料基準:110 年關聯表」這會造成極大的誤會,所以有可能在後期建置上會需要拿掉

檔案下載

下載的資料來源為
https://www.stat.gov.tw/News_Content.aspx?Create=1&n=2781&state=1327FD6AD8DCDA52&s=234144&ccms_cs=1&sms=11077

要下載的檔案是「國內關聯程度表」
https://ithelp.ithome.com.tw/upload/images/20260815/20183196wA1AgNxRyB.png

四、我下的 Prompt

依產業模型規格實作

  1. scripts/parse-io.mjs——解析主計總處關聯表檔案(貼上實際欄位結構),輸出 data/io_table.json,meta 必含基準年與 warning 欄位
  2. models/io.ts——讀 io_table.json,計算指定產業的向後/向前關聯係數(Leontief 反矩陣),矩陣運算用 mathjs,輸出統一 JSON。

Claude給的結果如下
https://ithelp.ithome.com.tw/upload/images/20260815/20183196RntsZJvnc0.png

但在這邊會發現一個大問題

問題的出現

根據Claude給的安裝說明
要做的事情是

  • 檔案是 .xls 或 ODF 格式,用 Excel 開啟,找到含「影響度」「感應度」欄位的工作表
  • 另存新檔 → 格式選「CSV UTF-8」,存到專案的 data\raw\

但這邊是找不到含「影響度」「感應度」欄位的工作表
這就會造成其原產出的打包檔,
在解析中會出現問題
因此在這邊 我又下了第二次的Prompt

找不到含「影響度」「感應度」欄位的工作表,幫我我依照上傳的檔案,進行解析修正

Claude給我的回覆如下
https://ithelp.ithome.com.tw/upload/images/20260815/201831960M5QHoGBQx.png

因此我將新的檔案重新丟進專案後
再次進行
Claude給我的打包檔內容如下
https://ithelp.ithome.com.tw/upload/images/20260815/20183196YwKc8NYlFs.png

同時這邊Claude也給我了之後資料更新的作法
https://ithelp.ithome.com.tw/upload/images/20260815/20183196FS0LKkrrIv.png

五、驗收

接下來要開始進行資料驗收
先將資料進行第一次檢視:
驗算:帶動產值公式、粒度差對照「化學材料及肥料→化學材料」、查無對照的報錯品質

npx tsx scripts/test-ind3.ts
https://ithelp.ithome.com.tw/upload/images/20260815/20183196AwrGSDrsME.png

回歸確認
npx tsx scripts/test-ind1.ts
https://ithelp.ithome.com.tw/upload/images/20260815/201831963ET04bgxeL.png

npx tsx scripts/test-ind2.ts
https://ithelp.ithome.com.tw/upload/images/20260815/20183196RC0hEMDCZI.png

接下來開始進行實際工具頁面驗證
npm run dev

https://ithelp.ithome.com.tw/upload/images/20260815/20183196W1LyNO87UG.png

https://ithelp.ithome.com.tw/upload/images/20260815/20183196ukaJPmrQlI.png

六、今日小結

今天做完的感覺
我覺得最難的模型,難的是資料不是數學計算
其中像是 Leontief 反矩陣一行 mathjs 就可以解決,
真正花時間的是「無 API 的表怎麼進系統、五年一版的時效怎麼交代、粗細不同的分類怎麼對照」。

當然在這邊,大家可能會認為
為什麼我都已經把下載的資料放進專案data中了
為什麼我的工具平台上,還是呈現範例檔呢
因此我在這邊對此作簡單的解釋
我們用以下的範例
在瀏覽器中的Console 貼上

for (const f of ["industry_output.json","io_table.json","financials.json"]) fetch('/data/'+f).then(r=>r.json()).then(j=>console.log(f, j.meta.is_sample ? '⚠範例' : '✓正式', '基準:'+j.meta.base_period))

其執行結果如下
https://ithelp.ithome.com.tw/upload/images/20260815/20183196BfkjZXp30B.png

會出現這個問題的原因是
因為Claude在進行設計時
他將目前的模型寫成同時依賴io_table 和 industry_output 兩份資料

這真正造成的問題點
是在於我在Day 4的時候
我沒有做經濟部工業產銷存(industry_output)下載與解析
致使這邊仍然卡在範例部分

所以在之後,我要找時間先補
Day 4沒有做的事情
下載「工業產銷存動態調查」
才能有辦法讓範例的標示取消掉


上一篇
Day 12 | 用Claude製作CAGR Model(趨勢預測模型)
下一篇
Day 14 | 到底是誰牽動誰~ 如何把地圖與關聯串起來?
系列文
與Claude一起從零打造產值評估工具16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言