Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Trường Đại Học Bách Khoa
BÁO CÁO LUẬN VĂN THẠC SĨ
DỰ BÁO CHUỖI THỜI GIAN TRONG
HỆ THỐNG THÔNG TIN BỆNH VIỆN
GVHD: PGS.TS DƯƠNG TUẤN ANH
QUÁ TRÌNH THỰC NGHIỆM
Tập dữ liệu Phòng khám đa khoa
Kỹ thuật làm trơn
Mô hình ARIMA
Mô hình SARIMA
QUÁ TRÌNH THỰC NGHIỆM
Tập dữ liệu Phòng khám đa khoa
Kỹ thuật làm trơn
Mô hình ARIMA
Mô hình SARIMA
KỸ THUẬT LÀM TRƠN
Xác định các phương pháp của kỹ thuật làm trơn mũ đối với tập dữ liệu.
Áp dụng các phương pháp đã lựa chọn vào tập dữ liệu.
So sánh kết quả giữa giá trị làm trơn và giá trị thực tế.
Đánh giá kết quả dự báo.
Xác định các phương pháp của kỹ thuật làm trơn mũ
Biểu đồ dữ liệu doanh thu phòng khám đã được làm trơn bằng phương pháp trung bình di
động
> smPK <- SMA(seriesPK1,n=5)
> plot(smPK,type="l", main='Biểu đồ dữ liệu PKDK sau khi làm trơn')
1400
1200
Dữ liệu có xu hướng nên sử dụng: Kỹ thuật làm trơn mũ Holt và Kỹ thuật làm trơn mũ Winters
600
800
1000
smPK
1600
1800 2000
Bieu do du lieu PKDK sau khi lam tron
2009.0
2009.5
2010.0
2010.5
Time
2011.0
2011.5
KỸ THUẬT LÀM TRƠN MŨ HOLT
> #Mô hình kỹ thuật làm trơn mũ Holt
> modelHoltPK1 <- HoltWinters(seriesPK1,
gamma = F); modelHoltPK1
Warning message:
In HoltWinters(seriesPK1, gamma = F) :
optimization difficulties: ERROR: ABNORMAL_TERMINATION_IN_LNSRCH
Holt-Winters exponential smoothing with trend and without seasonal component.
Call:
HoltWinters(x = seriesPK1, gamma = F)
Smoothing parameters:
alpha:
0.6670203
beta :
0.04979754
gamma:
FALSE
Coefficients:
[,1]
a 1959.98979
b
56.03317
GIÁ TRỊ THỰC TẾ VÀ GIÁ TRỊ LÀM TRƠN (Holt)
> #Biểu đồ doanh thu thực tế so với doanh thu dự đoán từ mô hình
> plot(modelHoltPK1,type="l", main='Doanh thu thực tế & Doanh thu theo Mô hình modelHoltPK1')
1500
1000
500
Observed / Fitted
2000
Doanh thu thuc te & Doanh thu theo mo hinh modelHoltPK1
2009.5
2010.0
2010.5
Time
2011.0
2011.5
DỰ BÁO CHUỖI THỜI GIAN (Holt)
> #Tập giá trị dự đoán từ mô hình, với khoảng dự đoán = số lượng dữ liệu để kiểm định valPK.period
> HoltResultPK1=forecast.HoltWinters(modelHoltPK1,h= valPK.period)
> HoltResultPK1$residuals[1:5] #5 giá trị đầu của sai số dự báo
[1]
-8.00000
-37.39811
85.05513 -140.99562 -167.58261
> HoltResultPK1 #Kết quả dự báo từ mô hình
Point Forecast
Lo 80
Hi 80
Lo 95
Hi 95
Dec 2011
2016.023 1743.894 2288.152 1599.838 2432.208
Jan 2012
2072.056 1739.844 2404.269 1563.981 2580.131
Feb 2012
2128.089 1740.529 2515.649 1535.368 2720.811
Mar 2012
2184.122 1743.975 2624.270 1510.974 2857.271
Apr 2012
2240.156 1749.125 2731.186 1489.189 2991.122
May 2012
2296.189 1755.348 2837.030 1469.044 3123.333
Jun 2012
2352.222 1762.233 2942.211 1449.912 3254.532
> HoltResultPK1$mean[1: valBV.period]
[1] 2016.023 2072.056 2128.089 2184.122 2240.156 2296.189 2352.222
> ForecastHoltPK1=HoltResultPK1$mean
> plot(HoltResultPK1, ylab='Doanh thu', xlab='Time')
DỰ BÁO CHUỖI THỜI GIAN (Holt) (tt)
2000
1500
500
1000
Doanh thu
2500
3000
Forecasts from HoltWinters
2009.0
2009.5
2010.0
2010.5
2011.0
2011.5
2012.0
2012.5
Time
Biểu đồ thể hiện giá trị doanh thu ước lượng từ mô hình, khu vực màu cam là khu vực ước
đoán ở mức 95% và màu vàng là khu vực 80%.
So sánh giá trị dự báo và giá trị thực tế (Holt)
> ymaxPK11 <- Max(futurePK1 , ForecastHoltPK1)
> yminPK11 <- Min(futurePK1 , ForecastHoltPK1)
> plot(futurePK1 , type="l", ylim=c(yminPK11,ymaxPK11), ylab = "Doanh thu")
> par(new=TRUE)
>
plot(ForecastHoltPK1,col=2,
axes=FALSE,
Actual & Fitted")
type="l",
ylab="Doanh
thu",
xlab="Time",
ylim=c(yminPK11,ymaxPK11),
2100
1900
1700
Doanh thu
2300
Actual & Fitted
2011.9
2012.0
2012.1
2012.2
Time
2012.3
2012.4
main="PKDK:
ĐÁNH GIÁ DỮ LIỆU
> #Đánh giá mô hình
> valHoltPK1 <- criteriaForecast(futurePK1, ForecastHoltPK1)
> valHoltPK1
MAE
MSE
RMSE
1.698302e+02
5.013489e+04
2.239082e+02
MAPE
MPE
8.755515e-02 -4.873609e-02
KỸ THUẬT LÀM TRƠN MŨ WINTERS
> #Mô hình kỹ thuật làm trơn mũ Holt-Winters
> modelHoltPK2 <- HoltWinters(seriesPK1); modelHoltPK2
Holt-Winters exponential smoothing with trend and additive seasonal component.
Call:
HoltWinters(x = seriesPK1)
Smoothing parameters:
alpha:
0.02614712
beta :
1
gamma:
1
GIÁ TRỊ THỰC TẾ VÀ GIÁ TRỊ LÀM TRƠN (Winters)
> #Biểu đồ doanh thu thực tế so với doanh thu dự đoán từ mô hình
> plot(modelHoltPK2,type="l", main='Doanh thu thuc te & Doanh thu theo Mô hình modelHoltPK2')
1500
1000
500
Observed / Fitted
2000
Doanh thu thuc te & Doanh thu theo mo hinh modelHoltPK3
2010.0
2010.5
2011.0
Time
2011.5
DỰ BÁO CHUỖI THỜI GIAN (Winters)
> #Tập giá trị dự đoán từ mô hình, với khoảng dự đoán = số lượng dữ liệu để kiểm định valPK.period
> HoltResultPK2=forecast.HoltWinters(modelHoltPK2, h=valPK.period)
> HoltResultPK2$residuals[1:5]
[1]
90.45887
95.68031 101.13847 101.26776
84.91248
> HoltResultPK2
Point Forecast
Lo 80
Hi 80
Lo 95
Hi 95
Dec 2011
1969.477 1778.077 2160.878 1676.756 2262.199
Jan 2012
1954.245 1762.583 2145.906 1661.123 2247.366
Feb 2012
1575.738 1383.489 1767.986 1281.718 1869.757
Mar 2012
2116.963 1923.675 2310.251 1821.354 2412.572
Apr 2012
2233.819 2038.917 2428.720 1935.743 2531.894
May 2012
2125.545 1928.344 2322.745 1823.952 2427.137
Jun 2012
2260.497 2060.209 2460.785 1954.183 2566.812
> HoltResultPK2$mean[1: valBV.period]
[1] 1969.477 1954.245 1575.738 2116.963 2233.819 2125.545 2260.497
> ForecastHoltPK2 = HoltResultPK2$mean
> plot(HoltResultPK2, ylab='Doanh thu', xlab='Time')
DỰ BÁO CHUỖI THỜI GIAN (Winters) (tt)
2000
1500
500
1000
Doanh thu
2500
3000
Forecasts from HoltWinters
2009.0
2009.5
2010.0
2010.5
2011.0
2011.5
2012.0
2012.5
Time
Biểu đồ thể hiện giá trị doanh thu ước lượng từ mô hình, khu vực màu cam là khu vực ước
đoán ở mức 95% và màu vàng là khu vực 80%.
So sánh giá trị dự báo và giá trị thực tế (Winters)
> win.graph(width=7,height=4,pointsize=9)
> ymaxPK21 <- Max(futurePK1 , ForecastHoltPK2)
> yminPK21 <- Min(futurePK1 , ForecastHoltPK2)
> plot(futurePK1 , type="l", ylim=c(yminPK21,ymaxPK21), ylab='Doanh thu')
> par(new=TRUE)
> plot(ForecastHoltPK2,col=2, axes=FALSE, type="l", ylab="Doanh thu",
xlab="Time", ylim=c(yminPK21,ymaxPK21), main="PKDK:
Actual & Fitted")
2100
1900
1700
Doanh thu
2300
Actual & Fitted
2011.9
2012.0
2012.1
2012.2
Time
2012.3
2012.4
ĐÁNH GIÁ DỮ LIỆU (Winters)
> valHoltPK2 <- criteriaForecast(futurePK1, ForecastHoltPK2)
> valHoltPK2
MAE
MSE
RMSE
MAPE
MPE
1.735483e+02 5.283631e+04 2.298615e+02 8.799934e-02 2.701944e-02
Đánh giá phương pháp của kỹ thuật làm trơn mũ - PKĐK
> #So sánh kết quả các chỉ tiêu so sánh đánh giá mô hình
> rbind(modelHoltPK1 = valHoltPK1, modelHoltPK2 = valHoltPK2)
MAE
MSE
RMSE
MAPE
MPE
modelHoltPK1 169.8302 50134.89 223.9082 0.08755515 -0.04873609
modelHoltPK2 173.5483 52836.31 229.8615 0.08799934
0.02701944
Hay:
Phương pháp
MAE
MSE
RMSE
MAPE
MPE
Dữ liệu Phòng khám đa khoa
Holt
Winters
169.8302
50,134.89
223.9082
0.08755515
-0.04873609
173.5483
52,836.31
229.8615
0.08799934
0.02701944
QUÁ TRÌNH THỰC NGHIỆM
Tập dữ liệu Phòng khám đa khoa
Kỹ thuật làm trơn
Mô hình ARIMA
Mô hình SARIMA
MÔ HÌNH ARIMA – PHÒNG KHÁM ĐA KHOA
Quá trình thực nghiệm của phương pháp này
Kiểm tra tính dừng của chuỗi dữ liệu
Xác định các hệ số p, d, q
Thực hiện các mô hình đề xuất
Lựa chọn mô hình
Dự báo chuỗi thời gian từ các mô hình đề xuất
So sánh kết quả giữa giá trị dự báo từ mô hình và giá trị thực tế.
Đánh giá kết quả dự báo.
KIỂM TRA TÍNH DỪNG
> win.graph(width=6,height=4,pointsize=8)
> plot(seriesPK, type='l', ylab='Doanh thu PKDK')
1500
1000
500
Doanh thu PKDK
2000
> plot(seriesPK1, type='l', ylab='Doanh thu PKDK', xlab='Thời gian')
2009.0
2009.5
2010.0
2010.5
2011.0
2011.5
Thời gian
Biểu đồ thể hiện doanh thu Phòng khám đa khoa từ 01/2009 đến 11/2011 là chuỗi dữ liệu có xu hướng và tính mùa
KIỂM TRA TÍNH DỪNG (tt)
Biểu đồ tương quanACF
> #Vẽ biểu đồ tương quan ACF
Series seriesPK
0.2
-0.2
0.0
AC F
0.4
0.6
0.8
> acf(seriesPK)
2
4
6
8
10
12
14
Lag
Kết luận
Dựa vào biểu đồ thể hiện doanh thu và biểu đồ tự tương quan thì ta có thể kết luận tập dữ liệu doanh thu PKDK mẫu là chuỗi không dừng
Xác định các hệ số p, d, q
Loại bỏ yếu tố xu hướng và mùa vụ
Sử dụng phương pháp lấy sai phân bậc 1 cho tập dữ liệu
> #Dữ liệu PKDK mẫu sau khi Sai phân bậc 1
> seriesPK.diff = diff(seriesPK)
Kết quả cho thấy dữ liệu sau khi lấy sai phân bậc 1 vẫn chưa đạt là chuỗi dừng.
Biểu đồ dữ liệu doanh thu bệnh viện sau khi lấy sai phân bậc 2
> #Sai phân bậc 2
> seriesPK.diff2 = diff(diff(seriesPK))
> plot(seriesPK.diff2, type='l', main='Dữ liệu PKDK sau khi lấy sai phân bậc 2')
0
-500
seriesPK.diff2
500
Xác định các hệDữsốliệup,PKDK
d, sau
q (tt)
khi lấy sai phân bậc 2
0
5
10
15
20
25
Index
Hình 5.22 Biểu đồ dữ liệu doanh thu PKDK mẫu sau khi lấy sai phân bậc 2
Dữ liệu sau khi lấy sai phân bậc 2 đã đạt là chuỗi dừng, vì vậy d=2
30
Xác định các hệ số p, d, q (tt)
Biểu đồ tương quan ACF và tương quan riêng phần PACF của dữ liệu PKDK mẫu sau khi lấy sai
phân bậc 2
> op <- par(mfrow = c(2,1), mar = c(5,4,1,2)+.1, oma = c(0,0,2,0))
> acf(seriesPK.diff2)
> pacf(seriesPK.diff2)
0.5
0.0
-0.5
ACF
1.0
Series seriesPK.diff2
0
5
10
15
Lag
Series seriesPK.diff2
d=2
q=3
-0.2
0.2
p=3
-0.6
Partial ACF
2
4
6
8
Lag
10
12
14