# ==============================================
#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()
