#soal nomer 1
# Fungsi s(x)
s1 <- function(x) -cos(x)
s2 <- function(x) exp(-x)
s3 <- function(x) 1 / (1 + x)
# Turunan s(x)
s1_t <- function(x) sin(x)
s2_t <- function(x) -exp(-x)
s3_t <- function(x) -1 / (1 + x)^2
# Fungsi F(x)
F1 <- function(x) 1 - s1(x)
F2 <- function(x) 1 - s2(x)
F3 <- function(x) x / (1 + x)
# Fungsi f(x)
f1 <- function(x) s1_t(x) * (-1)
f2 <- function(x) exp(-x)
f3 <- function(x) 1 / (1 + x)^2
# Fungsi mu(x)
mu1 <- function(x) -s1_t(x) / s1(x)
mu2 <- function(x) 1
mu3 <- function(x) 1 / (1 + x)
# test
x <- 8
cat("jawaban nomer 1a = F1(2) =", F1(x), "f1(2) =", f1(x), "mu1(2) =", mu1(x), "\n")
## jawaban nomer 1a = F1(2) = 0.8545 f1(2) = -0.9893582 mu1(2) = -6.799711
cat("jawaban nomer 1b = F2(2) =", F2(x), "f2(2) =", f2(x), "mu2(2) =", mu2(x), "\n")
## jawaban nomer 1b = F2(2) = 0.9996645 f2(2) = 0.0003354626 mu2(2) = 1
cat("jawaban nomer 1c = F3(2) =", F3(x), "f3(2) =", f3(x), "mu3(2) =", mu3(x), "\n")
## jawaban nomer 1c = F3(2) = 0.8888889 f3(2) = 0.01234568 mu3(2) = 0.1111111
#Soal nomer 2
# Parameter
B <- 0.0001
C <- 1.09
l0 <- 1e6
age <- 0:60
# Fungsi survival l(x)
lx <- function(x) {
l0 * exp(-B / log(C) * (C^x - 1))
}
# Hitung nilai l(x) untuk setiap umur
lx_vals <- lx(age)
# Hitung d(x) = l(x) - l(x+1)
dx_vals <- c(diff(-lx_vals), lx_vals[length(lx_vals)])
# Hitung q(x) = d(x)/l(x)
qx_vals <- dx_vals / lx_vals
qx_vals[length(qx_vals)] <- 1 # Anggap semua meninggal setelah usia maksimum
# Hitung Lx (jumlah orang yang hidup di antara x dan x+1)
Lx_vals <- (lx_vals + c(lx_vals[-1], 0)) / 2
# Hitung Tx (total tahun yang masih akan dijalani)
Tx_vals <- rev(cumsum(rev(Lx_vals)))
# Hitung ex = Tx / lx
ex_vals <- Tx_vals / lx_vals
# Buat data frame
life_table <- data.frame(
x = age,
lx = round(lx_vals),
dx = round(dx_vals),
qx = round(qx_vals, 5),
Lx = round(Lx_vals),
Tx = round(Tx_vals),
ex = round(ex_vals, 2)
)
# Tampilkan tabel
print(life_table)
## x lx dx qx Lx Tx ex
## 1 0 1000000 104 0.00010 999948 58232899 58.23
## 2 1 999896 114 0.00011 999839 57232951 57.24
## 3 2 999782 124 0.00012 999720 56233113 56.25
## 4 3 999658 135 0.00014 999590 55233393 55.25
## 5 4 999523 147 0.00015 999449 54233803 54.26
## 6 5 999375 161 0.00016 999295 53234354 53.27
## 7 6 999215 175 0.00018 999127 52235059 52.28
## 8 7 999040 191 0.00019 998944 51235932 51.29
## 9 8 998849 208 0.00021 998745 50236988 50.29
## 10 9 998641 226 0.00023 998528 49238243 49.31
## 11 10 998415 247 0.00025 998291 48239715 48.32
## 12 11 998168 269 0.00027 998033 47241424 47.33
## 13 12 997899 293 0.00029 997752 46243390 46.34
## 14 13 997606 319 0.00032 997446 45245638 45.35
## 15 14 997286 348 0.00035 997112 44248192 44.37
## 16 15 996938 379 0.00038 996749 43251080 43.38
## 17 16 996559 413 0.00041 996353 42254331 42.40
## 18 17 996146 450 0.00045 995921 41257978 41.42
## 19 18 995696 490 0.00049 995451 40262057 40.44
## 20 19 995206 534 0.00054 994938 39266607 39.46
## 21 20 994671 582 0.00059 994380 38271668 38.48
## 22 21 994089 634 0.00064 993772 37277288 37.50
## 23 22 993455 691 0.00070 993110 36283515 36.52
## 24 23 992765 752 0.00076 992389 35290405 35.55
## 25 24 992012 819 0.00083 991603 34298017 34.57
## 26 25 991193 892 0.00090 990747 33306414 33.60
## 27 26 990301 972 0.00098 989815 32315667 32.63
## 28 27 989329 1058 0.00107 988800 31325852 31.66
## 29 28 988271 1152 0.00117 987695 30337051 30.70
## 30 29 987120 1254 0.00127 986493 29349356 29.73
## 31 30 985866 1365 0.00138 985183 28362863 28.77
## 32 31 984500 1486 0.00151 983758 27377680 27.81
## 33 32 983015 1617 0.00164 982206 26393923 26.85
## 34 33 981398 1759 0.00179 980518 25411716 25.89
## 35 34 979638 1914 0.00195 978681 24431199 24.94
## 36 35 977724 2082 0.00213 976683 23452517 23.99
## 37 36 975642 2265 0.00232 974510 22475834 23.04
## 38 37 973377 2462 0.00253 972146 21501325 22.09
## 39 38 970915 2677 0.00276 969576 20529179 21.14
## 40 39 968238 2909 0.00300 966783 19559603 20.20
## 41 40 965328 3161 0.00327 963748 18592819 19.26
## 42 41 962167 3434 0.00357 960450 17629072 18.32
## 43 42 958733 3729 0.00389 956868 16668622 17.39
## 44 43 955004 4048 0.00424 952980 15711753 16.45
## 45 44 950956 4393 0.00462 948759 14758773 15.52
## 46 45 946563 4765 0.00503 944180 13810014 14.59
## 47 46 941797 5167 0.00549 939214 12865834 13.66
## 48 47 936630 5600 0.00598 933830 11926621 12.73
## 49 48 931031 6065 0.00651 927998 10992790 11.81
## 50 49 924965 6566 0.00710 921682 10064792 10.88
## 51 50 918399 7104 0.00774 914847 9143110 9.96
## 52 51 911295 7681 0.00843 907454 8228264 9.03
## 53 52 903613 8299 0.00918 899464 7320810 8.10
## 54 53 895315 8959 0.01001 890836 6421346 7.17
## 55 54 886356 9663 0.01090 881525 5530510 6.24
## 56 55 876693 10413 0.01188 871487 4648985 5.30
## 57 56 866281 11209 0.01294 860676 3777498 4.36
## 58 57 855072 12053 0.01410 849045 2916822 3.41
## 59 58 843019 12944 0.01535 836547 2067777 2.45
## 60 59 830075 13883 0.01672 823134 1231230 1.48
## 61 60 816192 816192 1.00000 408096 408096 0.50
# Keterangan kolom-kolom pada life table Gompertz
cat("=== Keterangan Life Table Gompertz ===\n\n")
## === Keterangan Life Table Gompertz ===
cat("x : Umur (dalam tahun)\n")
## x : Umur (dalam tahun)
cat("lx : Jumlah individu yang masih hidup pada awal umur x\n")
## lx : Jumlah individu yang masih hidup pada awal umur x
cat("dx : Jumlah individu yang meninggal antara umur x dan x+1 (dx = lx - lx+1)\n")
## dx : Jumlah individu yang meninggal antara umur x dan x+1 (dx = lx - lx+1)
cat("qx : Probabilitas meninggal antara umur x dan x+1 (qx = dx / lx)\n")
## qx : Probabilitas meninggal antara umur x dan x+1 (qx = dx / lx)
cat("Lx : Jumlah tahun hidup antara umur x dan x+1 (diasumsikan rata-rata = (lx + lx+1)/2)\n")
## Lx : Jumlah tahun hidup antara umur x dan x+1 (diasumsikan rata-rata = (lx + lx+1)/2)
cat("Tx : Jumlah total tahun yang akan dijalani oleh seluruh individu dari umur x ke atas (Tx = Σ Lx dari x ke akhir)\n")
## Tx : Jumlah total tahun yang akan dijalani oleh seluruh individu dari umur x ke atas (Tx = Σ Lx dari x ke akhir)
cat("ex : Harapan hidup pada umur x (ex = Tx / lx)\n")
## ex : Harapan hidup pada umur x (ex = Tx / lx)
#Soal nomer 3
# PARAMETER DASAR
delta <- 0.05
v <- function(t) exp(-delta * t)
interest_rate <- exp(delta) - 1 # ekuivalen suku bunga tahunan diskrit
lx <- function(x) 100 - x
px <- function(x) ifelse(x < 99, lx(x + 1) / lx(x), 0)
# 3a) Anuitas seumur hidup
a_kontinu <- function(x) {
integrate(function(t) v(t) * lx(x + t) / lx(x), lower = 0, upper = 100 - x)$value
}
a_diskrit <- function(x) {
sum(sapply(0:(99 - x), function(k) (1 / (1 + interest_rate))^k * lx(x + k) / lx(x)))
}
# 3b) Anuitas berjangka 15 tahun dari usia 45
a_term_kontinu <- function(x, n) {
integrate(function(t) v(t) * lx(x + t) / lx(x), lower = 0, upper = n)$value
}
a_term_diskrit <- function(x, n) {
sum(sapply(0:(n - 1), function(k) (1 / (1 + interest_rate))^k * lx(x + k) / lx(x)))
}
# 3c) Anuitas 25 tahun tertunda 5 tahun dari usia 75
a_deferred_kontinu <- function(x, m, n) {
integrate(function(t) v(t + m) * lx(x + t + m) / lx(x), lower = 0, upper = n)$value
}
a_deferred_diskrit <- function(x, m, n) {
sum(sapply(0:(n - 1), function(k) (1 / (1 + interest_rate))^(k + m) * lx(x + k + m) / lx(x)))
}
# 3d) Anuitas pasti dan berjangka 15 tahun dari usia 55
a_term_certain_kontinu <- function(x, n) {
certain <- integrate(function(t) v(t), lower = 0, upper = n)$value
life_part <- integrate(function(t) v(t) * lx(x + t) / lx(x), lower = 0, upper = n)$value
certain + life_part
}
a_term_certain_diskrit <- function(x, n) {
certain <- sum(sapply(0:(n - 1), function(k) (1 / (1 + interest_rate))^k))
life_part <- sum(sapply(0:(n - 1), function(k) ((1 / (1 + interest_rate))^k) * (lx(x + k) / lx(x))))
certain + life_part
}
# CETAK HASIL
cat("=== Hasil Perhitungan Anuitas ===\n\n")
## === Hasil Perhitungan Anuitas ===
# 3a)
cat("3a) Anuitas jiwa seumur hidup (x = 0)\n")
## 3a) Anuitas jiwa seumur hidup (x = 0)
cat(" Model kontinu :", round(a_kontinu(0), 4), "\n")
## Model kontinu : 16.027
cat(" Model diskrit :", round(a_diskrit(0), 4), "\n\n")
## Model diskrit : 16.5319
# 3b)
cat("3b) Anuitas 15 tahun (x = 45)\n")
## 3b) Anuitas 15 tahun (x = 45)
cat(" Model kontinu :", round(a_term_kontinu(45, 15), 4), "\n")
## Model kontinu : 9.2919
cat(" Model diskrit :", round(a_term_diskrit(45, 15), 4), "\n\n")
## Model diskrit : 9.6236
# 3c)
cat("3c) Anuitas 25 tahun tertunda 5 tahun (x = 75)\n")
## 3c) Anuitas 25 tahun tertunda 5 tahun (x = 75)
cat(" Model kontinu :", round(a_deferred_kontinu(75, 5, 25), 4), "\n")
## Model kontinu : 4.4626
cat(" Model diskrit :", round(a_deferred_diskrit(75, 5, 25), 4), "\n\n")
## Model diskrit : 4.8011
# 3d)
cat("3d) Anuitas pasti dan berjangka 15 tahun (x = 55)\n")
## 3d) Anuitas pasti dan berjangka 15 tahun (x = 55)
cat(" Model kontinu :", round(a_term_certain_kontinu(55, 15), 4), "\n")
## Model kontinu : 19.5644
cat(" Model diskrit :", round(a_term_certain_diskrit(55, 15),4),"\n")
## Model diskrit : 20.1768