Klasifikasi Tingkat Risiko Negara dengan Decision Tree
Introduction
Background
Country Risk
Risiko negara (country risk) mengacu pada ketidakpastian yang terkait dengan investasi di negara tertentu, dan sejauh mana ketidakpastian itu dapat menyebabkan kerugian bagi investor. Ketidakpastian ini dapat berasal dari sejumlah faktor termasuk pengaruh politik, ekonomi, nilai tukar, atau teknologi. Risiko negara juga menunjukkan risiko bahwa pemerintah asing akan gagal membayar obligasi atau komitmen keuangan lainnya yang meningkatkan risiko transfer.
Oleh karena itu, perlu dilakukan klasifikasi untuk mengetahui apakah suatu negara memiliki tingkat risiko yang tinggi atau rendah berdasarkan faktor-faktor yang dapat mempengaruhinya sehingga dapat dijadikan sebagai sebuah pertimbangan bagi suatu negara yang akan melakukan investasi.
Objective
Membangun model
decision tree
yang dapat mengklasifikasikan negara dengan risiko investasi rendah (low) dan tinggi (high) dengan baik.Mengidentifikasi karakteristik dari negara dengan risiko investasi rendah (low) dan tinggi (high).
Data
Data Pre-Processing
Import Data
Pada kasus ini diberikan data mengenai informasi risiko investasi pada 118 negara beserta faktor-faktor yang dapat mempengaruhinya.
<-read_excel("D:/MATERI KULIAH S2 IPB/SAINS DATA/tugas STA581.xlsx")
invest_risk$`Risk Level`<- as.factor(invest_risk$`Risk Level`)
invest_riskhead(invest_risk)
## # A tibble: 6 x 16
## Country X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AD 17.5 38675. 173. 0.68 1.22 1.79 -2.08 55 -26.5 2.86 8
## 2 AE 18.2 40105. 104. 1.77 0.870 2.66 -0.725 103. -13.6 353. 8.15
## 3 AE-AZ 18.7 76038. 31.0 2.63 1.49 1.85 -1.90 103. -56.2 200. 8.15
## 4 AE-RK NA 27883. 24.8 1.29 1.75 2.23 -1.14 103. 24.8 10.1 NA
## 5 AM 14 4251. 89.6 1.44 0.256 4.75 2.33 167. 47.3 12.6 6.6
## 6 AO NA 2034. 57.1 22.4 3.34 -0.878 -5.20 34.8 15.4 62.5 10.3
## # ... with 4 more variables: X12 <dbl>, X13 <dbl>, X14 <dbl>, Risk Level <fct>
Data terdiri dari 15 variabel. Adapun variabel respon yang digunakan yaitu “Risk level” yang terdiri dari dua kelas (“1” = low dan “0” = high). Berikut adalah deskripsi untung masing-masing variabel penjelas yang terdapat dalam dataset:
X1 : capital adequacy ratio (%) average from last 5 years
X2 : GDP per capita (USD)
X3 : Gross External Debt (% of GDP) average from last 5 years
X4 : Growth of consumer price (%) average from last 5 years
X5 : Growth of population (%) average from last 5 years
X6 : Growth of Real GDP (%) average from last 5 years
X7 : Growth of Real GDP per cap. (%) average from last 5 years
X8 : Loan-deposit ratio (%) average from last 5 years
X9 : Net External Debt (% of GDP) average from last 5 years
X10 : Nominal GDP (USD bn)
X11 : Non-performing loans (% of gross loans) average from last 5 years
X12 : Percentage of gross domestic investment to GDP (%) average from last 5 years
X13 : Percentage of gross domestic saving to GDP (%) average from last 5 years
X14 : Unemployment rate (% labour force) average from last 5 years
Proporsi Risk Level
# Melihat proporsi masing-masing kelas variabel Response
attach(invest_risk)
prop.table(table(`Risk Level`))
## Risk Level
## 0 1
## 0.5470085 0.4529915
barplot(table(`Risk Level`), col = "coral")
text(0.7,y=30,"54.70%")
text(1.9,y=30,"45.30%")
Berdasarkan plot diatas terlihat bahwa terdapat 54.7% negara memiliki tingkat risiko yang tinggi (“0”). Sementara itu, 45.3% lainnya memiliki tingkat risiko yang rendah (“1”). Perbandingan masing-masing kelas pada variabel respon (Risk Level) terlihat seimbang. Hal tersebut menunjukkan bahwa tidak terjadi kasus imbalance data.
Checking Missing Data
# summary of the data
<-invest_risk[-1]
invest_risksummary(invest_risk)
## X1 X2 X3 X4
## Min. : 4.20 Min. : 434.5 Min. : 13.63 Min. :-0.1510
## 1st Qu.:15.93 1st Qu.: 4223.5 1st Qu.: 43.11 1st Qu.: 0.8435
## Median :18.35 Median : 11363.6 Median : 70.35 Median : 1.6986
## Mean :18.73 Mean : 22596.3 Mean : 177.50 Mean : 3.4418
## 3rd Qu.:21.64 3rd Qu.: 34641.3 3rd Qu.: 117.76 3rd Qu.: 4.2064
## Max. :47.50 Max. :124340.4 Max. :6908.35 Max. :36.7035
## NA's :13
## X5 X6 X7 X8
## Min. :-0.8862 Min. :-5.135 Min. :-9.8453 Min. : 34.82
## 1st Qu.: 0.3751 1st Qu.: 1.754 1st Qu.:-1.1137 1st Qu.: 75.98
## Median : 1.0511 Median : 2.844 Median : 0.2912 Median : 90.02
## Mean : 1.1471 Mean : 3.064 Mean : 0.2206 Mean : 99.47
## 3rd Qu.: 1.8006 3rd Qu.: 4.258 3rd Qu.: 1.9242 3rd Qu.:113.28
## Max. : 4.4021 Max. :10.076 Max. : 6.0712 Max. :359.14
## NA's :9
## X9 X10 X11 X12
## Min. :-1955.72 Min. : 1.171 Min. : 0.3357 Min. :12.67
## 1st Qu.: -16.23 1st Qu.: 34.539 1st Qu.: 1.8372 1st Qu.:20.16
## Median : 12.94 Median : 107.796 Median : 3.6018 Median :23.08
## Mean : -14.34 Mean : 710.336 Mean : 6.3096 Mean :24.52
## 3rd Qu.: 33.35 3rd Qu.: 375.191 3rd Qu.: 7.9250 3rd Qu.:27.97
## Max. : 456.49 Max. :20935.000 Max. :63.5000 Max. :46.83
## NA's :21
## X13 X14 Risk Level
## Min. : 8.882 Min. : 0.120 0:64
## 1st Qu.:18.419 1st Qu.: 4.818 1:53
## Median :24.226 Median : 7.000
## Mean :24.362 Mean : 8.521
## 3rd Qu.:29.249 3rd Qu.:10.300
## Max. :55.089 Max. :33.700
## NA's :12
# missing data plot
PlotMiss(invest_risk, main = "Plot of Missing Data")
Berdasarkan hasil di atas, variabel yang memiliki missing value adalah variabel X1 (11.11% atau 13 NA), X8 (7.69% atau 9 NA), X11(17.95% atau 21 NA), dan X14 (10.26% atau 12 NA).
Missing Data Handling
Multiple Imputation by Chained Equations (MICE) merupakan salah satu metode untuk mengatasi missing data (data yang hilang). MICE memberikan banyak nilai sebagai ganti satu nilai yang hilang dengan membuat serangkaian model regresi (atau model lain yang sesuai), tergantung pada parameter ‘metode’ nya. Pada proses MICE, setiap variabel yang memuat data hilang diperlakukan sebagai variabel respon, dan variabel lain dalam data diperlakukan sebagai variabel penjelas.
Berikut merupakan flowchart dari MICE:
MICE Flowchart
Berikut merupakan hasil imputasi menggunakan MICE :
# imputation with MICE
<- mice(invest_risk[,1:14], m=5, seed = 123) impute
##
## iter imp variable
## 1 1 X1 X8 X11 X14
## 1 2 X1 X8 X11 X14
## 1 3 X1 X8 X11 X14
## 1 4 X1 X8 X11 X14
## 1 5 X1 X8 X11 X14
## 2 1 X1 X8 X11 X14
## 2 2 X1 X8 X11 X14
## 2 3 X1 X8 X11 X14
## 2 4 X1 X8 X11 X14
## 2 5 X1 X8 X11 X14
## 3 1 X1 X8 X11 X14
## 3 2 X1 X8 X11 X14
## 3 3 X1 X8 X11 X14
## 3 4 X1 X8 X11 X14
## 3 5 X1 X8 X11 X14
## 4 1 X1 X8 X11 X14
## 4 2 X1 X8 X11 X14
## 4 3 X1 X8 X11 X14
## 4 4 X1 X8 X11 X14
## 4 5 X1 X8 X11 X14
## 5 1 X1 X8 X11 X14
## 5 2 X1 X8 X11 X14
## 5 3 X1 X8 X11 X14
## 5 4 X1 X8 X11 X14
## 5 5 X1 X8 X11 X14
print(impute)
## Class: mids
## Number of multiple imputations: 5
## Imputation methods:
## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13
## "pmm" "" "" "" "" "" "" "pmm" "" "" "pmm" "" ""
## X14
## "pmm"
## PredictorMatrix:
## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14
## X1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
## X2 1 0 1 1 1 1 1 1 1 1 1 1 1 1
## X3 1 1 0 1 1 1 1 1 1 1 1 1 1 1
## X4 1 1 1 0 1 1 1 1 1 1 1 1 1 1
## X5 1 1 1 1 0 1 1 1 1 1 1 1 1 1
## X6 1 1 1 1 1 0 1 1 1 1 1 1 1 1
$imp$X1 impute
## 1 2 3 4 5
## 4 20.700 15.5888 21.6000 23.1000 14.5000
## 6 14.500 47.5000 18.6500 16.5000 24.8200
## 19 18.800 22.0000 12.7000 15.0000 18.3000
## 23 14.000 16.6643 16.9822 19.1000 23.9000
## 39 15.400 14.1400 12.7000 19.1400 14.1400
## 42 14.000 4.2000 16.6000 14.1400 18.4444
## 53 19.100 12.9000 18.7000 17.3000 16.2500
## 55 18.300 19.3188 23.9600 21.8000 13.6000
## 63 22.952 19.1400 26.0000 16.8056 14.5000
## 73 16.700 21.8000 12.0977 18.2857 14.2800
## 85 18.800 14.2800 23.9600 18.2000 16.2500
## 99 15.200 14.1400 16.7000 22.6000 16.0956
## 106 17.500 16.9822 17.7000 23.2000 15.5888
$imp$X8 impute
## 1 2 3 4 5
## 7 149.03716 72.25639 78.58290 34.81845 78.58290
## 15 67.94252 88.60514 81.91411 90.19331 101.29834
## 39 116.51738 74.25542 96.57359 49.05568 117.48908
## 55 134.47988 90.19331 88.88685 72.30708 69.45587
## 63 149.03716 88.60514 83.52300 123.99717 53.29829
## 67 83.52300 84.09234 68.82672 73.69553 93.88143
## 99 79.03623 55.00000 53.29829 111.78982 67.45486
## 113 68.23179 207.31980 94.67722 185.64097 175.16013
## 115 110.63987 72.25639 34.81845 53.29829 86.56201
$imp$X11 impute
## 1 2 3 4 5
## 4 9.1000 11.2000 17.0000 3.1800 2.6562
## 11 2.7000 3.6629 63.5000 24.4000 5.4000
## 13 4.8292 4.8292 1.4000 3.0600 3.1800
## 15 0.5000 9.5000 1.6900 6.0000 4.9000
## 17 4.1991 2.4292 26.9780 4.2000 2.0000
## 18 10.6000 6.0000 24.4000 24.4000 6.0000
## 30 1.0000 4.1991 1.0000 1.6600 8.3000
## 32 2.8512 2.1500 8.1550 0.5000 4.1000
## 35 8.3515 8.0000 11.6788 24.4000 3.0176
## 55 1.6900 4.5000 11.2000 4.8292 7.7000
## 57 0.9024 13.6000 8.0000 3.2000 2.3000
## 63 13.6000 1.2157 15.0000 11.2000 24.4000
## 83 1.0000 5.0000 2.1500 5.0000 2.6562
## 84 2.8512 8.3000 1.8396 5.0000 11.2000
## 85 4.1276 2.8415 1.6600 1.8500 3.0176
## 97 13.6000 1.6736 1.7229 5.4000 3.1800
## 99 20.0000 15.0000 11.1000 4.1991 11.2000
## 109 26.9780 5.0000 15.0000 6.0000 11.2000
## 110 5.4000 4.2000 17.0000 11.8000 10.3000
## 114 10.6000 10.3000 6.4000 4.1991 6.4000
## 117 10.6000 49.0000 49.0000 24.4000 10.6000
$imp$X14 impute
## 1 2 3 4 5
## 3 3.0000 4.4000 5.0 6.50 4.0000
## 4 7.0000 11.4537 8.5 7.10 4.0000
## 21 23.0000 8.5000 4.0 4.50 24.6500
## 25 2.3000 7.3000 15.0 33.70 4.0000
## 45 9.5000 5.4000 8.5 4.00 9.3242
## 63 6.4000 7.8000 13.5 4.80 15.8000
## 67 5.5665 5.1000 5.4 2.30 6.0000
## 79 23.0000 9.7000 7.3 4.50 33.7000
## 86 13.2000 23.0000 4.5 4.50 33.7000
## 98 22.0000 8.5000 4.5 24.65 11.4537
## 99 4.8000 13.5000 4.0 7.10 13.2000
## 112 4.0000 4.8000 9.0 12.00 8.0000
#memasukkan data hasil imputasi
<- complete(impute, 5)
invest_risk1
#cek pola data
xyplot(impute, X1 ~ X2 | .imp, pch = 20, cex=1.4)
xyplot(impute, X8 ~ X2 | .imp, pch = 20, cex=1.4)
xyplot(impute, X11 ~ X2 | .imp, pch = 20, cex=1.4)
xyplot(impute, X14 ~ X2 | .imp, pch = 20, cex=1.4)
Data hasil imputasi disimbolkan dalam titik-titik berwarna merah. Pola data di atas menunjukkan bahwa data hasil imputasi tidak berbeda jauh dengan nilai data yang lain, sehingga tidak mengubah pola data sebenarnya.
<-data.frame(invest_risk1, invest_risk$`Risk Level`)
invest_risk2colnames(invest_risk2)<-c("X1", "X2", "X3", "X4","X5", "X6", "X7", "X8","X9","X10","X11","X12", "X13", "X14", "Y")
PlotMiss(invest_risk2, main = "Plot Missing Data After Imputation")
Data Exploration and Vizualisation
attach(invest_risk2)
<- ggplot(data=invest_risk2, aes(y= X1, group=Y, fill=Y)) +geom_boxplot()
plot1<- ggplot(data=invest_risk2, aes(y= X2, group=Y, fill=Y)) +geom_boxplot()
plot2<- ggplot(data=invest_risk2, aes(y= X3, group=Y, fill=Y)) +geom_boxplot()
plot3
<- ggplot(data=invest_risk2, aes(y= X4, group=Y, fill=Y)) +geom_boxplot()
plot4<- ggplot(data=invest_risk2, aes(y= X5, group=Y, fill=Y)) +geom_boxplot()
plot5<- ggplot(data=invest_risk2, aes(y= X6, group=Y, fill=Y)) +geom_boxplot()
plot6
<- ggplot(data=invest_risk2, aes(y= X7, group=Y, fill=Y)) +geom_boxplot()
plot7<- ggplot(data=invest_risk2, aes(y= X8, group=Y, fill=Y)) +geom_boxplot()
plot8<- ggplot(data=invest_risk2, aes(y= X9, group=Y, fill=Y)) +geom_boxplot()
plot9
<- ggplot(data=invest_risk2, aes(y= X10, group=Y, fill=Y)) +geom_boxplot()
plot10<- ggplot(data=invest_risk2, aes(y= X11, group=Y, fill=Y)) +geom_boxplot()
plot11<- ggplot(data=invest_risk2, aes(y= X12, group=Y, fill=Y)) +geom_boxplot()
plot12
<- ggplot(data=invest_risk2, aes(y= X13, group=Y, fill=Y)) +geom_boxplot()
plot13<- ggplot(data=invest_risk2, aes(y= X14, group=Y, fill=Y)) +geom_boxplot() plot14
::grid.arrange(plot1, plot2, plot3, nrow = 1, ncol=3) gridExtra
Sebaran variabel X1 X2, X3 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata capital adequacy ratio atau rasio kecukupan modal (%) dalam 5 tahun terakhir, PDB perkapita (USD), dan rata-rata Gross External Debt (% of GDP) atau utang luar negeri bruto (% PDB) dalam 5 tahun terakhir yang lebih tinggi.
::grid.arrange(plot4, plot5, plot6, nrow = 1, ncol=3) gridExtra
Sebaran variabel X4, X5 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata growth of consumer price atau pertumbuhan harga konsumen (%) dan rata-rata growth of population atau pertumbuhan penduduk (%) dalam 5 tahun terakhir yang lebih rendah.
Sedangkan berdasarkan boxplot untuk X6 terlihat bahwa sebaran variabel pada masing-masing kelas cenderung sama. Hal tersebut menunjukkan bahwa variabel rata-rata growth of Real GDP atau pertumbuhan rata-rata PDB Riil (%) dalam 5 tahun terakhir kurang baik dalam menggambarkan kelas masing-masing variabel response (Risk Level).
::grid.arrange(plot7,plot8,plot9, nrow = 1, ncol=3) gridExtra
Berdasarkan boxplot untuk X7 terlihat bahwa sebaran variabel pada masing-masing kelas cenderung sama. Hal tersebut menunjukkan bahwa variabel rata-rata growth of Real GDP per cap atau pertumbuhan rata-rata PDB Riil per kapita (%) dalam 5 tahun terakhir kurang baik dalam menggambarkan kelas masing-masing variabel response (Risk Level).
Sebaran variabel X8 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata Loan-deposit ratio atau Rasio pinjaman-deposit (%) dalam 5 tahun terakhir yang lebih tinggi.
Sebaran variabel X9 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata Net External Debt (% of GDP) atau Utang Luar Negeri Bersih (% PDB) dalam 5 tahun terakhir yang lebih rendah.
::grid.arrange(plot10, plot11, plot12, nrow = 1, ncol=3) gridExtra
Sebaran variabel X10 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai PDB Nominal (USD bn) yang lebih tinggi.
Sebaran variabel X11 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata Non-performing loans (% of gross loans) atau Kredit bermasalah (% dari pinjaman kotor) dalam 5 tahun terakhir yang lebih rendah.
Berdasarkan boxplot untuk X12 terlihat bahwa sebaran variabel pada masing-masing kelas cenderung sama. Hal tersebut menunjukkan bahwa variabel rata-rata percentage of gross domestic investment to GDP atau persentase investasi domestik bruto terhadap PDB dalam 5 tahun terakhir kurang baik dalam menggambarkan kelas masing-masing variabel response (Risk Level).
::grid.arrange(plot13, plot14, nrow = 1, ncol=2) gridExtra
Sebaran variabel X13 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata percentage of gross domestic saving to GDP atau persentase tabungan domestik bruto terhadap PDB dalam 5 tahun terakhir yang lebih tinggi.
Sebaran variabel X14 menunjukkan adanya perbedaan pada masing-masing kelas variabel respon (Risk level). Berdasarkan boxplot terlihat bahwa negara yang memiliki resiko rendah (low) adalah negara dengan nilai rata-rata unemployment rate (% labour force) atau tingkat pengangguran (% angkatan kerja) dalam 5 tahun terakhir yang lebih rendah.
Model Building (Decision Tree
)
Hyperparameter Tuning
Parameter
Berikut merupakan parameter yang akan dilakukan tuning pada decision tree
:
minsplit : jumlah minimum pengamatan yang harus ada dalam sebuah node untuk melakukan split.
minbucket : jumlah minimum pengamatan di setiap terminal node.
maxdepth : kedalaman maksimum dari setiap simpul dari pohon terakhir, dengan simpul akar dihitung sebagai kedalaman 0.
cp : complexity parameter, peran utama parameter ini adalah untuk menghemat waktu komputasi dengan memangkas split yang tidak bermanfaat.
#partisi data
<- createDataPartition(Y, p = 0.8, list = F)
data.partition <- data.frame(invest_risk2)[data.partition,]
invest_risk3<- data.frame(invest_risk2)[-data.partition,]
invest_risk3_tes
<- makeClassifTask(data = invest_risk3, target = "Y")
Task.invest
#model tree
<- makeLearner("classif.rpart")
tree
# Printing available rpart hyperparameters
getParamSet(tree)
## Type len Def Constr Req Tunable Trafo
## minsplit integer - 20 1 to Inf - TRUE -
## minbucket integer - - 1 to Inf - TRUE -
## cp numeric - 0.01 0 to 1 - TRUE -
## maxcompete integer - 4 0 to Inf - TRUE -
## maxsurrogate integer - 5 0 to Inf - TRUE -
## usesurrogate discrete - 2 0,1,2 - TRUE -
## surrogatestyle discrete - 0 0,1 - TRUE -
## maxdepth integer - 30 1 to 30 - TRUE -
## xval integer - 10 0 to Inf - FALSE -
## parms untyped - - - - TRUE -
# Defining the hyperparameter space for tuning
<- makeParamSet(
treeParamSpace makeIntegerParam("minsplit", lower = 5, upper = 20),
makeIntegerParam("minbucket", lower = 3, upper = 10),
makeNumericParam("cp", lower = 0.01, upper = 0.1),
makeIntegerParam("maxdepth", lower = 3, upper = 10))
# Defining the random search
set.seed(018)
<- makeTuneControlRandom(maxit = 200)
randSearch <- makeResampleDesc("CV", iters = 5)
cvForTuning
# Performing hyperparameter tuning
parallelStartSocket(cpus = detectCores())
<- tuneParams(tree, task = Task.invest,
tunedTreePars resampling = cvForTuning,
par.set = treeParamSpace,
control = randSearch)
parallelStop()
tunedTreePars
## Tune result:
## Op. pars: minsplit=5; minbucket=3; cp=0.0241; maxdepth=7
## mmce.test.mean=0.1578947
Berdasarkan hasil hyperparameter tuning, diperoleh kombinasi hyperparameter terbaik dengan nilai mean misclassification error (mmce) sebesar 0.1578947.
Model
# Pemodelan dengan parameter terbaik
<- rpart(Y ~ .,
best.model data=invest_risk3,
method='class',
control=rpart.control(minsplit=5,
minbucket=3,
maxdepth=7,
cp=0.0241))
rpart.plot(best.model, roundint = FALSE,
box.palette = "BuBn",
type = 5)
Karakteristik negara dengan risiko tinggi (“0”)
Suatu negara yang memiliki nilai GDP per capita kurang dari dari 15.000 USD dan rata-rata Net External Debt (% of GDP) dalam 5 tahun terakhir lebih besar sama dengan -8.9.
Suatu negara yang memiliki nilai GDP per capita lebih besar dari 15.000 USD namun tidak lebih dari 25.000 USD dan rata-rata Net External Debt (% of GDP) dalam 5 tahun terakhir lebih besar sama dengan 28.
Suatu negara yang memiliki nilai GDP per capita kurang dari 25.000 USD, rata-rata Net External Debt (% of GDP) dalam 5 tahun terakhir kurang dari -8.9, dan GDP Nominal kurang dari 63 USD bn.
Karakteristik negara dengan risiko rendah (“1”)
Suatu negara GDP per kapita >=25.000 USD.
Suatu negara yang memiliki nilai GDP lebih besar dari 15.000 USD namun tidak lebih dari 25.000 USD dan rata-rata Net External Debt (% of GDP) dalam 5 tahun terakhir lebih kurang dari 28 namun lebih besar dari -8.9.
Suatu negara yang memiliki nilai GDP kurang dari 25.000 USD, rata-rata Net External Debt (% of GDP) dalam 5 tahun terakhir lebih kurang dari -8.9, dan GDP Nominal lebih besar sama dengan 63 USD bn.
Model Evaluation
<- predict(best.model, invest_risk3_tes)
prediksi.prob<- ifelse(prediksi.prob > 0.5, "1", "0")[,2]
prediksi confusionMatrix(as.factor(prediksi), as.factor(invest_risk3_tes$Y))
## Confusion Matrix and Statistics
##
## Reference
## Prediction 0 1
## 0 11 1
## 1 1 9
##
## Accuracy : 0.9091
## 95% CI : (0.7084, 0.9888)
## No Information Rate : 0.5455
## P-Value [Acc > NIR] : 0.0002906
##
## Kappa : 0.8167
##
## Mcnemar's Test P-Value : 1.0000000
##
## Sensitivity : 0.9167
## Specificity : 0.9000
## Pos Pred Value : 0.9167
## Neg Pred Value : 0.9000
## Prevalence : 0.5455
## Detection Rate : 0.5000
## Detection Prevalence : 0.5455
## Balanced Accuracy : 0.9083
##
## 'Positive' Class : 0
##
Nilai akurasi data test yang dihasilkan cukup bagus, yaitu 0.9091. Adapun nilai sensitivity sebesar 0.9167 dan nilai specificity sebesar 0.90, dengan nilai balanced accuracy sebesar 0.9083. Hal tersebut mengindikasikan bahwa model baik dalam memodelkan data tingkat risiko negara.