options(repos = c(CRAN = "https://cran.rstudio.com/"))
#Install package yang diperlukan
install.packages("readxl")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'readxl' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("caTools")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'caTools' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("caret")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'caret' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("pROC")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'pROC' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("ggplot2")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'ggplot2' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("VIM")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'VIM' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
install.packages("dplyr")
## Installing package into 'C:/Users/lusia/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
## cannot open URL 'https://cran.rstudio.com/src/contrib/PACKAGES'
## Warning: package 'dplyr' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository https://cran.rstudio.com/bin/windows/contrib/4.4:
## cannot open URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/PACKAGES'
#Load data dan package
library(readxl)
library(caTools)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(ggplot2)
library(VIM)
## Loading required package: colorspace
##
## Attaching package: 'colorspace'
## The following object is masked from 'package:pROC':
##
## coords
## Loading required package: grid
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
##
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
##
## sleep
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#Baca data dari file excel
file_path <- "D:/Data R SEI/Copy of Level Risiko Investasi (edit).xlsx"
train_data <- read_excel(file_path, sheet = "Training")
test_data <- read_excel(file_path, sheet = "Testing")
#Pre-processing data
#Hapus kolom country
train_data <- train_data [, -1]
test_data <- test_data [, -1]
train_data$`Risk Level (0=low, 1=high)`<- as.factor(train_data$`Risk Level (0=low, 1=high)`)
#Pisahkan fitur (x) dan target (y)
x_train <- train_data[, -ncol(train_data)] #semua kolom kecuali target
y_train <- train_data$`Risk Level (0=low, 1=high)`
Deskripsi:
Kolom pertama (dalam hal ini Country) dihapus dari dataset training dan testing karena dianggap tidak relevan. Target variabel Risk Level diubah menjadi faktor (as.factor()), yang diperlukan untuk regresi logistik karena ini adalah model klasifikasi. x_train berisi fitur (semua kolom kecuali target), sementara y_train berisi target (kelas risiko).
Insight:
Ini adalah langkah pre-processing penting dimana data diformat agar sesuai dengan model regresi logistik. Kolom yang tidak relevan dihapus, dan variabel target dikonversi ke tipe yang sesuai.
#Pisahkan data training dan testing (80% training, 20% testing)
set.seed(42)
split <- sample.split(y_train, SplitRatio = 0.8)
x_train_sub <- subset(x_train, split == TRUE)
y_train_sub <- subset(y_train, split == TRUE)
x_val <- subset(x_train, split == FALSE)
y_val <- subset(y_train, split == FALSE)
Deskripsi:
Data training dipecah menjadi 80% training (x_train_sub, y_train_sub) dan 20% testing (x_vaL, Y_val) menggunakan fungsi sample.split() dan package caTools. set.seed(42) memastikan pembagian data selalu konsisten setiap kali kode dijalankan.
Insight:
Pembagian data ini penting untuk menguji performa model secara terpisah tanpa menggunakan data testing yang disediakan. Validasi pada subset training membantu menghindari overfitting sebelum model digunakan pada testing.
#Bangun model regresi logistik
#Gabungkan fitur dan target untuk fitting
train_data_model <- cbind(x_train_sub, y_train_sub)
#Model regresi logistik
model <- glm(y_train_sub ~ ., data = train_data_model, family = binomial)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Deskripsi:
Fitur dan target data training digabungkan menjadi train_data_model untuk memudahkan pelatihan model. glm() digunakan untuk membangun model Regresi Logistik, dimana formula y_train_sub ~. menunjukkan bahwa kita memprediksi target y_train_sub berdasarkan semua fitur (ditandai dengan .). family = binomial menunjukkan bahwa ini adalah regresi logistik.
Insight:
Regresi logistik adalah pilihan yang tepat untuk klasifikasi biner seperti prediksi risiko (0=low, 1=high). Model ini mengasumsikan hubungan linear antara log odds dan fitur.
#Ringkasan model
summary(model)
##
## Call:
## glm(formula = y_train_sub ~ ., family = binomial, data = train_data_model)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.4970315 7.6793486 0.976 0.3289
## X1 0.0121219 0.1183723 0.102 0.9184
## X2 -0.0002788 0.0001197 -2.330 0.0198 *
## X3 0.0085236 0.0118128 0.722 0.4706
## X4 -0.2107219 0.2734545 -0.771 0.4409
## X5 0.8249546 1.1060938 0.746 0.4558
## X6 -1.1208077 0.8614382 -1.301 0.1932
## X7 -0.1204581 0.6415634 -0.188 0.8511
## X8 -0.0687486 0.0507352 -1.355 0.1754
## X9 0.0248446 0.0162336 1.530 0.1259
## X10 0.0002345 0.0003741 0.627 0.5308
## X11 0.5626653 0.3452315 1.630 0.1031
## X12 0.2256143 0.2450297 0.921 0.3572
## X13 -0.1547744 0.2277245 -0.680 0.4967
## X14 0.2261054 0.2454651 0.921 0.3570
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 110.45 on 79 degrees of freedom
## Residual deviance: 28.46 on 65 degrees of freedom
## AIC: 58.46
##
## Number of Fisher Scoring iterations: 9
Deksrispi:
Menampilkan ringkasan hasil model regresi logistik yang dilatih, termasuk koefisien dari setiap fitur, nilai p, deviance, dan informasi lainnya.
Insight:
Dengan melihat ringkasan model, kita dapat mengevaluasi signifikansi statistik dari setiap fitur dan bagaimana mereka berkontribusi tehadap prediksi. Nilai p menunjukkan apakah fitur secara signifkan memengaruhi prediksi target.
#Prediksi pada data testing
#Prediksi Probabilitas
pred_probs <- predict(model, newdata = x_val, type = "response")
#Ubah probabilitas menjadi prediksi kelas (threshold 0.5)
pred_classes <- ifelse(pred_probs > 0.5, 1, 0)
Deskrispi:
predict() digunakan untuk menghitung probabilitas prediksi pada data validasi. Probabilitas kemudian diubah menjadi kelas prediksi (0 atau 1) berdasarkan threshold 0.5.
Insight:
Dengan prediksi probabilitas ini, kita dapat mengukur kinerja model. Threshold 0.5 adalah default, namun bisa diubah jika diperlukan.
#Membuat Confusion Matrix
conf_matrix <- table(Predicted = pred_classes, Actual = y_val)
#Mengonversi confusion matrix ke dalam data frame
conf_matrix_df <- as.data.frame(as.table(conf_matrix))
#Visualisasi confusion matrix
ggplot(conf_matrix_df, aes(x = Actual, y = Predicted)) + geom_tile(aes(fill = Freq), color = "white") + geom_text(aes(label = Freq), vjust =1) + scale_fill_gradient(low = "lightblue", high = "blue") + labs(title = "Confusion Matrix", x = "Actual Risk Level", y = "Predicted Risk Level") + theme_minimal()
Deskripsi:
Confusion matrix adalah visualisasi yang menunjukkan perbandingan antara prediksi model dan nilai sebenarnya dari data testing (Y_val). Kolom Actual berisi label asli (risiko tinggi atau rendah), sedangkan kolom Predicted berisi hasil prediksi model. geom_tile() digunakan untuk membuat heatmap yang menunjukkan frekuensi prediksi yang benar (True Positives dan True Negatives) serta kesalahan (False Positives dan False Negatives). geom_text() menampilkan angka frekuensi di dalam kotak heatmap.
Insight:
Visualisasi ini membantu kita untuk melihat apakah model lebih sering melakukan kesalahan dalam memprediksi risiko tinggi atau rendah. Jika nilai di diagonal utama (True Positives dan True Negatives) jauh lebih besar daripada nilai lainnya, berarti model bekerja dengan baik.
#ROC curve
#Menghitung nilai ROC curve
roc_curve <- roc(y_val, pred_probs)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
#Visualisasi ROC curve
ggplot(data = data.frame(tpr = roc_curve$sensitivities, fpr = 1 - roc_curve$specificities), aes(x = fpr, y = tpr)) + geom_line(color = "blue") + geom_abline(linetype = "dashed", color = "red") + labs(title = "ROC Curve", x = "False Positive Rate", y = "True Positive Rate") + theme_minimal()
Deskripsi:
ROC curve digunakan untuk mengevaluasi kinerja model klasifikasi biner seperti regresi logistik dengan menampilkan trade-off antara True Positive Rate (Sensitivitas) dan False Positive Rate. geom_line() digunakan untuk menggambarkan kurva ROC, sementara geom_abline() menampilkan garis diagonal yang mewakili model acak.
Insight :
ROC curve menunjukkan bagaimana model menangani trade-off antara sensitivitas dan spesifisitas. Jika kurva mendekati sudut kiri atas, itu berarti model memiliki kinerja yang sangat baik. Luas di bawah kurva (AUC - Area Under the Curve) digunakan untuk meringkas kinerja, dengan nilai AUC mendekati 1 menunjukkan model yang sangat baik.
#Distribusi hasil prediksi
#Mengonversi pred_classes menjadi faktor
pred_classes_factor <- as.factor(pred_classes)
#Membuat bar chart distribusi prediksi
ggplot(data = data.frame(Predicted_Risk_Level = pred_classes_factor), aes(x = Predicted_Risk_Level)) + geom_bar(fill = "gold", color = "black") + labs(title = "Distribution of Predicted Risk Levels", x = "Predicted Risk Level", y = "Count") + theme_minimal()
Deskripsi:
Bar chart ini menggambarkan distribusi jumlah prediksi risiko tinggi (1) dan risiko rendah (0). geom_bar() digunakan untuk menghitung frekuensi dari masing-masing kelas prediksi (tinggi dan rendah).
Insight:
Visualisasi ini memungkinkan kita untuk memahami seberapa banyak observasi yang diklasifikan ke dalam setiap kategori. Misalnya, jika sebagian besar prediksi menunjukkan risiko rendah, mungkin ada bias dalam data atau model.
#Membuat density plot untuk probabilitas prediksi
ggplot(data = data.frame(Predicted_Probabilities = pred_probs), aes(x = Predicted_Probabilities)) + geom_density(fill = "pink", alpha = 0.5) + labs(title = "Distribution of Predicted Probabilities", x = "Predicted Probability", y = "Density") + theme_minimal()
Deskripsi:
Density plot digunakan untuk melihat distribusi probabilitas yang dihasilkan oleh model regresi logistik. Probabilitas prediksi berkisar antara 0 dan 1, dimana nilai lebih mendekati 1 menunjukkan keyakinan tinggi bahwa observasi termasuk dalam risiko tinggi. geom_density() digunakan untuk memvisualisasikan distribusi probabilitas ini.
Insight:
Plot ini membantu untuk memahami bagaimana model mendistribusikan prediksi probabilitasnya. Misalnya, jika ada dua puncak (bimodal), ini menunjukkan bahwa model dapat dengan jelas membedakan antara dua kategori. Sebaliknya, jika distribusi cenderung bertumpuk di tengah, ini dapat menunjukkan ketidakpastian model.
#Boxplot untuk probabilitas berdasarkan kelas aktual
# Membuat data frame untuk probabilitas dan nilai aktual
prob_actual_df <- data.frame(probabilities = pred_probs, Actual = as.factor(y_val))
ggplot(prob_actual_df, aes(x = Actual, y = probabilities, fill = Actual)) + geom_boxplot() + labs(title = "Predicted Probabilities by Actual Risk Level", x = "Actual Risk Level", y = "Predicted Probability") + scale_fill_manual(values = c("lightgreen", "orchid")) + theme_minimal()
Deskripsi:
Boxplot ini menunjukkan distribusi probabilitas prediksi model berdasarkan kelas aktual (risiko rendah atau tinggi). Ini menunjukkan seberapa yakin model dalam membuat prediksi untuk setiap kelas aktual. geom_boxplot() digunakan untuk memvisualisasikan rentang prediksi probabilitas untuk masing-masing kelas.
Insight:
Boxplot ini memungkinkan kita untuk melihat apakah model lebih yakin dalam memprediksi satu kelas dibandingkan kelas lainnya. Jika boxplot untuk risiko rendah memiliki rentang yang lebih sempit di sekitar 0, dan risiko tinggi di sekitar 1, itu menunjukkan model membuat prediksi dengan keyakinan tinggi. Sebaliknya, overlap antar kelas menunjukkkan kebingunagan model dalam membedakan kelas risiko.
#Menyimpan model
save(model, file = "model_regresi_logistik.RData")
#Memuat model
load("model_regresi_logistik.RData")
#Menghitung akurasi model
mean(pred_classes == y_val)
## [1] 0.8
Deskripsi:
Menghitung akurasi model dengan membandingkan prediksi model dengan label yang sebenarnya pada data validasi.
Insight:
Akurasi adalah metrik dasar untuk mengukur performa model, yang menunjukkan proporsi prediksi yang benar.
#Prediksi pada data testing
#Prediksi probabilitas untuk data testing
test_probs <- predict(model, newdata = test_data, type = "response")
#Konversi probabilitas menjadi kelas (0 atau 1)
test_classes <- ifelse(test_probs > 0.5, 1, 0)
#Tambahkan kolom preediksi ke data testing
test_data$Predicted_Risk_Level <- test_classes
Deskripsi:
predict () digunakan untuk menghitung probabilitas prediksi pada data testing. Probabilitas diubah menjadi prediksi (0 atau 1) dan ditambahkan sebagai kolom baru Predicted_Risk_Level pada test_data
Insight:
Ini adalah langkah akhir untuk menerapkan model yang telah dilatih pada data testing, menghasilkan prediksi untuk setiap instance pada dataset testing.
#Menampilkan seluruh hasil prediksi
print(test_data)
## # A tibble: 17 × 15
## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 23.2 60338. 175. 1.62 0.676 2.47 0.353 186. 64.1 538. 0.5
## 2 16.8 62433. 410. 0.105 0.907 2.78 0.291 94.0 -201. 340. 1.31
## 3 18.3 28684. 103. 0.844 0.0746 3.55 1.93 72.3 16.2 52.8 3.02
## 4 19.7 21043. 103. 1.17 0.0734 3.22 1.23 112. 33.4 103. 2.53
## 5 11.9 49356. 60.2 0.896 0.586 1.75 -1.13 88.6 -145. 1.49 63.5
## 6 17.4 3989. 65.6 0.394 0.504 2.45 -0.125 88.9 27.3 24.6 1.57
## 7 19.8 7451. 33.2 0.345 0.315 3.44 1.28 100. -42.6 502. 3.2
## 8 12.9 3617. 85.3 5.56 1.12 1.61 -1.50 134. 64.5 39.2 13.6
## 9 18 8653. 51.7 11.7 1.48 4.16 1.81 117. 28.6 720. 11.3
## 10 14.1 31854. 48.5 0.724 0.102 2.54 2.77 71.1 -189. 668. 11.3
## 11 22 3955. 104. 19.2 -0.391 0.34 1.89 72.3 -5.47 156. 49
## 12 21.6 787. 42.3 4.29 3.66 5.74 0.421 69.5 21.9 33.5 3.34
## 13 16.3 69325. 104. 1.55 0.626 2.46 0.487 96.5 47.7 20935 1
## 14 17.0 15968. 73.0 8.00 0.359 0.821 -0.717 49.1 -16.2 53.6 11.3
## 15 18.4 1873. 30.0 12.3 1.61 5.84 3.07 96.5 -45.2 57.7 2.1
## 16 12.1 3887. 34.5 2.80 0.851 6.95 5.28 86.6 7.40 352. 1.69
## 17 16.6 6405. 50.8 4.98 1.48 0.789 -2.32 107. 15.0 302. 11.3
## # ℹ 4 more variables: X12 <dbl>, X13 <dbl>, X14 <dbl>,
## # Predicted_Risk_Level <dbl>
test_data %>%
select(Predicted_Risk_Level) %>%
mutate(No = row_number()) %>%
select(No, Predicted_Risk_Level) %>%
print()
## # A tibble: 17 × 2
## No Predicted_Risk_Level
## <int> <dbl>
## 1 1 0
## 2 2 0
## 3 3 0
## 4 4 0
## 5 5 1
## 6 6 1
## 7 7 0
## 8 8 1
## 9 9 1
## 10 10 0
## 11 11 1
## 12 12 1
## 13 13 0
## 14 14 1
## 15 15 0
## 16 16 0
## 17 17 1
Deskripsi:
print(test_data) adalah fungsi dasar di R untuk menampilkan seluruh isi objek test_data ke dalam konsol. Dalam konteks ini, test_data adalah data uji yang berisi hasil prediksi risiko (misalnya, Predicted_Risk_Level yang telah dihasilkan oleh model regresi logistik) Fungsi print() akan menampilkan semua baris dan kolom dari data test_data dalam format tabel di konsol.
Insight:
Fungsi print() bermanfaat ketika kita ingin melihat hasil prediksi secara cepat di konsol tanpa membuka jendela baru seperti pada fungsi View().
Berdasarkan 14 variabel yang telah disediakan, kita dapat menarik kesimpulan dan pengambilan keputusan dari hasil prediksi risiko investasi.
X1: Capital Adequacy Ratio (%) Average from Last 5 Years Rasio kecukupan modal yang lebih tinggi menunjukkan stabilitas keuangan yang lebih baik. Jika model menunjukkan bahwa variabel ini memiliki koefisien positif, maka kecukupan modal yang rendah dapat meningkatkan risiko.
X2: GDP per Capita (USD) GDP per kapita yang lebih tinggi sering kali berhubungan dengan tingkat hidup yang lebih baik dan stabilitas ekonomi.
X3: Gross External Debt (% of GDP) Average from Last 5 Years Utang luar negeri yang tinggi dapat menunjukkan potensi risiko ekonomi, terutama jika utang melebihi kemampuan negara untuk membayar.
X4: Growth of Consumer Price (%) Average from Last 5 Years Inflasi yang tinggi dapat menurunkan daya beli masyarakat dan menambah ketidakpastian ekonomi.
X5: Growth of Population (%) Average from Last 5 Years Pertumbuhan populasi yang stabil dapat meningkatkan permintaan pasar. Namun, jika terlalu tinggi, bisa menambah tekanan pada sumber daya.
X6: Growth of Real GDP (%) Average from Last 5 Years Pertumbuhan GDP riil yang positif menunjukkan kesehatan ekonomi.
X7: Growth of Real GDP per Capita (%) Average from Last 5 Years Ini menunjukkan peningkatan standar hidup. Pertumbuhan yang tinggi bisa menurunkan risiko.
X8: Loan-Deposit Ratio (%) Average from Last 5 Years Rasio pinjaman terhadap simpanan yang tinggi menunjukkan bahwa bank lebih agresif dalam memberikan pinjaman, yang dapat meningkatkan risiko default.
X9: Net External Debt (% of GDP) Average from Last 5 Years Utang luar negeri bersih yang tinggi menunjukkan ketergantungan yang besar pada utang luar negeri.
X10: Nominal GDP (USD bn) GDP nominal memberikan gambaran ukuran ekonomi. Ekonomi besar cenderung lebih stabil.
X11: Non-Performing Loans (% of Gross Loans) Average from Last 5 Years Persentase pinjaman bermasalah yang tinggi menunjukkan risiko yang lebih besar bagi lembaga keuangan.
X12: Percentage of Gross Domestic Investment to GDP (%) Average from Last 5 Years Investasi domestik yang tinggi menunjukkan kepercayaan pada perekonomian.
X13: Percentage of Gross Domestic Saving to GDP (%) Average from Last 5 Years Tabungan domestik yang tinggi bisa mengurangi ketergantungan pada utang.
X14: Unemployment Rate (% Labour Force) Average from Last 5 Years Tingkat pengangguran yang tinggi menunjukkan masalah ekonomi.
1 Prioritaskan Stabilitas Ekonomi Fokus pada investasi di negara atau perusahaan dengan GDP per kapita tinggi, pertumbuhan GDP positif, dan rasio kecukupan modal yang baik.
2 Hindari Risiko Tinggi Waspadai investasi di wilayah dengan utang luar negeri tinggi, inflasi tinggi, atau pinjaman bermasalah yang tinggi.
3 Dukung Investasi Domestik Perhatikan tingkat investasi domestik dan tabungan yang tinggi, karena ini menunjukkan kepercayaan dalam ekonomi.
4 Tingkat Pengangguran Evaluasi tingkat pengangguran untuk memastikan bahwa ekonomi yang diinvestasikan tidak mengalami masalah sosial yang dapat memengaruhi stabilitas investasi.
Dengan mengamati dan mempertimbangkan semua variabel di atas, keputusan investasi yang lebih bijak dan terukur dapat diambil, membantu meminimalkan risiko dan memaksimalkan potensi keuntungan.