應該從微觀的個體層級資料開始分析。
執行程式碼:import pandas as pd df_info = pd.read_csv('accomodation_info.csv', index_col=0, parse_dates=[0])
使用 NumPy 和 Pandas 進行病患 ID 的出現次數計算,並根據住院天數的閾值篩選病患,最後將結果轉換為資料框架格式。
可以將資料畫成直方圖,使用 Python 函式庫 matplotlib 的 hist 函數來繪製。
因為主要病患雖然數量少,但就診頻率非常高,對於醫療決策有重要影響。
顯示 df_info_pre 的內容,並檢查 df_info_pre 與 df_info_post 的元素總數是否與 df_info 一致。
weight 代表擬合曲線時的權重,值越大表示擬合時的權重越強。
hist函數的參數共有三個,分別是篩選病人ID的頻率、區段數(21),以及指定圖表顏色(k代表黑色)。
在參數設定的部分,將變數 threshold_post 設定為 50。
繪製直方圖後輸出的 x_hist 與 t_hist。
每個值顯示了病患 ID 與其排名。
了解分佈情況有助於在拿到資料後,判斷資料屬於哪種分佈,從宏觀的角度觀察整體資料。
使用 pandas 的 value_counts 函數計算病人 ID 的出現頻率,然後利用 mean、median、min 和 max 函數輸出相應的統計值。
分析病患行為的變化是非常重要的工作。
疫情爆發後,他們的就診次數不減反增。
我們將範圍縮小至就診頻率較高的主要病患,並以2020年3月1日作為疫情爆發前後的分界點,視覺化每位主要病患的累積就診次數。
因為當 x_hist 的值為 0 時,取 log 會導致無限大的負數出現,因此需要設定 epsiron 來避免這種情況。
它代表將最大值與最小值之間的數值切割成21個區段。
使用 value_counts() 方法來計算預先和疫情後的病患 ID 出現次數。
應觀察所有數據的分佈情況。
社交媒體上的朋友數量呈現冪次定律分佈,與社會網路有顯著的相關性。
住院人數曾一度下降,但隨著新的治療方案及病患回診提醒系統的引進,病患人數有逐漸回升的趨勢。
透過統計方法,將所有病患的住院次數相加後除以病患總數可得平均值;將住院次數排序後找出中間值可得中位數;最小值為最少住院次數,最大值為最多住院次數。
使用 plt.plot() 繪製各科別的病患數量隨時間變化的圖表。
存入變數 list_id 、 list_name 、 list_date_pre 和 list_date_post。
觀察整體的就醫分佈後,發現法則存在,掌握醫療資源的使用趨勢,便能進一步預測未來的需求。
病患入院時間、病患姓名、對應病患的 ID、病患掛號科別(A至D四種)、自費住院的費用。
參數設定為 epsiron = 1 和 num = 15。
觀察疫情爆發前後的病患住院情況變化。
冪次定律分佈通常出現在病患累積的就醫次數或醫療費用上,少數病患會占據多數資源。
時間與分佈情況
value_counts 函數用於計算資料中每個病人 ID 的出現頻率。
使用程式碼 print(df_info[df_info['科別']=='A']) 來篩選科別 A 的資料。
同樣使用 matplotlib 繪製圖表,透過迴圈選取第 11 到 20 名病人 ID,並使用 resample('M').count() 進行每月統計。
橫軸代表頻率(使用次數),縱軸代表採樣數(使用者人數)。
log p ( x ) = ax + b
使用了最小平方法來算出參數。
B科別所收治的病人相當多。
可以將顯示病患 ID 與排名的程式碼設定為註解,以得到較易觀察的結果。
使用以下程式碼:import matplotlib.pyplot as plt; plt.plot(df_info.resample('M').count(), color='k'); plt.xticks(rotation=60); plt.show()
使用 print 函數輸出平均值、中位數、最小值與最大值。
使用 matplotlib 繪製每位病人的每月使用頻率圖,透過迴圈選取前 10 名病人 ID,並使用 resample('M').count() 進行每月統計。
可以觀察到病患在疫情前後的就診行為模式的變化。
首先需將資料分為疫情爆發前後兩部分,並分別計算這兩部分的累積就診次數。
擬合區間使用 num 來指定,而不是使用整體的資料範圍。
使用散點圖,將疫情爆發前後的病患住院天數進行比較,並根據條件標記顏色。
最小值和最大值是點狀資料,並非整體資料,僅能作為推測的結果。
通常情況下,資料必須先經過一些前置處理才能分析。
使用以下程式碼:import matplotlib.pyplot as plt; plt.plot(df_info['金額'].resample('M').sum(), color='k'); plt.xticks(rotation=60); plt.show()
使用 matplotlib 函式庫。
使用程式碼 x_a = df_a['病人 ID'].value_counts() 及 plt.hist(x_a, 21, color='k') 繪製直方圖。
當樣本數(病患人數)集中在0附近,隨後逐漸銳減的分佈情況稱為冪次定律分佈。
平均值約 13 次,但中位數卻是 7 次,顯示出數據分佈的不均勻性,需謹慎看待。
可以列出符合條件的病患,並進行進一步的醫療方案制定。
病患人數減少,費用也有所調降。
使用 plt.plot() 函數將擬合曲線繪製在直方圖上。
疫情爆發導致業績與使用者人數(住院者)都銳減。
載入資料。
你已經拿到這幾年來的門診住院資料,可以根據這些資料開始分析。
使用 df_info.reset_index() 方法來重設索引值,使其變成一個欄位名稱。
雖然有部分時期的就診次數突然上升,但疫情前後的數據整體表現疲弱。
p ( x ) = Ae ( a < ax 0)
第一步是算出近似曲線的參數。
在均勻分佈下,平均值與中位數有很高的機率一致。
使用 value_counts() 方法來計算病患 ID 的出現次數。
可以使用函數 resample 將參數指定為 M,代表以「月」為彙整單位,然後使用 sum 函數輸出總和,count 函數輸出頻率。
這間醫院位於○北市,擁有300張病床。
使用 value_counts 函數取得病患 ID 的 index,然後依序取得第 1 名至第 10 名的資料,並依照時間順序整理這些資料以便比較。
使用條件 df_info[df_info['日期'] < target_date] 來篩選疫情爆發前的資料,使用 df_info[df_info['日期'] >= target_date] 來篩選疫情爆發後的資料。
需要將 t_hist 轉換為各區間的中點,然後使用 numpy 的 polyfit 函數,將 t 作為輸入 x,log(x_hist) 作為輸入 y,並設定 weight 為 x_hist。
執行 pd.to_csv('檔案名稱') 函數即可。
應考慮多關注就診頻率較高的病患,這可能比吸引新病患更有效。
資料幾乎都集中在左端,大部分的使用者只使用過一次或很少的次數。
橫軸代表疫情爆發前的住院次數,縱軸代表疫情爆發後的住院次數。
常態分佈是自然界中最常見的分佈之一,資料通常會集中在平均值附近,例如小學一年級學生的身高與體重。
統計分析的第一步是進行統計分佈的可視化與分析。
import matplotlib.pyplot as plt x = df_info['病人 ID'].value_counts() x_hist, t_hist, _ = plt.hist(x, 21, color='k') plt.show()
透過 value_counts 函數來取得病患 ID 的 index,然後篩選出相應的資料。
少數病患佔據較多的就醫次數的分佈,稱為柏拉圖法則或8020法則,即八成業績由兩成顧客創造的法則。
透過計算病患 ID 的出現次數,並根據住院天數是否超過 50 天來標記病患,超過的用紅色標記。
將公式簡化為二項式後,利用最小平方法讓曲線逼近直線。
如果使用次數較少的人數偏多,平均值與中位數會產生差距。
多數主要病患在疫情爆發前後的就診行為模式沒有顯著變化,但部分病患的行為模式發生了明顯的變化。
我們發現病患的就診行為在疫情爆發前後出現了明顯變化,不同科別的病患具有不同的行為模式,這些行為模式各有其特徵。
計算分佈的近似曲線需要推導出描述資料分佈的公式,然後通過算出近似曲線的參數和依照該參數繪製曲線兩個步驟來完成。
平均值是所有使用次數總和除以使用者人數總和;中位數是由大至小排列使用次數時,落在正中央的使用次數。
將利用機器學習的方法進一步分析這些資料。
因為很多使用者的使用次數集中在0的附近,只有少數使用次數非常高的使用者。
均勻分佈是指各種情況出現的機率相等,例如擲骰子的點數或輪盤的數字出現機率。