Kelompok 13

2023-06-10

Pemodelan Prediktif Angka Haraan Hidup Pasien BPJS Penderita Diabetes Mellitus Menggunakan Extreme Gradient Boosting (XGBoost)

Anggota:

  1. Muhammad Nachnoer Novatron Fitra Arss (G1401201014)
  2. Arsyfia Chairunnisa Azmy (G1401201071)
  3. Akmal Riza Wibisono (G1401201086)
  4. Steven Kurniawan (G1401201098)

Call Package

lapply(c("randomForest","xgboost","caret","vip","haven","readxl","ggplot2",
         "dplyr","lightgbm","h2o","cvms","e1071","caTools","FactoMineR",
         "factoextra","hrbrthemes","geojsonio","broom","RColorBrewer","kableExtra"),
       library,character.only=T)[[1]]
## [1] "randomForest" "stats"        "graphics"     "grDevices"    "utils"       
## [6] "datasets"     "methods"      "base"

Data Kepesertaan BPJS [Kontekstual DM]

# na.omit menghilangkan seluruh peserta yang masih hidup
pes19<-na.omit(read_dta("D:/Users/Documents/DC/Data Sampel Final 2022/Kontekstual DM/DM2019_kepesertaan.dta"))
pes20<-na.omit(read_dta("D:/Users/Documents/DC/Data Sampel Final 2022/Kontekstual DM/DM2020_kepesertaan.dta"))
pes21<-na.omit(read_dta("D:/Users/Documents/DC/Data Sampel Final 2022/Kontekstual DM/DM2021_kepesertaan.dta"))

Data Gabungan 2019-2021

pes<-rbind(pes19,pes20,pes21);kable(head(pes,10))
PSTV01 PSTV02 PSTV03 PSTV04 PSTV05 PSTV06 PSTV07 PSTV08 PSTV09 PSTV10 PSTV11 PSTV12 PSTV13 PSTV14 PSTV15 PSTV16 PSTV17 PSTV18
88501975 88501975 1959-10-02 1 2 2 1 5 12 1208 3 1 12 1208 10.726228 2020 2 2019
92334880 92334880 1953-07-23 1 1 2 1 5 74 7402 9 3 74 7402 4.542144 2020 1 2020
30067147 30067147 1960-12-31 1 1 2 1 5 53 5315 3 1 53 5315 4.747645 2020 2 2019
25638855 446829014 1965-07-01 5 2 1 3 2 18 1804 3 1 18 1804 12.601460 2020 2 2019
63661969 78381593 1954-02-09 3 2 2 3 2 33 3326 9 3 33 3326 12.242884 2020 1 2020
26450747 53285517 1970-06-20 3 2 2 2 5 31 3172 3 1 31 3172 12.022769 2020 2 2019
1498708 1498708 1944-12-31 1 2 3 3 2 33 3372 3 1 33 3372 7.395576 2020 2 2019
27673768 27673768 1957-08-16 1 2 3 1 4 31 3171 8 2 31 3174 11.585643 2020 2 2019
54230078 85547689 1945-01-01 3 2 2 1 4 73 7308 9 3 73 7308 4.681800 2020 1 2020
11075653 11075653 1960-06-25 1 1 2 3 4 73 7373 3 1 73 7373 8.971557 2020 1 2020

Praproses Data

Substring Tahun Lahir dari Tanggal Lahir Peserta

pes$lahir<-as.numeric(substring(pes$PSTV03,1,4));head(pes$lahir)
## [1] 1959 1953 1960 1965 1954 1970

Menghitung Usia Peserta

pes$usia<-pes$PSTV18-pes$lahir;head(pes$usia)
## [1] 60 67 59 54 66 49

Menghitung UHH (Jumlah Usia:Jumlah orang meninggal)

ag<-pes%>%group_by(PSTV04,PSTV05,PSTV06,PSTV07,PSTV08,
                   PSTV09,PSTV10,PSTV11,PSTV12,PSTV13,
                   PSTV14)%>%summarise(UHH=round(mean(usia)));kable(head(ag,10))
PSTV04 PSTV05 PSTV06 PSTV07 PSTV08 PSTV09 PSTV10 PSTV11 PSTV12 PSTV13 PSTV14 UHH
1 1 1 1 1 12 1213 8 2 12 1275 58
1 1 1 1 1 31 3171 2 1 31 3171 81
1 1 1 1 1 31 3172 7 2 31 3172 68
1 1 1 1 1 31 3175 3 1 31 3175 64
1 1 1 1 1 32 3273 3 1 32 3273 75
1 1 1 1 1 33 3301 3 1 33 3301 72
1 1 1 1 1 34 3471 3 1 34 3471 68
1 1 1 1 1 35 3521 3 1 35 3521 82
1 1 1 1 1 35 3578 9 2 32 3273 69
1 1 1 1 1 61 6171 3 1 61 6171 68

Partisi Data

set.seed(123);i<-createDataPartition(ag$UHH,p=0.75,list=F)
train<-ag[i,];xgbtr<-xgb.DMatrix(data=data.matrix(train[,-12]),label=train$UHH)
test<-ag[-i,];xgbts<-xgb.DMatrix(data=data.matrix(test[,-12]),label=test$UHH)

Wishing List

wl<-list(train=xgbtr,test=xgbts)

10-Fold Cross Validation

cv<-xgb.cv(data=xgbtr,nrounds=150,max.depth=68,nfold=10,eta=0.03,metric=list("mape"))
## [1]  train-mape:0.961294+0.000012    test-mape:0.961296+0.000187 
## [2]  train-mape:0.931899+0.000019    test-mape:0.931904+0.000329 
## [3]  train-mape:0.903387+0.000021    test-mape:0.903386+0.000470 
## [4]  train-mape:0.875734+0.000026    test-mape:0.875737+0.000605 
## [5]  train-mape:0.848910+0.000029    test-mape:0.848909+0.000739 
## [6]  train-mape:0.822894+0.000027    test-mape:0.822886+0.000869 
## [7]  train-mape:0.797656+0.000030    test-mape:0.797643+0.000996 
## [8]  train-mape:0.773183+0.000031    test-mape:0.773163+0.001119 
## [9]  train-mape:0.749448+0.000033    test-mape:0.749423+0.001240 
## [10] train-mape:0.726436+0.000036    test-mape:0.726403+0.001369 
## [11] train-mape:0.704121+0.000034    test-mape:0.704081+0.001494 
## [12] train-mape:0.682483+0.000031    test-mape:0.682437+0.001619 
## [13] train-mape:0.661502+0.000035    test-mape:0.661464+0.001736 
## [14] train-mape:0.641153+0.000032    test-mape:0.641127+0.001854 
## [15] train-mape:0.621423+0.000040    test-mape:0.621399+0.001961 
## [16] train-mape:0.602296+0.000046    test-mape:0.602275+0.002075 
## [17] train-mape:0.583738+0.000050    test-mape:0.583729+0.002174 
## [18] train-mape:0.565759+0.000053    test-mape:0.565763+0.002253 
## [19] train-mape:0.548339+0.000054    test-mape:0.548349+0.002311 
## [20] train-mape:0.531452+0.000060    test-mape:0.531488+0.002373 
## [21] train-mape:0.515092+0.000066    test-mape:0.515150+0.002401 
## [22] train-mape:0.499236+0.000067    test-mape:0.499306+0.002431 
## [23] train-mape:0.483881+0.000071    test-mape:0.483963+0.002483 
## [24] train-mape:0.468997+0.000076    test-mape:0.469094+0.002523 
## [25] train-mape:0.454601+0.000075    test-mape:0.454717+0.002570 
## [26] train-mape:0.440660+0.000082    test-mape:0.440816+0.002606 
## [27] train-mape:0.427172+0.000082    test-mape:0.427357+0.002635 
## [28] train-mape:0.414104+0.000079    test-mape:0.414315+0.002658 
## [29] train-mape:0.401432+0.000079    test-mape:0.401694+0.002677 
## [30] train-mape:0.389142+0.000070    test-mape:0.389456+0.002700 
## [31] train-mape:0.377249+0.000071    test-mape:0.377607+0.002734 
## [32] train-mape:0.365736+0.000070    test-mape:0.366140+0.002755 
## [33] train-mape:0.354583+0.000075    test-mape:0.355046+0.002800 
## [34] train-mape:0.343789+0.000078    test-mape:0.344305+0.002840 
## [35] train-mape:0.333339+0.000078    test-mape:0.333927+0.002893 
## [36] train-mape:0.323228+0.000074    test-mape:0.323874+0.002963 
## [37] train-mape:0.313461+0.000078    test-mape:0.314190+0.003038 
## [38] train-mape:0.304040+0.000078    test-mape:0.304840+0.003107 
## [39] train-mape:0.294921+0.000080    test-mape:0.295804+0.003193 
## [40] train-mape:0.286106+0.000093    test-mape:0.287075+0.003271 
## [41] train-mape:0.277594+0.000097    test-mape:0.278652+0.003361 
## [42] train-mape:0.269377+0.000102    test-mape:0.270550+0.003450 
## [43] train-mape:0.261463+0.000119    test-mape:0.262747+0.003539 
## [44] train-mape:0.253825+0.000130    test-mape:0.255224+0.003610 
## [45] train-mape:0.246440+0.000145    test-mape:0.248011+0.003689 
## [46] train-mape:0.239318+0.000147    test-mape:0.241050+0.003741 
## [47] train-mape:0.232437+0.000158    test-mape:0.234380+0.003810 
## [48] train-mape:0.225802+0.000158    test-mape:0.227971+0.003854 
## [49] train-mape:0.219406+0.000154    test-mape:0.221816+0.003884 
## [50] train-mape:0.213244+0.000163    test-mape:0.215903+0.003896 
## [51] train-mape:0.207311+0.000163    test-mape:0.210271+0.003897 
## [52] train-mape:0.201572+0.000172    test-mape:0.204855+0.003903 
## [53] train-mape:0.196053+0.000174    test-mape:0.199686+0.003915 
## [54] train-mape:0.190711+0.000173    test-mape:0.194745+0.003902 
## [55] train-mape:0.185573+0.000166    test-mape:0.190046+0.003859 
## [56] train-mape:0.180616+0.000171    test-mape:0.185548+0.003833 
## [57] train-mape:0.175826+0.000150    test-mape:0.181276+0.003773 
## [58] train-mape:0.171212+0.000151    test-mape:0.177193+0.003731 
## [59] train-mape:0.166759+0.000142    test-mape:0.173315+0.003690 
## [60] train-mape:0.162477+0.000127    test-mape:0.169602+0.003670 
## [61] train-mape:0.158333+0.000133    test-mape:0.166096+0.003670 
## [62] train-mape:0.154341+0.000132    test-mape:0.162761+0.003641 
## [63] train-mape:0.150483+0.000113    test-mape:0.159577+0.003616 
## [64] train-mape:0.146746+0.000120    test-mape:0.156551+0.003612 
## [65] train-mape:0.143131+0.000118    test-mape:0.153716+0.003602 
## [66] train-mape:0.139647+0.000130    test-mape:0.150999+0.003625 
## [67] train-mape:0.136261+0.000135    test-mape:0.148436+0.003614 
## [68] train-mape:0.132980+0.000143    test-mape:0.146020+0.003614 
## [69] train-mape:0.129812+0.000146    test-mape:0.143748+0.003658 
## [70] train-mape:0.126734+0.000149    test-mape:0.141582+0.003668 
## [71] train-mape:0.123756+0.000145    test-mape:0.139553+0.003660 
## [72] train-mape:0.120887+0.000156    test-mape:0.137606+0.003668 
## [73] train-mape:0.118097+0.000146    test-mape:0.135803+0.003639 
## [74] train-mape:0.115394+0.000158    test-mape:0.134092+0.003635 
## [75] train-mape:0.112766+0.000148    test-mape:0.132484+0.003608 
## [76] train-mape:0.110205+0.000154    test-mape:0.130965+0.003569 
## [77] train-mape:0.107735+0.000159    test-mape:0.129532+0.003567 
## [78] train-mape:0.105336+0.000153    test-mape:0.128170+0.003567 
## [79] train-mape:0.103009+0.000144    test-mape:0.126912+0.003560 
## [80] train-mape:0.100746+0.000146    test-mape:0.125691+0.003554 
## [81] train-mape:0.098551+0.000151    test-mape:0.124547+0.003528 
## [82] train-mape:0.096413+0.000157    test-mape:0.123487+0.003512 
## [83] train-mape:0.094332+0.000156    test-mape:0.122503+0.003506 
## [84] train-mape:0.092308+0.000150    test-mape:0.121586+0.003488 
## [85] train-mape:0.090341+0.000150    test-mape:0.120725+0.003440 
## [86] train-mape:0.088427+0.000159    test-mape:0.119951+0.003423 
## [87] train-mape:0.086564+0.000164    test-mape:0.119201+0.003390 
## [88] train-mape:0.084754+0.000171    test-mape:0.118497+0.003370 
## [89] train-mape:0.082993+0.000173    test-mape:0.117854+0.003368 
## [90] train-mape:0.081278+0.000178    test-mape:0.117259+0.003362 
## [91] train-mape:0.079605+0.000189    test-mape:0.116724+0.003368 
## [92] train-mape:0.077976+0.000190    test-mape:0.116212+0.003366 
## [93] train-mape:0.076387+0.000186    test-mape:0.115741+0.003356 
## [94] train-mape:0.074841+0.000198    test-mape:0.115297+0.003351 
## [95] train-mape:0.073331+0.000204    test-mape:0.114875+0.003348 
## [96] train-mape:0.071852+0.000205    test-mape:0.114501+0.003338 
## [97] train-mape:0.070411+0.000211    test-mape:0.114149+0.003320 
## [98] train-mape:0.069007+0.000208    test-mape:0.113833+0.003328 
## [99] train-mape:0.067642+0.000221    test-mape:0.113526+0.003333 
## [100]    train-mape:0.066303+0.000223    test-mape:0.113253+0.003343 
## [101]    train-mape:0.064997+0.000227    test-mape:0.113018+0.003354 
## [102]    train-mape:0.063729+0.000234    test-mape:0.112793+0.003336 
## [103]    train-mape:0.062484+0.000237    test-mape:0.112595+0.003330 
## [104]    train-mape:0.061277+0.000233    test-mape:0.112411+0.003318 
## [105]    train-mape:0.060095+0.000230    test-mape:0.112261+0.003303 
## [106]    train-mape:0.058936+0.000228    test-mape:0.112109+0.003291 
## [107]    train-mape:0.057803+0.000228    test-mape:0.111981+0.003277 
## [108]    train-mape:0.056692+0.000223    test-mape:0.111860+0.003281 
## [109]    train-mape:0.055603+0.000227    test-mape:0.111755+0.003275 
## [110]    train-mape:0.054538+0.000224    test-mape:0.111675+0.003297 
## [111]    train-mape:0.053499+0.000220    test-mape:0.111600+0.003312 
## [112]    train-mape:0.052484+0.000220    test-mape:0.111540+0.003323 
## [113]    train-mape:0.051494+0.000217    test-mape:0.111499+0.003340 
## [114]    train-mape:0.050525+0.000215    test-mape:0.111477+0.003343 
## [115]    train-mape:0.049575+0.000214    test-mape:0.111454+0.003344 
## [116]    train-mape:0.048648+0.000213    test-mape:0.111437+0.003349 
## [117]    train-mape:0.047738+0.000213    test-mape:0.111433+0.003352 
## [118]    train-mape:0.046850+0.000212    test-mape:0.111432+0.003362 
## [119]    train-mape:0.045977+0.000213    test-mape:0.111454+0.003366 
## [120]    train-mape:0.045127+0.000212    test-mape:0.111475+0.003388 
## [121]    train-mape:0.044293+0.000209    test-mape:0.111504+0.003399 
## [122]    train-mape:0.043477+0.000207    test-mape:0.111542+0.003409 
## [123]    train-mape:0.042679+0.000210    test-mape:0.111587+0.003409 
## [124]    train-mape:0.041895+0.000208    test-mape:0.111628+0.003425 
## [125]    train-mape:0.041128+0.000204    test-mape:0.111668+0.003440 
## [126]    train-mape:0.040370+0.000202    test-mape:0.111713+0.003438 
## [127]    train-mape:0.039632+0.000198    test-mape:0.111767+0.003442 
## [128]    train-mape:0.038910+0.000192    test-mape:0.111825+0.003455 
## [129]    train-mape:0.038202+0.000189    test-mape:0.111878+0.003463 
## [130]    train-mape:0.037510+0.000186    test-mape:0.111943+0.003476 
## [131]    train-mape:0.036832+0.000183    test-mape:0.112003+0.003487 
## [132]    train-mape:0.036164+0.000182    test-mape:0.112051+0.003484 
## [133]    train-mape:0.035512+0.000176    test-mape:0.112108+0.003490 
## [134]    train-mape:0.034868+0.000176    test-mape:0.112159+0.003502 
## [135]    train-mape:0.034238+0.000174    test-mape:0.112208+0.003498 
## [136]    train-mape:0.033622+0.000173    test-mape:0.112261+0.003506 
## [137]    train-mape:0.033018+0.000169    test-mape:0.112319+0.003501 
## [138]    train-mape:0.032428+0.000167    test-mape:0.112381+0.003513 
## [139]    train-mape:0.031844+0.000161    test-mape:0.112442+0.003517 
## [140]    train-mape:0.031273+0.000159    test-mape:0.112509+0.003516 
## [141]    train-mape:0.030715+0.000155    test-mape:0.112579+0.003510 
## [142]    train-mape:0.030166+0.000147    test-mape:0.112646+0.003518 
## [143]    train-mape:0.029626+0.000141    test-mape:0.112714+0.003526 
## [144]    train-mape:0.029099+0.000136    test-mape:0.112772+0.003528 
## [145]    train-mape:0.028585+0.000130    test-mape:0.112830+0.003535 
## [146]    train-mape:0.028076+0.000124    test-mape:0.112888+0.003538 
## [147]    train-mape:0.027580+0.000119    test-mape:0.112951+0.003538 
## [148]    train-mape:0.027090+0.000118    test-mape:0.113013+0.003536 
## [149]    train-mape:0.026612+0.000116    test-mape:0.113083+0.003537 
## [150]    train-mape:0.026144+0.000116    test-mape:0.113146+0.003544
cvd<-cv$evaluation_log
gcvd<-ggplot(cvd,aes(x=iter))+geom_line(aes(y=train_mape_mean),lwd=2,col="purple")+
  geom_line(aes(y=test_mape_mean),lwd=2,col="coral")+
  geom_label(aes(label="Training",y=cv$evaluation_log[150,2][[1]],x=157),col="purple",lwd=2,size=2.5)+
  geom_label(aes(label="Testing",y=cv$evaluation_log[150,4][[1]],x=157),col="coral",lwd=2,size=2.5)+
  theme_ipsum_rc(grid=F,axis_title_just = "center",axis_title_size = 12)+
  labs(x="\nIterations",y="MAPE Mean\n",title="Learning Curve Plot of 10 CV-Model")+
  theme(plot.title=element_text(hjust=0.5))+xlim(c(0,160))+
  geom_label(aes(label="Details:\nnrounds = 150\nmax depth = 68\neta = 0.03",y=0.4,x=135),
             lwd=5,size=2.5)+geom_vline(aes(xintercept=cv$evaluation_log$iter[which.min(cv$evaluation_log$test_mape_mean)][[1]]),
                               lwd=2,lty=2,col="darkgreen")+geom_label(aes(x=133,y=0.6,label="Minimum MAPE Test: 0.114\nNumber of Iteration: 118"),size=3,                                             col="darkgreen",lwd=2,hjust=0.25,vjust=-0.4);gcvd

Pemodelan dengan memilih maksimum iterasi terbaik dari hasil 10-CV

xt<-xgb.train(data=xgbtr,watchlist = wl,nrounds=cv$evaluation_log[which.min(cv$evaluation_log$test_mape_mean),1][[1]],
              max.depth=68,eta=0.03,eval_metric="mape");xt
## [1]  train-mape:0.961300 test-mape:0.961133 
## [2]  train-mape:0.931908 test-mape:0.931614 
## [3]  train-mape:0.903396 test-mape:0.902979 
## [4]  train-mape:0.875740 test-mape:0.875213 
## [5]  train-mape:0.848906 test-mape:0.848261 
## [6]  train-mape:0.822896 test-mape:0.822151 
## [7]  train-mape:0.797659 test-mape:0.796806 
## [8]  train-mape:0.773178 test-mape:0.772225 
## [9]  train-mape:0.749423 test-mape:0.748357 
## [10] train-mape:0.726407 test-mape:0.725229 
## [11] train-mape:0.704097 test-mape:0.702805 
## [12] train-mape:0.682465 test-mape:0.681070 
## [13] train-mape:0.661465 test-mape:0.659957 
## [14] train-mape:0.641119 test-mape:0.639492 
## [15] train-mape:0.621374 test-mape:0.619636 
## [16] train-mape:0.602256 test-mape:0.600437 
## [17] train-mape:0.583711 test-mape:0.581838 
## [18] train-mape:0.565746 test-mape:0.563795 
## [19] train-mape:0.548332 test-mape:0.546330 
## [20] train-mape:0.531442 test-mape:0.529389 
## [21] train-mape:0.515082 test-mape:0.513039 
## [22] train-mape:0.499210 test-mape:0.497176 
## [23] train-mape:0.483857 test-mape:0.481827 
## [24] train-mape:0.468978 test-mape:0.467036 
## [25] train-mape:0.454579 test-mape:0.452705 
## [26] train-mape:0.440633 test-mape:0.438810 
## [27] train-mape:0.427147 test-mape:0.425372 
## [28] train-mape:0.414087 test-mape:0.412382 
## [29] train-mape:0.401407 test-mape:0.399846 
## [30] train-mape:0.389122 test-mape:0.387690 
## [31] train-mape:0.377238 test-mape:0.375927 
## [32] train-mape:0.365713 test-mape:0.364533 
## [33] train-mape:0.354566 test-mape:0.353558 
## [34] train-mape:0.343757 test-mape:0.342970 
## [35] train-mape:0.333326 test-mape:0.332760 
## [36] train-mape:0.323215 test-mape:0.322879 
## [37] train-mape:0.313443 test-mape:0.313358 
## [38] train-mape:0.304009 test-mape:0.304146 
## [39] train-mape:0.294898 test-mape:0.295266 
## [40] train-mape:0.286086 test-mape:0.286718 
## [41] train-mape:0.277587 test-mape:0.278439 
## [42] train-mape:0.269378 test-mape:0.270469 
## [43] train-mape:0.261464 test-mape:0.262816 
## [44] train-mape:0.253797 test-mape:0.255409 
## [45] train-mape:0.246452 test-mape:0.248324 
## [46] train-mape:0.239300 test-mape:0.241499 
## [47] train-mape:0.232433 test-mape:0.234981 
## [48] train-mape:0.225826 test-mape:0.228650 
## [49] train-mape:0.219432 test-mape:0.222585 
## [50] train-mape:0.213290 test-mape:0.216737 
## [51] train-mape:0.207321 test-mape:0.211102 
## [52] train-mape:0.201592 test-mape:0.205707 
## [53] train-mape:0.196050 test-mape:0.200525 
## [54] train-mape:0.190767 test-mape:0.195589 
## [55] train-mape:0.185621 test-mape:0.190881 
## [56] train-mape:0.180644 test-mape:0.186371 
## [57] train-mape:0.175847 test-mape:0.182125 
## [58] train-mape:0.171244 test-mape:0.178022 
## [59] train-mape:0.166803 test-mape:0.174095 
## [60] train-mape:0.162505 test-mape:0.170392 
## [61] train-mape:0.158334 test-mape:0.166819 
## [62] train-mape:0.154328 test-mape:0.163416 
## [63] train-mape:0.150458 test-mape:0.160234 
## [64] train-mape:0.146771 test-mape:0.157226 
## [65] train-mape:0.143240 test-mape:0.154328 
## [66] train-mape:0.139725 test-mape:0.151630 
## [67] train-mape:0.136349 test-mape:0.149047 
## [68] train-mape:0.133058 test-mape:0.146622 
## [69] train-mape:0.129909 test-mape:0.144327 
## [70] train-mape:0.126823 test-mape:0.142183 
## [71] train-mape:0.123888 test-mape:0.140125 
## [72] train-mape:0.121010 test-mape:0.138200 
## [73] train-mape:0.118264 test-mape:0.136392 
## [74] train-mape:0.115572 test-mape:0.134667 
## [75] train-mape:0.112934 test-mape:0.133113 
## [76] train-mape:0.110363 test-mape:0.131658 
## [77] train-mape:0.107877 test-mape:0.130201 
## [78] train-mape:0.105483 test-mape:0.128921 
## [79] train-mape:0.103135 test-mape:0.127745 
## [80] train-mape:0.100865 test-mape:0.126570 
## [81] train-mape:0.098670 test-mape:0.125515 
## [82] train-mape:0.096528 test-mape:0.124561 
## [83] train-mape:0.094458 test-mape:0.123721 
## [84] train-mape:0.092461 test-mape:0.122875 
## [85] train-mape:0.090495 test-mape:0.122105 
## [86] train-mape:0.088626 test-mape:0.121382 
## [87] train-mape:0.086785 test-mape:0.120721 
## [88] train-mape:0.084999 test-mape:0.120100 
## [89] train-mape:0.083245 test-mape:0.119526 
## [90] train-mape:0.081544 test-mape:0.119014 
## [91] train-mape:0.079886 test-mape:0.118528 
## [92] train-mape:0.078256 test-mape:0.118084 
## [93] train-mape:0.076664 test-mape:0.117681 
## [94] train-mape:0.075125 test-mape:0.117328 
## [95] train-mape:0.073604 test-mape:0.116996 
## [96] train-mape:0.072124 test-mape:0.116730 
## [97] train-mape:0.070697 test-mape:0.116445 
## [98] train-mape:0.069287 test-mape:0.116180 
## [99] train-mape:0.067922 test-mape:0.115956 
## [100]    train-mape:0.066584 test-mape:0.115749 
## [101]    train-mape:0.065287 test-mape:0.115540 
## [102]    train-mape:0.064030 test-mape:0.115390 
## [103]    train-mape:0.062792 test-mape:0.115242 
## [104]    train-mape:0.061563 test-mape:0.115061 
## [105]    train-mape:0.060376 test-mape:0.114930 
## [106]    train-mape:0.059228 test-mape:0.114829 
## [107]    train-mape:0.058085 test-mape:0.114677 
## [108]    train-mape:0.056982 test-mape:0.114616 
## [109]    train-mape:0.055893 test-mape:0.114529 
## [110]    train-mape:0.054829 test-mape:0.114497 
## [111]    train-mape:0.053787 test-mape:0.114420 
## [112]    train-mape:0.052777 test-mape:0.114426 
## [113]    train-mape:0.051778 test-mape:0.114419 
## [114]    train-mape:0.050817 test-mape:0.114443 
## [115]    train-mape:0.049856 test-mape:0.114424 
## [116]    train-mape:0.048938 test-mape:0.114434 
## [117]    train-mape:0.048046 test-mape:0.114449 
## [118]    train-mape:0.047151 test-mape:0.114454
## ##### xgb.Booster
## raw: 13.1 Mb 
## call:
##   xgb.train(data = xgbtr, nrounds = cv$evaluation_log[which.min(cv$evaluation_log$test_mape_mean), 
##     1][[1]], watchlist = wl, max.depth = 68, eta = 0.03, eval_metric = "mape")
## params (as set within xgb.train):
##   max_depth = "68", eta = "0.03", eval_metric = "mape", validate_parameters = "TRUE"
## xgb.attributes:
##   niter
## callbacks:
##   cb.print.evaluation(period = print_every_n)
##   cb.evaluation.log()
## # of features: 11 
## niter: 118
## nfeatures : 11 
## evaluation_log:
##     iter train_mape test_mape
##        1 0.96130003 0.9611331
##        2 0.93190757 0.9316139
## ---                          
##      117 0.04804570 0.1144491
##      118 0.04715095 0.1144538
xt$evaluation_log[118,]
##    iter train_mape test_mape
## 1:  118 0.04715095 0.1144538

Variable Importance

v<-vip(xt)
v$data$Variable[1]<-"Segementasi\nPeserta\n"
v$data$Variable[2]<-"Kab/Kota\nPeserta"
v$data$Variable[3]<-" Hubungan\nKeluarga"
v$data$Variable[4]<-"Kab/Kota\nFaskes"
v$data$Variable[5]<-"Status\nPerkawinan"
v$data$Variable[6]<-attributes(pes$PSTV07)$label
v$data$Variable[7]<-"Provinsi\nPeserta"
v$data$Variable[8]<-"Kepemilikan\b\\b\nFaskes"
v$data$Variable[9]<-"Jenis\nKelamin"
v$data$Variable[10]<-"Jenis\nFaskes"
vipl<-ggplot(v$data,aes(x=reorder(Variable,Importance),y=Importance,fill=Importance))+
  geom_bar(stat="identity")+coord_polar("x",start=6)+
  theme_ipsum_rc()+theme(axis.title.x.bottom = element_blank(),
                         axis.title.y.left = element_blank(),
                         axis.text.y.left = element_blank(),
                         axis.text.x = element_text(size=13),
                         text=element_text(size=12))+
  scale_fill_gradientn(colours=c("orange","#0c134f"));vipl

Map Chart

Geojson File

spdf<-geojson_read("indonesia-geojson-master/indonesia.geojson",what="sp")

Praproses Geojson file

rgeos::gIsValid(spdf)
## [1] FALSE
spdf<-rgeos::gBuffer(spdf,byid=T,width=0);rgeos::gIsValid(spdf)
## [1] TRUE
sp<-tidy(spdf,region="state");sp
## # A tibble: 14,811 × 7
##     long   lat order hole  piece group  id   
##    <dbl> <dbl> <int> <lgl> <fct> <fct>  <chr>
##  1  95.9  5.50     1 FALSE 1     Aceh.1 Aceh 
##  2  95.9  5.43     2 FALSE 1     Aceh.1 Aceh 
##  3  95.9  5.45     3 FALSE 1     Aceh.1 Aceh 
##  4  95.9  5.42     4 FALSE 1     Aceh.1 Aceh 
##  5  96.1  5.28     5 FALSE 1     Aceh.1 Aceh 
##  6  96.1  5.26     6 FALSE 1     Aceh.1 Aceh 
##  7  96.3  5.26     7 FALSE 1     Aceh.1 Aceh 
##  8  96.4  5.2      8 FALSE 1     Aceh.1 Aceh 
##  9  96.4  5.20     9 FALSE 1     Aceh.1 Aceh 
## 10  96.5  5.24    10 FALSE 1     Aceh.1 Aceh 
## # ℹ 14,801 more rows

Praproses Data Kepsertaan untuk Map Chart

xgbd<-xgb.DMatrix(data=data.matrix(ag[,-12]),label=ag$UHH)
ap<-data.frame(ag,predict=round(predict(xt,xgbd)))#xgbts
ap$PSTV13<-as.character(ap$PSTV13)
daf<-data.frame(code=attributes(test$PSTV13)$labels)
daf$huruf<-rownames(daf)
daf$code<-as.character(daf$code)

Left join Geojson file dan Data Kepesertaan

AP<-ap%>%left_join(.,daf,by=c("PSTV13"="code"))
sp$id<-toupper(sp$id)
s<-sp%>%left_join(.,AP,by=c("id"="huruf"))

Map Chart

ggplot(data=s,aes(x=long,y=lat,group=group,fill=predict))+
  geom_polygon(color="grey",show.legend = T)+theme_ft_rc()+coord_map()+
  labs(fill="",title="Peta Spasial Prediksi AHH Penderita DM di Indonesia [2019-2021]")+
  theme(plot.title=element_text(hjust=0.5),legend.position = "bottom",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    axis.title.x.bottom = element_blank(),
    axis.title.y.left = element_blank())+
  scale_fill_gradientn(colours=c("orange","navyblue"))