Ujian Akhir Semester 2
Data Science Programming
1 Kelompok 2
Zain Iqbal Saputra (52240024)
Isnaini Nur Hasanah (52240005)
Dwi Sri Yanti M. (52240030)
Mohammad Riyadh (52240018)
Olivia Meilinda (52240011)
Luthfi Akhyar Hasibuan (52240014)
M. Alfayed Safaad (52240009)
2 Nomor 1
periksa_bilangan <- function() {
input_str <- readline("Masukkan sebuah bilangan bulat: ")
bilangan <- suppressWarnings(as.integer(input_str))
if (is.na(bilangan)) {
cat("Input tidak valid. Harap masukkan bilangan bulat.\n")
return()
}
if (bilangan > 0) {
cat("Bilangan tersebut adalah POSITIF.\n")
if (bilangan %% 2 == 0) {
cat("Bilangan tersebut adalah GENAP.\n")
if (bilangan %% 4 == 0) {
cat("Bilangan tersebut juga merupakan kelipatan 4.\n")
}
} else {
cat("Bilangan tersebut adalah GANJIL.\n")
}
} else if (bilangan < 0) {
cat("Bilangan tersebut adalah NEGATIF.\n")
} else {
cat("Bilangan tersebut adalah NOL.\n")
}
}
# Loop utama untuk mengulang program
repeat {
periksa_bilangan()
ulangi <- tolower(readline("\nApakah Anda ingin memeriksa bilangan lain? (ya/tidak): "))
if (ulangi != "ya") {
cat("Terima kasih telah menggunakan program ini.\n")
break
}
}## Masukkan sebuah bilangan bulat:
## Input tidak valid. Harap masukkan bilangan bulat.
##
## Apakah Anda ingin memeriksa bilangan lain? (ya/tidak):
## Terima kasih telah menggunakan program ini.
3 Nomor 2
# Fungsi untuk menghitung statistik deskriptif dari satu vektor
hitung_statistik_satu <- function(data) {
if (length(data) == 0) {
return(list(
rata_rata = NA,
median = NA,
standar_deviasi = NA
))
}
list(
rata_rata = mean(data),
median = median(data),
standar_deviasi = if (length(data) > 1) sd(data) else 0
)
}
# Fungsi untuk menghitung statistik dari dua vektor
hitung_statistik_dua <- function(daftar1, daftar2) {
hasil1 <- hitung_statistik_satu(daftar1)
hasil2 <- hitung_statistik_satu(daftar2)
list(
daftar1 = hasil1,
daftar2 = hasil2
)
}
# Fungsi untuk menampilkan statistik dan daftar angka
tampilkan_statistik <- function(nama, statistik, data) {
cat(paste0("\nStatistik untuk ", nama, ":\n"))
cat("Daftar angka: ", paste(data, collapse = ", "), "\n")
if (is.na(statistik$rata_rata)) {
cat("- Rata-rata: Data tidak tersedia\n")
} else {
cat("- Rata-rata: ", round(statistik$rata_rata, 2), "\n")
cat("- Median: ", round(statistik$median, 2), "\n")
cat("- Standar Deviasi: ", round(statistik$standar_deviasi, 2), "\n")
}
}
# Contoh data pengganti input interaktif
daftar1 <- c(12, 15, 18, 20, 25)
daftar2 <- c(30, 28, 35, 40, 45)
# Jalankan analisis
hasil <- hitung_statistik_dua(daftar1, daftar2)
# Tampilkan hasil
tampilkan_statistik("Daftar 1", hasil$daftar1, daftar1)##
## Statistik untuk Daftar 1:
## Daftar angka: 12, 15, 18, 20, 25
## - Rata-rata: 18
## - Median: 18
## - Standar Deviasi: 4.95
##
## Statistik untuk Daftar 2:
## Daftar angka: 30, 28, 35, 40, 45
## - Rata-rata: 35.6
## - Median: 35
## - Standar Deviasi: 7.02
4 Nomor 3
4.1 Data Collection
4.2 Data Cleaning
4.2.1 Handling Missing Values
4.2.2 Removing Dupicate
4.2.3 Fixing Text Formatting Issues
4.2.4 Handling Outliers
4.2.5 Normalize
4.2.6 Standardize
4.2.7 Ensure Dataset
4.3 Data Transformation
4.3.1 Temporal Transformation
4.3.1.1 Lag, Diff, Rolling
4.3.1.2 Extract Date
4.3.1.3 Cumulative Values
4.3.2 Distribution Transformation
4.3.2.1 Log Transforms
4.3.2.2 Box-Cox
4.3.3 Scalling & Normalization
4.3.4 Categorical Encoding
4.3.4.1 One-hot Encoding
4.3.4.2 Frequency Encoding
4.3.5 Feature Engginering
4.3.6 Outlier Handling
4.3.6.1 Z-Score Method
4.3.6.2 IQR Method
4.3.7 Discretization
4.3.7.1 Fixed-Width Binning
4.3.8 Quantile Binning
4.3.8.1 Custom Binning
4.3.9 Seasonality
4.3.9.1 Annual Seasonality
4.3.9.2 Linearity Over Time
4.3.9.3 Exponential Trends
4.4 Statistik Deskriptif
4.5 Visualisasi
4.5.1 Rata-Rata Glukosa per Bulan (2020-2024)
Berdasarkan visualisasi ini menunjukkan tren rata-rata kadar glukosa pasien per bulan dari tahun 2020 hingga awal 2025. Secara umum, terlihat adanya fluktuasi bulanan yang cukup signifikan, namun dengan kecenderungan peningkatan bertahap sejak pertengahan 2022 hingga 2024. Di beberapa bulan awal 2020 dan akhir 2024, kadar glukosa bulanan mencapai nilai puncak di atas 110, yang mengindikasikan potensi risiko prediabetes atau diabetes pada sebagian pasien. Sebaliknya, beberapa penurunan drastis juga terlihat, namun bersifat sementara.
Tren yang meningkat secara bertahap ini perlu menjadi perhatian karena dapat mencerminkan perubahan pola makan, aktivitas fisik, atau faktor risiko kesehatan masyarakat lainnya dari waktu ke waktu. Jika pola ini berlanjut, diperkirakan bahwa rata-rata kadar glukosa pasien dapat terus meningkat di masa depan, meningkatkan potensi beban penyakit metabolik.
4.5.2 Distribusi Usia dari Tahun 2020 ke 2025
Berdasarkan visualisasi ini menunjukkan bahwa rata-rata tekanan darah relatif tinggi di seluruh kelompok usia, termasuk pada kelompok usia muda (di bawah 30 tahun). Fakta ini mengindikasikan bahwa tekanan darah tinggi bukan lagi masalah yang hanya dialami oleh lansia, melainkan mulai muncul sejak usia produktif. Kondisi ini perlu menjadi perhatian karena tekanan darah tinggi di usia muda dapat meningkatkan risiko penyakit kardiovaskular di kemudian hari. Oleh karena itu, penting untuk menerapkan pola hidup sehat lebih awal, termasuk menjaga pola makan, aktivitas fisik, dan pemantauan tekanan darah secara rutin guna mencegah komplikasi kesehatan jangka panjang. Fenomena ini juga bisa mencerminkan perubahan gaya hidup masyarakat modern yang kurang bergerak dan mengonsumsi makanan tinggi garam atau lemak. Jika tren ini terus berlanjut, beban sistem kesehatan di masa depan bisa meningkat akibat lebih banyaknya kasus hipertensi dini. Upaya promotif dan preventif melalui edukasi kesehatan di usia sekolah dan kuliah menjadi sangat penting untuk membentuk kesadaran sejak dini.
4.5.3 Distribusi Lokasi Pasien
Visualisasi ini menunjukkan distribusi geografis asal kota para pasien, dengan indikasi bahwa kota-kota besar seperti Surabaya dan Jakarta memiliki jumlah pasien yang lebih tinggi dibandingkan kota lainnya. Hal ini dapat disebabkan oleh dua faktor utama: kepadatan populasi yang lebih tinggi di kota-kota metropolitan, serta gaya hidup urban yang cenderung kurang sehat, seperti pola makan cepat saji, stres tinggi, dan kurang aktivitas fisik. Temuan ini menjadi penting karena menunjukkan bahwa beban kesehatan masyarakat cenderung terkonsentrasi di wilayah perkotaan. Jika tren ini terus berlanjut tanpa intervensi, jumlah pasien dari kota-kota besar berpotensi meningkat di masa depan. Oleh karena itu, kebijakan kesehatan masyarakat perlu difokuskan lebih besar pada kota-kota besar dengan strategi promotif dan preventif yang disesuaikan. Pemerintah dan institusi kesehatan dapat memanfaatkan data ini untuk merancang program intervensi lokal seperti kampanye gaya hidup sehat, screening rutin, dan peningkatan fasilitas kesehatan di area berisiko tinggi. Selain itu, tren ini juga membuka peluang riset lebih lanjut terkait pengaruh lingkungan urban terhadap kesehatan masyarakat jangka panjang.
4.5.4 Rata-Rata Tekanan Darah Berdasarkan Kondisi Kesehatan per Tahun
Berdasarkan visualisasi ini menggambarkan rata-rata tekanan darah pasien berdasarkan kondisi kesehatan untuk masing-masing tahun, memberikan gambaran bagaimana kondisi tertentu berkorelasi dengan tekanan darah. Terlihat bahwa pasien dengan Diabetes mencatat rata-rata tekanan darah tertinggi, yakni melebihi 126 mmHg, menunjukkan adanya keterkaitan antara kadar gula darah yang tinggi dan peningkatan tekanan darah, yang bisa memperparah risiko komplikasi kardiovaskular. Pasien dengan Hypertension juga memiliki rata-rata tekanan darah tinggi, berada di atas 123 mmHg, yang sesuai dengan diagnosisnya, dan menunjukkan pentingnya kontrol berkelanjutan terhadap tekanan darah. Sementara itu, kelompok Cardiovascular Disease dan Obesity memiliki rata-rata tekanan darah yang juga cukup tinggi, masing-masing sekitar 121 mmHg dan 117 mmHg, yang dapat mengindikasikan bahwa tekanan darah berperan sebagai faktor pendukung dalam perkembangan penyakit-penyakit tersebut. Sebaliknya, kelompok **Healthy menunjukkan rata-rata tekanan darah terendah, yakni sekitar 116 mmHg, sesuai dengan ekspektasi dari kondisi kesehatan normal. Dari data ini, kondisi kesehatan pasien menunjukkan tren tekanan darah yang konsisten dengan tingkat risiko penyakit terkait. Jika tren ini berlanjut dan tidak ada intervensi yang signifikan terhadap pola hidup pasien, maka dapat diprediksi bahwa prevalensi tekanan darah tinggi akan terus meningkat, khususnya pada kelompok dengan penyakit metabolik seperti diabetes dan obesitas. Oleh karena itu, upaya preventif melalui edukasi kesehatan, pengelolaan diet, dan peningkatan aktivitas fisik menjadi sangat penting untuk mengendalikan tekanan darah dan menekan risiko penyakit kronis dimasa mendatang.
4.5.5 Distribusi Kondisi Kesehatan
Berdasarkan visualisasi pie chart ini menggambarkan distribusi kondisi kesehatan pasien dalam lima kategori utama, yaitu Hypertension, Healthy, Obesity, Diabetes, dan Cardiovascular Disease. Dari distribusi yang ditampilkan, terlihat bahwa Hypertension (25%) merupakan kondisi paling dominan, disusul oleh pasien yang tergolong sehat (21%), kemudian Obesity (19,6%), Diabetes (17,8%), dan yang paling sedikit adalah Cardiovascular Disease (16,6%). Kondisi ini menunjukkan bahwa masalah tekanan darah tinggi menjadi isu kesehatan yang paling umum di populasi saat ini, yang dapat menjadi indikator awal risiko komplikasi lain jika tidak ditangani. Meskipun kelompok “Healthy” cukup besar, persentasenya belum mendominasi, sehingga menunjukkan bahwa sebagian besar populasi berada dalam kondisi yang memerlukan perhatian medis. Jika tren gaya hidup tidak berubah, kemungkinan besar proporsi penderita hipertensi, obesitas, dan diabetes akan terus meningkat di masa mendatang, yang pada akhirnya dapat mendorong pertumbuhan kasus penyakit jantung. Oleh karena itu, visualisasi ini memberikan sinyal kuat bahwa upaya promotif dan preventif dalam bidang kesehatan perlu ditingkatkan, khususnya dalam pengendalian tekanan darah dan peningkatan kesadaran hidup sehat guna mencegah pergeseran populasi menuju kondisi kronis yang lebih berat.
4.5.6 Rata-Rata Matrix Kesehatan
Bar chart (Rata rata metrics Kesehatan)
Berdasarkan visualisasi ini menunjukkan rata-rata dari enam metrik kesehatan utama berdasarkan dataset pasien, yaitu umur, BMI, tekanan darah, kolesterol, glukosa, dan detak jantung. Terlihat bahwa rata-rata kolesterol merupakan yang tertinggi di antara semua metrik, mencapai lebih dari 200 mg/dL, yang mengindikasikan bahwa secara umum pasien berada dalam kondisi borderline tinggi atau bahkan tinggi, berisiko terhadap penyakit kardiovaskular jika tidak dikendalikan. Selanjutnya, rata-rata tekanan darah berada di atas 120 mmHg, yang merupakan ambang atas tekanan darah normal, menandakan bahwa populasi pasien cenderung berada dalam kondisi pra-hipertensi atau hipertensi ringan. Rata-rata glukosa juga berada pada kisaran 90–100 mg/dL, mendekati ambang prediabetes, sehingga perlu diwaspadai sebagai indikasi awal gangguan metabolik. Rata-rata detak jantung sekitar 70–80 denyut per menit masih tergolong normal, namun perlu dikaji lebih lanjut bila ditemukan variasi ekstrem pada kelompok tertentu. BMI rata-rata sekitar 25 menempatkan mayoritas pasien dalam kategori overweight, sementara usia rata-rata pasien sekitar 50 tahun, menunjukkan bahwa sebagian besar pasien berada pada usia rentan terhadap penyakit degeneratif. Melihat tren ini, jika tidak ada intervensi kesehatan yang signifikan seperti perubahan gaya hidup, pola makan, dan peningkatan aktivitas fisik, maka ke depan dapat diprediksi bahwa prevalensi penyakit kronis seperti hipertensi, diabetes, dan gangguan jantung akan semakin meningkat di populasi ini. Visualisasi ini memberikan gambaran penting tentang kondisi kesehatan saat ini sekaligus menjadi dasar peringatan dini bagi perumusan strategi preventif dan promosi kesehatan jangka panjang.
4.5.7 Hubungan Usia, Tekanan Darah dan BMI
Berdasarkan visualisasi bubble chart ini menggambarkan hubungan antara usia pasien, tekanan darah, dan indeks massa tubuh (BMI), dengan pewarnaan berdasarkan kategori usia. Terlihat bahwa seiring bertambahnya usia, tekanan darah cenderung meningkat, khususnya pada pasien berusia di atas 50 tahun (Kategori 3 dan 4), yang umumnya memiliki tekanan darah lebih tinggi dibanding kelompok usia lebih muda. Selain itu, ukuran gelembung—yang merepresentasikan BMI—juga tampak membesar pada kelompok usia paruh baya hingga lanjut, mengindikasikan tren peningkatan berat badan di usia tersebut. Hal ini menunjukkan bahwa individu dengan usia lebih tua tidak hanya berisiko lebih tinggi terhadap hipertensi, tetapi juga obesitas, yang keduanya merupakan faktor risiko utama untuk penyakit jantung dan metabolik. Di sisi lain, kelompok usia muda (Kategori 1) mayoritas memiliki tekanan darah dalam batas normal dan ukuran BMI yang lebih kecil, mencerminkan kondisi kesehatan yang relatif lebih baik. Dengan memperhatikan pola ini, dapat diprediksi bahwa beban kesehatan akibat hipertensi dan obesitas akan meningkat seiring dengan bertambahnya populasi usia lanjut jika tidak dilakukan intervensi sejak dini. Oleh karena itu, strategi pencegahan seperti edukasi gaya hidup sehat dan pemantauan rutin tekanan darah dan berat badan sangat penting untuk kelompok usia muda dan paruh baya, guna mengurangi risiko komplikasi kesehatan serius di masa depan.
4.5.8 Distribusi Glukosa
Berdasarkan visualisasi dari variabel Glucose menunjukkan pola distribusi yang hampir normal dengan sedikit kemiringan ke kanan (right-skewed), di mana sebagian besar nilai Glucose pasien berada dalam kisaran 85 hingga 110, dengan puncak kepadatan sekitar 90–95. Hal ini mengindikasikan bahwa mayoritas pasien memiliki kadar Glucose dalam batas normal atau sedikit di atasnya, meskipun terdapat sejumlah pasien dengan nilai Glucose yang lebih tinggi, yang berpotensi menunjukkan kondisi prediabetes atau diabetes. Sebaran data yang cukup luas (sekitar 30 hingga 150) mencerminkan adanya variasi antar individu, namun tidak terlihat adanya lonjakan ekstrem atau outlier signifikan, sehingga distribusi ini tetap relevan untuk analisis statistik lanjutan yang bersifat parametrik.
4.5.9 Persebaran Data untuk Variabel BMI, Cholesterol, dan Glucose
Berdasarkan visualisasi ini menunjukkan persebaran tiga indikator kesehatan utama: BMI, Cholesterol, dan Glucose. Dari grafik terlihat bahwa Cholesterol memiliki persebaran nilai paling luas dan jumlah outlier terbanyak, menandakan adanya variasi besar antar pasien serta potensi kasus kolesterol sangat tinggi yang perlu diwaspadai. Median kolesterol sekitar 200, namun rentang interkuartil (IQR)-nya besar, menunjukkan distribusi yang tidak merata. Glucose memiliki persebaran sedang dengan beberapa outlier, dan median sekitar 90, mengindikasikan adanya kelompok pasien dengan kadar gula darah di atas normal. Sementara itu, BMI cenderung lebih stabil, dengan persebaran sempit dan outlier yang sedikit, menunjukkan pola yang lebih konsisten. Kondisi ini mencerminkan bahwa pengelolaan kolesterol menjadi tantangan utama saat ini, karena tingkat ketidakteraturannya tinggi. Untuk ke depannya, perlu fokus pada upaya skrining dan intervensi dini terhadap pasien dengan risiko kolesterol dan gula darah tinggi. Identifikasi pola-pola ini juga membuka peluang untuk prediksi pasien berisiko, sehingga program pencegahan dan pengobatan bisa lebih tepat sasaran.
4.5.10 Distribusi Pasien per Season dan Health Condition
Visualisasi ini menggambarkan jumlah pasien berdasarkan musim dan kondisi kesehatan, menunjukkan adanya pola musiman yang signifikan. Hipertensi merupakan kondisi yang paling banyak dialami pasien di semua musim, dengan puncaknya pada musim kemarau. Pasien dengan kondisi sehat juga cukup tinggi pada musim kemarau dan musim peralihan, mengindikasikan bahwa faktor lingkungan atau gaya hidup mungkin berkontribusi. Sebaliknya, jumlah pasien dengan penyakit kardiovaskular paling rendah saat musim hujan, sedangkan diabetes justru meningkat pada musim tersebut. Obesitas terlihat relatif stabil di seluruh musim, tanpa fluktuasi signifikan. Pola-pola ini mengindikasikan adanya potensi pengaruh musim terhadap kondisi kesehatan tertentu. Ke depannya, informasi ini dapat dimanfaatkan untuk memperkuat strategi pencegahan penyakit, seperti meningkatkan kesadaran tentang risiko hipertensi saat musim kemarau dan memperkuat penanganan diabetes saat musim hujan.