tugas Mat Aktuaria Minggu ke-3

dinda

2026-02-19

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
library(ggplot2)
# ==============================================
# DATA MAHASISWA
# ==============================================
set.seed(123)
data_mahasiswa <- data.frame(
  nama = paste0("Mahasiswa_", 1:50),
  usia = sample(18:30, 50, replace = TRUE),
  gender = sample(c("L", "P"), 50, replace = TRUE, prob = c(0.5, 0.5)),
  merokok = sample(c("Ya", "Tidak"), 50, replace = TRUE, prob = c(0.3, 0.7)),
  harapan_hidup = rnorm(50, mean = 75, sd = 5)
)
cat("\n1. COMPLETE & CURTATE LIFE EXPECTANCY\n")
## 
## 1. COMPLETE & CURTATE LIFE EXPECTANCY
data_mahasiswa <- data_mahasiswa %>%
  mutate(
    complete_life = harapan_hidup - usia,
    curtate_life = floor(complete_life)
  )

print(data_mahasiswa %>%
        select(nama, usia, gender, merokok, harapan_hidup,
               complete_life, curtate_life))
##            nama usia gender merokok harapan_hidup complete_life curtate_life
## 1   Mahasiswa_1   20      L      Ya      75.02882      55.02882           55
## 2   Mahasiswa_2   20      P   Tidak      76.92640      56.92640           56
## 3   Mahasiswa_3   27      P   Tidak      73.14670      46.14670           46
## 4   Mahasiswa_4   19      P      Ya      78.22188      59.22188           59
## 5   Mahasiswa_5   23      L      Ya      73.89757      50.89757           50
## 6   Mahasiswa_6   28      P   Tidak      76.65891      48.65891           48
## 7   Mahasiswa_7   22      L   Tidak      80.48420      58.48420           58
## 8   Mahasiswa_8   21      L      Ya      77.17591      56.17591           56
## 9   Mahasiswa_9   23      L   Tidak      73.37034      50.37034           50
## 10 Mahasiswa_10   26      P   Tidak      80.74404      54.74404           54
## 11 Mahasiswa_11   27      L   Tidak      79.96752      52.96752           52
## 12 Mahasiswa_12   28      L   Tidak      77.74198      49.74198           49
## 13 Mahasiswa_13   22      L   Tidak      76.19366      54.19366           54
## 14 Mahasiswa_14   20      P   Tidak      71.86047      51.86047           51
## 15 Mahasiswa_15   28      P   Tidak      81.80326      53.80326           53
## 16 Mahasiswa_16   26      P      Ya      71.99870      45.99870           45
## 17 Mahasiswa_17   29      P   Tidak      85.93666      56.93666           56
## 18 Mahasiswa_18   26      L   Tidak      82.66305      56.66305           56
## 19 Mahasiswa_19   26      P   Tidak      73.82150      47.82150           47
## 20 Mahasiswa_20   30      P   Tidak      69.86790      39.86790           39
## 21 Mahasiswa_21   20      P   Tidak      71.44797      51.44797           51
## 22 Mahasiswa_22   25      L      Ya      76.28442      51.28442           51
## 23 Mahasiswa_23   27      P   Tidak      73.76654      46.76654           46
## 24 Mahasiswa_24   24      L      Ya      73.26229      49.26229           49
## 25 Mahasiswa_25   27      P   Tidak      70.24191      43.24191           43
## 26 Mahasiswa_26   26      P   Tidak      74.77486      48.77486           48
## 27 Mahasiswa_27   20      L      Ya      71.07548      51.07548           51
## 28 Mahasiswa_28   21      L      Ya      66.66029      45.66029           45
## 29 Mahasiswa_29   18      L      Ya      73.09887      55.09887           55
## 30 Mahasiswa_30   28      P   Tidak      79.59498      51.59498           51
## 31 Mahasiswa_31   24      P   Tidak      72.12327      48.12327           48
## 32 Mahasiswa_32   22      L   Tidak      78.03982      56.03982           56
## 33 Mahasiswa_33   29      P   Tidak      66.91059      37.91059           37
## 34 Mahasiswa_34   27      L   Tidak      74.72219      47.72219           47
## 35 Mahasiswa_35   30      P      Ya      77.59704      47.59704           47
## 36 Mahasiswa_36   24      P   Tidak      76.50577      52.50577           52
## 37 Mahasiswa_37   26      L   Tidak      75.52838      49.52838           49
## 38 Mahasiswa_38   26      P   Tidak      71.79647      45.79647           45
## 39 Mahasiswa_39   27      P   Tidak      70.75148      43.75148           43
## 40 Mahasiswa_40   24      L      Ya      69.87936      45.87936           45
## 41 Mahasiswa_41   28      L      Ya      75.58823      47.58823           47
## 42 Mahasiswa_42   29      P   Tidak      70.26263      41.26263           41
## 43 Mahasiswa_43   22      P   Tidak      72.54721      50.54721           50
## 44 Mahasiswa_44   24      L   Tidak      73.71954      49.71954           49
## 45 Mahasiswa_45   22      P   Tidak      84.21931      62.21931           62
## 46 Mahasiswa_46   28      L   Tidak      71.74025      43.74025           43
## 47 Mahasiswa_47   23      L   Tidak      76.17693      53.17693           53
## 48 Mahasiswa_48   26      L   Tidak      75.38980      49.38980           49
## 49 Mahasiswa_49   19      P   Tidak      70.19072      51.19072           51
## 50 Mahasiswa_50   30      P   Tidak      74.64346      44.64346           44
cat("\n2. RATA-RATA HARAPAN HIDUP BERDASARKAN GENDER\n")
## 
## 2. RATA-RATA HARAPAN HIDUP BERDASARKAN GENDER
rata_gender <- data_mahasiswa %>%
  group_by(gender) %>%
  summarize(
    jumlah = n(),
    rata_harapan_hidup = mean(harapan_hidup),
    rata_complete = mean(complete_life),
    rata_curtate = mean(curtate_life),
    .groups = "drop"
  )

print(rata_gender)
## # A tibble: 2 × 5
##   gender jumlah rata_harapan_hidup rata_complete rata_curtate
##   <chr>   <int>              <dbl>         <dbl>        <dbl>
## 1 L          23               75.1          51.3         50.8
## 2 P          27               74.8          49.2         48.6
cat("\n3. UJI HIPOTESIS PERBEDAAN HARAPAN HIDUP GENDER\n")
## 
## 3. UJI HIPOTESIS PERBEDAAN HARAPAN HIDUP GENDER
cat("   H0: Tidak ada perbedaan rata-rata harapan hidup\n")
##    H0: Tidak ada perbedaan rata-rata harapan hidup
cat("   H1: Ada perbedaan rata-rata harapan hidup\n")
##    H1: Ada perbedaan rata-rata harapan hidup
uji_t <- t.test(harapan_hidup ~ gender, data = data_mahasiswa)
print(uji_t)
## 
##  Welch Two Sample t-test
## 
## data:  harapan_hidup by gender
## t = 0.31191, df = 47.353, p-value = 0.7565
## alternative hypothesis: true difference in means between group L and group P is not equal to 0
## 95 percent confidence interval:
##  -1.976788  2.702411
## sample estimates:
## mean in group L mean in group P 
##        75.11691        74.75410
if (uji_t$p.value < 0.05) {
  cat("\nKesimpulan: Tolak H0 (perbedaan signifikan)\n")
} else {
  cat("\nKesimpulan: Gagal menolak H0 (tidak signifikan)\n")
}
## 
## Kesimpulan: Gagal menolak H0 (tidak signifikan)
cat("\n4. HISTOGRAM COMPLETE LIFE EXPECTANCY\n")
## 
## 4. HISTOGRAM COMPLETE LIFE EXPECTANCY
ggplot(data_mahasiswa, aes(x = complete_life)) +
  geom_histogram(bins = 15, alpha = 0.8) +
  labs(
    title = "Histogram Complete Life Expectancy",
    x = "Complete Life Expectancy (tahun)",
    y = "Frekuensi"
  ) +
  theme_minimal()

cat("\n5. BOXPLOT HARAPAN HIDUP BERDASARKAN STATUS MEROKOK\n")
## 
## 5. BOXPLOT HARAPAN HIDUP BERDASARKAN STATUS MEROKOK
ggplot(data_mahasiswa, aes(x = merokok, y = harapan_hidup)) +
  geom_boxplot(alpha = 0.8) +
  labs(
    title = "Boxplot Harapan Hidup vs Status Merokok",
    x = "Status Merokok",
    y = "Harapan Hidup (tahun)"
  ) +
  theme_minimal()

cat("\n6. SCATTER PLOT USIA vs SISA HARAPAN HIDUP\n")
## 
## 6. SCATTER PLOT USIA vs SISA HARAPAN HIDUP
ggplot(data_mahasiswa, aes(x = usia, y = complete_life)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(
    title = "Hubungan Usia dengan Sisa Harapan Hidup",
    x = "Usia (tahun)",
    y = "Sisa Harapan Hidup (tahun)"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'