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'
