Suatu lembaga keuangan menawarkan sebuah produk investasi dengan ketentuan sebagai berikut: • Nasabah memulai investasi pada usia (𝑢) minimum 25 tahun dan maksimum 40 tahun. • Dana yang disetor (𝐷) konstan per bulannya minimal Rp 100 ribu dan maksimal Rp 1 juta serta harus kelipatan dari Rp 100 ribu. • Bunga investasi (𝑖) konstan sebesar 5% per bulan. • Biaya investasi (𝑏) konstan sebesar Rp 10 ribu setiap akhir bulan sebelum dikenai pajak. • Pajak investasi (𝑝) konstan sebesar 2% setiap akhir bulan dari saldo dana hasil investasi setelah dikurangi biaya investasi. • Ketika nasabah mencapai usia 50 tahun, investasi akan dihentikan dan seluruh dana hasil investasi akan diberikan kepada nasabah. Misalkan 𝐻(𝑡) adalah dana hasil investasi setelah 𝑡 bulan, maka 𝐻(𝑡) = ((𝐻(𝑡 − 1) + 𝐷)(1 + 𝑖) − 𝑏)(1 − 𝑝) dengan 𝐻(0) = 0 dan 𝑡 = 1, 2, …, 12(50 − 𝑢).
hinv <- function(u, D) {
H <- 0
for (t in 1:(12*(50-u))) {
H <- ((H + D)*(1 + 0.05) - 10)*(1 - 0.02)
}
return(H)
}
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.2.3
# Create empty data frame
hasil <- data.frame(usia = 25:40)
for (D in seq(100000, 1000000, by = 100000)) {
colname <- paste0(D/1000, "_ribu")
hasil[[colname]] <- NA
for (u in 25:40) {
H <- hinv(u, D)
row <- u - 24
col <- (D/100000) + 1
hasil[row, col] <- H
}
}
# Rename columns
colnames(hasil)[-1] <- c("seratus_ribu", "dua_ratus_ribu", "tiga_ratus_ribu", "empat_ratus_ribu", "lima_ratus_ribu", "enam_ratus_ribu", "tujuh_ratus_ribu", "delapan_ratus_ribu", "sembilan_ratus_ribu", "satu_juta")
# Print and save data frame
print(hasil)
## usia seratus_ribu dua_ratus_ribu tiga_ratus_ribu empat_ratus_ribu
## 1 25 18815101073 37631994231 56448887388 75265780546
## 2 26 13350223699 26701718970 40053214240 53404709510
## 3 27 9472329785 18945561783 28418793781 37892025779
## 4 28 6720564250 13441768615 20162972980 26884177345
## 5 29 4767902902 9536259933 14304616964 19072973995
## 6 30 3382288360 6764898873 10147509386 13530119899
## 7 31 2399051988 4798332479 7197612970 9596893461
## 8 32 1701344413 3402850874 5104357334 6805863795
## 9 33 1206248956 2412612803 3618976651 4825340498
## 10 34 854927686 1709936801 2564945916 3419955031
## 11 35 605629024 1211315733 1817002441 2422689150
## 12 36 428725922 857492678 1286259434 1715026191
## 13 37 303194932 606418742 909642553 1212866363
## 14 38 214117753 428255900 642394047 856532193
## 15 39 150908311 301830995 452753679 603676363
## 16 40 106054694 212119490 318184286 424249082
## lima_ratus_ribu enam_ratus_ribu tujuh_ratus_ribu delapan_ratus_ribu
## 1 94082673704 112899566862 131716460020 150533353178
## 2 66756204781 80107700051 93459195321 106810690592
## 3 47365257776 56838489774 66311721772 75784953770
## 4 33605381710 40326586075 47047790440 53768994805
## 5 23841331026 28609688057 33378045088 38146402119
## 6 16912730412 20295340925 23677951438 27060561951
## 7 11996173952 14395454443 16794734933 19194015424
## 8 8507370256 10208876717 11910383178 13611889639
## 9 6031704346 7238068193 8444432041 9650795888
## 10 4274964146 5129973261 5984982377 6839991492
## 11 3028375858 3634062567 4239749275 4845435984
## 12 2143792947 2572559704 3001326460 3430093217
## 13 1516090173 1819313984 2122537794 2425761604
## 14 1070670340 1284808487 1498946634 1713084781
## 15 754599047 905521731 1056444415 1207367099
## 16 530313878 636378674 742443470 848508266
## sembilan_ratus_ribu satu_juta
## 1 169350246335 188167139493
## 2 120162185862 133513681132
## 3 85258185768 94731417766
## 4 60490199170 67211403535
## 5 42914759150 47683116181
## 6 30443172464 33825782977
## 7 21593295915 23992576406
## 8 15313396100 17014902561
## 9 10857159736 12063523583
## 10 7695000607 8550009722
## 11 5451122693 6056809401
## 12 3858859973 4287626730
## 13 2728985415 3032209225
## 14 1927222928 2141361075
## 15 1358289783 1509212467
## 16 954573061 1060637857
write.xlsx(hasil, "hasil_investasi.xlsx")
Dengan memanfaatkan data frame yang telah dibuat pada bagian (b), kemudian membuat sebuah gabungan bar charts
library(ggplot2)
# Melt data frame to long format
hasil_long <- reshape2::melt(hasil, id.vars = "usia", variable.name = "setoran", value.name = "dana")
# Create bar chart
ggplot(hasil_long, aes(x = usia, y = dana, fill = setoran)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = c("#FF5733", "#FFC300", "#DAF7A6", "#C70039", "#900C3F", "#581845", "#00FFFF", "#FF00FF", "#008000", "#0000FF")) +
labs(title = "Besarnya Dana Hasil Investasi Saat Nasabah Berusia 50 Tahun",
x = "Usia Saat Memulai Investasi",
y = "Dana Hasil Investasi (dalam rupiah)",
fill = "Setoran per Bulan") +
scale_y_continuous(labels = scales::comma) +
theme_classic()