# ==============================================
#DATA MAHASISWA
# ==============================================
library(tidyverse)
library(ggplot2)
library(dplyr)

# Set seed untuk reproduksibilitas
set.seed(123)

# Fungsi untuk membuat data simulasi harapan hidup
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)
)

# Tampilkan struktur data
data_mahasiswa
##            nama usia gender merokok harapan_hidup
## 1   Mahasiswa_1   20      L      Ya      75.02882
## 2   Mahasiswa_2   20      P   Tidak      76.92640
## 3   Mahasiswa_3   27      P   Tidak      73.14670
## 4   Mahasiswa_4   19      P      Ya      78.22188
## 5   Mahasiswa_5   23      L      Ya      73.89757
## 6   Mahasiswa_6   28      P   Tidak      76.65891
## 7   Mahasiswa_7   22      L   Tidak      80.48420
## 8   Mahasiswa_8   21      L      Ya      77.17591
## 9   Mahasiswa_9   23      L   Tidak      73.37034
## 10 Mahasiswa_10   26      P   Tidak      80.74404
## 11 Mahasiswa_11   27      L   Tidak      79.96752
## 12 Mahasiswa_12   28      L   Tidak      77.74198
## 13 Mahasiswa_13   22      L   Tidak      76.19366
## 14 Mahasiswa_14   20      P   Tidak      71.86047
## 15 Mahasiswa_15   28      P   Tidak      81.80326
## 16 Mahasiswa_16   26      P      Ya      71.99870
## 17 Mahasiswa_17   29      P   Tidak      85.93666
## 18 Mahasiswa_18   26      L   Tidak      82.66305
## 19 Mahasiswa_19   26      P   Tidak      73.82150
## 20 Mahasiswa_20   30      P   Tidak      69.86790
## 21 Mahasiswa_21   20      P   Tidak      71.44797
## 22 Mahasiswa_22   25      L      Ya      76.28442
## 23 Mahasiswa_23   27      P   Tidak      73.76654
## 24 Mahasiswa_24   24      L      Ya      73.26229
## 25 Mahasiswa_25   27      P   Tidak      70.24191
## 26 Mahasiswa_26   26      P   Tidak      74.77486
## 27 Mahasiswa_27   20      L      Ya      71.07548
## 28 Mahasiswa_28   21      L      Ya      66.66029
## 29 Mahasiswa_29   18      L      Ya      73.09887
## 30 Mahasiswa_30   28      P   Tidak      79.59498
## 31 Mahasiswa_31   24      P   Tidak      72.12327
## 32 Mahasiswa_32   22      L   Tidak      78.03982
## 33 Mahasiswa_33   29      P   Tidak      66.91059
## 34 Mahasiswa_34   27      L   Tidak      74.72219
## 35 Mahasiswa_35   30      P      Ya      77.59704
## 36 Mahasiswa_36   24      P   Tidak      76.50577
## 37 Mahasiswa_37   26      L   Tidak      75.52838
## 38 Mahasiswa_38   26      P   Tidak      71.79647
## 39 Mahasiswa_39   27      P   Tidak      70.75148
## 40 Mahasiswa_40   24      L      Ya      69.87936
## 41 Mahasiswa_41   28      L      Ya      75.58823
## 42 Mahasiswa_42   29      P   Tidak      70.26263
## 43 Mahasiswa_43   22      P   Tidak      72.54721
## 44 Mahasiswa_44   24      L   Tidak      73.71954
## 45 Mahasiswa_45   22      P   Tidak      84.21931
## 46 Mahasiswa_46   28      L   Tidak      71.74025
## 47 Mahasiswa_47   23      L   Tidak      76.17693
## 48 Mahasiswa_48   26      L   Tidak      75.38980
## 49 Mahasiswa_49   19      P   Tidak      70.19072
## 50 Mahasiswa_50   30      P   Tidak      74.64346
# ==============================================
# SOAL 1. HITUNG COMPLETE & CURTATE LIFE EXPECTANCY 
# ==============================================
data_mahasiswa <- data_mahasiswa %>%
  mutate(
    complete = harapan_hidup - usia,     # Complete Life Expectancy (eₓ°)
    curtate  = floor(complete)           # Curtate Life Expectancy (eâ‚“)
  )

# Tampilkan 6 data pertama dengan kolom penting saja
print(data_mahasiswa %>%
  select(nama, usia, gender, merokok, harapan_hidup, complete, curtate))
##            nama usia gender merokok harapan_hidup complete curtate
## 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
# ==============================================
# SOAL 2. HITUNG RATA-RATA HARAPAN HIDUP BERDASARKAN GENDER
# ==============================================
rata_gender <- data_mahasiswa %>%
  group_by(gender) %>%
  summarise(
    jumlah = n(),                                        
    rata_harapan_hidup = mean(harapan_hidup, na.rm = TRUE),
    rata_complete = mean(complete, na.rm = TRUE),     
    rata_curtate = mean(curtate, na.rm = TRUE)        
  )

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
# ==============================================
# SOAL 3. UJI HIPOTESIS APAKAH ADA PERBEDAAN SIGNIFIKAN HARAPAN HIDUP ANTARA LAKI-LAKI DAN PEREMPUAN
# ==============================================
# Hipotesis
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 hipotesis (Welch Two Sample t-test)
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
# Keputusan berdasarkan p-value
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)
# ==============================================
#SOAL 4. HISTOGRAM DISTRIBUSI COMPLETE LIFE ECPECTANCY
# ==============================================
ggplot(data_mahasiswa, aes(x = complete, fill = gender)) +
  geom_histogram(alpha = 0.7, bins = 15, position = "identity") +
  labs(
    title = "Distribusi Complete Life Expectancy Mahasiswa",
    x = "Sisa Harapan Hidup (tahun)",
    y = "Frekuensi"
  ) +
  theme_minimal()

# ==============================================
# SOAL 5. BOXPLOT HARAPAN HIDUP BERDASARKAN STATUS MEROKOK
# ==============================================
ggplot(data_mahasiswa, aes(x = merokok, y = harapan_hidup, fill = merokok)) +
  geom_boxplot(alpha = 0.7) +
  labs(
    title = "Perbandingan Harapan Hidup Berdasarkan Status Merokok",
    x = "Status Merokok",
    y = "Harapan Hidup (tahun)"
  ) +
  theme_minimal()

# ==============================================
# SOAL 6. SCATTER PLOT HUBUNGAN ANTARA USIA DAN SISA HARAPAN HIDUP
# ==============================================
ggplot(data_mahasiswa, aes(x = usia, y = complete, color = gender)) +
  geom_point(size = 3, alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(
    title = "Hubungan Usia dan Sisa Harapan Hidup",
    x = "Usia (tahun)",
    y = "Sisa Harapan Hidup (tahun)"
  ) +
  theme_minimal()