糖尿病模擬的輸入、輸出與程式位置
位置依交付的繁中註解版 Notebook,由上往下從第 1 格計數,含 Markdown、Raw 與空白格。Jupyter 左側的 In [n] 是歷次執行序號。可用表列的程式片段搜尋儲存格。
A · DES 逐人模擬
| 順序與位置 | 輸入或輸出 | 檔名與程式位置 |
|---|---|---|
| 1 · 第 9 格 | 讀取風險迴歸係數(Big5) | filename = (Disease2[i] + '_para.csv').lower()。依序讀取 dm_para.csv、ashd_para.csv、chf_para.csv、isc_para.csv、fesrd_para.csv、eye_para.csv、fin_para.csv、ashd+chf_para.csv、ashd+isc_para.csv、chf+isc_para.csv、ashd+chf+isc_para.csv、esrd_para.csv、chf+fin_para.csv、dead_para.csv。 |
| 2 · 第 10 格 | 讀取事件時間參數 | layer1_weibull.csv → layer2_weibull.csv → layer3_weibull.csv。搜尋 para_wei.append(table)。 |
| 3 · 第 11 格 | 讀取病人初值與更新參數 | 先 TW initial value.csv,再讀 L1_adj/,最後讀 L2_adj/。兩個子目錄各有 ashd.csv、chf.csv、isc.csv、fesrd.csv、eye.csv、fin.csv、ashd+chf.csv、ashd+isc.csv、chf+isc.csv、ashd+chf+isc.csv、esrd.csv、chf+fin.csv、dead.csv。 adj_Initial_value.csv 的讀取是註解。 |
| 4 · 第 21 格 | 逐人模擬,結果留在記憶體 | ans.append(sim(x)) 後由 result2 = DataFrame(ans, columns = ...) 建立 17 欄表。此格結尾是賦值。 |
| 5 · 第 23 格(新增) | 寫出逐人病程與年度併發症 | result2.to_csv("des_patient_paths.csv", ...) → annual_complications.to_csv("annual_complication_counts.csv", ...)。末行 annual_complications.head(len(STATES)) 預覽第 1 年。 |
| 下游 · 第 31–35 格 | 路徑和時間與既有成本表合併 | tmpcost = cost10w、df_cost = pd.concat(...)、df_cost.to_csv('cost for 10w.csv')。所需的 cost10w 來源無法從附件確認。 |
| 下游 · 第 40 格 | 分併發症寫出逐年路徑統計 | open('count_by_yearL1+L2/'+name+'.csv', 'w+', ...)、write.writerows(pathway_count_by_year12[i])。檔名的 name 取自 name_com[i+1],列表來源所在區段受損。 |
畫面輸出位置:
- 第 14 格末行
u+b*np.log(-np.log(random.uniform(0,1)))顯示一次抽樣結果。 - 第 25 格(Raw)保存舊結果顯示區和一段疑似另存逐人結果的受損片段。原附件有對應的舊表格輸出,第 21 格的主程式只建立
result2。在 Jupyter 新增一格輸入result2即可顯示。 - 第 26–29 格(Raw)可辨識到
value_counts()、按年及病程分組統計、成本與 QALY 參數草稿。部分匯出及路徑字串受損,確切檔名與順序待原檔核對。 - 第 30 格末行
cost_or_Qaly(result3,'mean',cost)有保留的舊畫面表。重新執行需上游資料和函式。
B · Markov 群體模擬
| 順序與位置 | 輸入或輸出 | 檔名與程式位置 |
|---|---|---|
| 1 · 第 11 格 | 讀取風險迴歸係數(Big5) | ashd_para.csv → chf_para.csv → isc_para.csv → fesrd_para.csv → eye_para.csv → fin_para.csv → ashd+chf_para.csv → ashd+isc_para.csv → chf+isc_para.csv → ashd+chf+isc_para.csv → esrd_para.csv → chf+fin_para.csv → dead_para.csv。 |
| 2 · 第 12 格 | 讀取兩層疾病及死亡分布參數(Big5) | layer1_weibull(M).csv → layer2_weibull(M).csv → layer2_gumbel(M).csv。 |
| 3 · 第 17–19 格 | 設定基線與月週期,再取多次結果的平均 | 基線在第 17 格以變數設定。第 18 格是主迴圈的受損 Raw 片段,第 19 格建立記憶體內的 final_num、final_L1。 |
| 4 · 第 24 格 | 擷取第 60 月 | year5_risk、year5_risk2 留在記憶體。year5_risk.csv 和 year5_risk2.csv 的 to_csv 均為註解。 |
| 5 · 第 25、28 格 | 建立並寫出五年模擬與觀察值比較 | 第 25 格建立含 sim 和 real 的 pred,引用附件中來源未明的 per2010、per2015、percent。第 28 格 pred.to_csv('pred5y.csv') 寫檔。 |
畫面輸出位置:
- 第 20–21 格先以
final_L1['ashd'][12*i:12*(i+1)].sum()計算每年第一層 ASHD 流入量,再用末行ch顯示六年結果。 - 第 26 格末行
pred顯示五年比較表。第 27 格末行pred['sim']-pred['real']顯示差值。這兩格沒有存檔。
C · 非 P4P 成本及效用
下表列出 Windows 絕對路徑的檔名部分。成本階段的三個讀入檔與效用階段的逐人輸入在原碼指向 C:\Users\MIS\Desktop\DM\Test\,效用參數指向 C:\Users\MIS\Desktop\DM\P4P\。相對路徑輸出位於 Jupyter 的目前工作目錄。
| 順序與位置 | 輸入或輸出 | 檔名與程式位置 |
|---|---|---|
| 1 · 第 3 格 | 讀取病程與 Gamma 成本參數 | nontest0627.csv → nonp4pshape.csv → nonp4pscale.csv。sample 至少需要 D1、D2、time1–time3、age。 |
| 2 · 第 13 格 | 寫出成本 | df.to_csv('nonDM-P4P.0627_out.csv')。原病程欄加上 cost1–cost3,保留 age <= 110。末行 df 也顯示在畫面。 |
| 3 · 第 15、17 格 | 讀取效用計算所需資料 | 先讀 DM-nonP4P.0627_out.csv,再讀 utility-new.csv。效用讀入名和第 13 格輸出名不同。要在原 Notebook 接續本次成本輸出,需讓第 15 格指向實際輸出,或將該檔複製到程式指定的路徑與名稱。 |
| 4 · 第 23 格 | 寫出效用 | df.to_csv('nonP4P-0630_out.csv')。逐人資料加上 utility 欄,末行 df 也顯示在畫面。 |
| 只在畫面出現的中間量 | 程式位置與搜尋字串 |
|---|---|
| 成本的參數表與逐人輸入預覽 | 第 3、4、5 格末行 shape、scale、sample。 |
| 三段成本抽樣與折現因子 | 第 7–9 格 print(cost0)、print(cost1)、print(cost2)。第 10–11 格 print(result1)、print(result2)。第 12 格末行 cost0。最終成本欄另寫入第 13 格的 CSV。 |
| 效用輸入及權重預覽 | 第 15、17 格末行 sample、df。 |
| 三段折現效用與合計預覽 | 第 19–21 格 print(utility0)、print(utility1)、print(utility2)。第 22 格末行 utility。最終合計效用另寫入第 23 格的 CSV。 |
資料流程為 DES 或既有逐人 CSV → 年度併發症統計,逐人 CSV 亦可接至非 P4P 成本 → 效用。Markov 的結果是月度群體人數及五年比較,逐人後處理需要 D0–D3 和各段時間。附件未附 CSV,無法確認 nontest0627.csv 的來源。