肖德才 符湘云 胡 荍 熊曉紅 余元華 來瑞平 謝多雙
住院量是衡量醫(yī)院業(yè)務狀況的重要指標,在醫(yī)院統計工作及醫(yī)院管理工作中至關重要,對其準確地預測可以為編制計劃和檢查計劃提供可靠的依據?;疑到yGM(1,1)模型是將原始數據經過一次累加,變?yōu)檩^規(guī)律的數據后,再建立模型方程,對未來發(fā)展趨勢進行預測。它不受一般統計模型對原始數據的種種限值,考慮影響因素少,具有較強的實用性。
1.資料來源 資料來源于某三甲醫(yī)院的《醫(yī)院統計年報》,住院量以一年內辦理出院結算人次為準。
2.計算方法
(1)灰色預測模型的計算方案
①讀入原始序列xt,生成一階累加序列yt;
②調用ILM模塊,計算矩陣參數a、u;
③根據矩陣參數計算預測值、絕對誤差和相對誤差;
④進行擬合精度評價,包括后驗差檢驗和小概率誤差檢驗;
⑤定義數組,對未來年份進行預測;
⑥繪制圖形直觀顯示實測值和預測值及其趨勢;
⑦輸出預測結果。
(2)預測模型的擬合精度評價模型擬合精度高,方可用于外推預測?;疑A測模型GM(1,1)的擬合精度檢驗指標主要有后驗差比值C和小誤差概率P。按后驗差比值C和小誤差概率P綜合評定模型擬合精度的標準見表1。
(3)根據上述步驟編制SAS程序,對1997年至2010年住院量進行擬合和預測。詳細的SAS過程如附錄:
表1 后驗差比值C和小誤差概率P綜合評定擬合精度標準〔1〕
1.運行上述SAS程序輸出結果(表2)
表2 歷年預測及誤差
2.模型擬合精度檢驗 1997~2010年該院住院量的預測值和實測值平均相對誤差為4.11%。SAS結果顯示,后驗差C=0.11777,小概率誤差P=1。根據表1擬合精度判斷標準,可以認為該模型擬合精度為優(yōu),擬合效果非常理想,可以用于外推預測。
4.灰色模型外推,預測結果(表3)
表3 醫(yī)院未來三年住院量
灰色預測是應用最為廣泛一種統計預測模型。它與一般統計模型相比,最大的優(yōu)點是對樣本量和概率分布沒有嚴格的要求,且預測效果較好〔2〕?;疑P鸵笥休^多的矩陣計算,使其應用受到一定的限制。如果用手工計算或分步計算,不僅復雜麻煩容易出錯,而且中間的結果保留精度也會給預測結果帶來一定誤差。SAS的IML模塊具有強大的矩陣計算功能,可以通過編程實現。同時SAS的IML模塊直接提供矩陣和SAS數據集間的相互轉換,可以避免保留精度不同對結果的影響,使用非常簡單〔3〕。
住院量的高低在很大程度上反映出醫(yī)院的規(guī)模、醫(yī)療質量、技術水平、管理水平以及病人對醫(yī)院的認同度等。近年來,醫(yī)院逐步落實精益管理,不斷促進醫(yī)院內涵建設,突出醫(yī)療特色,著力打造區(qū)域性醫(yī)療中心,現已取得明顯成效。醫(yī)院規(guī)模不斷擴大,住院量不斷攀升。
文中SAS程序參考文獻〔3〕,〔4〕并進行改進,增加小誤差概率檢驗等,預測未來未來三年住院量取得良好效果。
1.郭海強,曲波,丁海龍,等.灰色系統GM(1,1)模型在我國梅毒發(fā)病預測研究中的應用.實用預防醫(yī)學,2010,17(12):2398.
2.鄧聚龍.灰色預測與決策.第2版.武漢:華中理工大學出版社,1998,125.
3.顏杰,相麗馳,方積乾.灰色模型及SAS實現.中國衛(wèi)生統計,2006,23(1):75,80.
4.孔超,劉元鳳,沈續(xù)雷.灰色預測模型的SAS程序改進.中國衛(wèi)生統
計,2008,25(6):640-641.
附錄:
data a1;/* 建立原始數據集a1*/
input t year xt@@;/* 讀入原始數據序*/
yt+xt;/* 生成一階累加序列*/
index=1;zt=-(yt+lag(yt))/2;/* 為數據矩陣b準備數據*/
jbi=lag(xt)/xt;/*為光滑性檢驗準備數據*/
datalines;
1 1997 19452 2 1998 23018 3 1999 23780 4 2000 23559 5 2001 27847 6 2002 31490 7 2003 31357 8 2004 34239
9 2005 37851 10 2006 42827 11 2007 50595 12 2008 55569
13 2009 60783 14 2010 70154
;
proc iml;use a1;/* 調用ILM模塊,計算矩陣參數*/
read all var{zt index}into b where(zt^=.);/* 將 a1中變量zt和index值(不含第讀入矩陣b*/
read all var{xt}into yn where(zt^=.);/* 將a1中變量xt矩陣yn*/
ahat=inv(b`* b)* b`*yn;/* 計算參數矩陣^a=〔a,u〕t=〔btb〕-1btyn*/
ahatt=ahat`;na={a u};/* 將參數矩陣轉置*/
create a2 from ahatt〔colname=na〕;/*用轉置后的參數矩陣數據建立sas數據集a2*/
append from ahatt;/* 將數據讀入到數據集*/
quit;/* 退出iml模塊*/
data a3;set a2;index=1;run;/*為預測做準備*/
data a4;set a1;if_n_=1;xt0=xt;keep xt0 index;run;
data a5;merge a1 a3 a4;by index;
if_n_=1 then xp=xt;
else do yt1=(xt0-u/a)*exp(-a*(t-1))+u/a;
yt0=(xt0-u/a)*exp(-a*(t-2))+u/a;
xp=yt1-yt0;/*計算預測值*/
end;
error=xp-xt;rerror=error/xt*100;n+abs(error);m+xt;are=n/m*100;
keep index t year xt xp error rerror are;
title'預測值與實測值對比';
proc print data=a5;run;/* 輸出預測值與實測值對比,其中are為平均相對誤差*/
proc means data=a5 std mean noprint;
var xt error;
output out=a5_2 std=s1 s2 mean=x_e_;
data a5_3;set a5_2;c=s2/s1;
if 0.65<c then jdu='不合格 ';
else if 0.5 <c< =0.65 then jdu='基本合格 ';
else if 0.35 <c<0.5 then jdu='合格 ';
else jdu='優(yōu)';
keep c jdu;
title'后驗差檢驗';
proc print data=a5_3;run;/*輸出后驗差檢驗結果*/
data a5_4;set a5_2;index=1;run;
data a5_5;merge a5 a5_4;by index;run;
data a5_5;do t=1 to 14;/*循環(huán)計算14年內出現小概率*/
if abs(error-e_)/s1 <0.6475 then px+1;end;p=px/14;keep p;
title'小誤差概率P';
proc print data=a5_5;run;/*輸出小誤差概率P*/
data a6;input t year@@;/*讀入預測年份*/
cards;
15 2011 16 2012 17 2013
;
data a7;merge a3 a4;
array t(5)(13 14 15 16 17);/*定義一個數組(預測年份序號)來實現循環(huán)計算*/
do i=3 to 5;
yt1=(xt0-u/a)*exp(-a*t(i-1))+u/a;
yt0=(xt0-u/a)*exp(-a*t(i-2))+u/a;
xp=yt1-yt0;output;
end;
drop t1 t2 t3 t4 t5 t6 a u b xt0 i yt1 yt0 index;
data a8;merge a6 a7;run;
data a9;set a5 a8;drop error rerror;run;proc gplot data=a9;
plot xp*year=1 xt*year=2/overlay;
symbol1 v=star i=join c=red;
symbol2 v=circle i=join c=blue;
title'Forecast and the actual contrast';
run;
proc print data=a8;/*顯示預測值*/
title'預測結果';run;