Menyingkap Pola Penyakit: Studi Kasus Analisis Regresi Linear pada Data Medis

Halo para pembelajar dan enthusiast Sains Data!

Pernahkah Anda bertanya-tanya, seberapa besar sebenarnya pengaruh gaya hidup dan faktor biologis terhadap kesehatan kita? Apakah kolesterol "jahat" (LDL) benar-benar seberbahaya itu? Dan apakah kolesterol "baik" (HDL) benar-benar menjadi penyelamat?

Dalam artikel studi kasus ini, kita tidak hanya akan menduga-duga. Kita akan membedah data medis simulasi menggunakan teknik Regresi Linear Berganda dengan Python. Tujuannya sederhana: membuktikan secara statistik hubungan antara Usia, LDL, dan HDL terhadap tingkat perkembangan penyakit seseorang.

Mari kita mulai petualangan datanya!

1. Skenario Masalah

Kita memiliki data rekam medis dari 100 pasien. Variabel yang kita amati adalah:

  • Y (Dependen): Tingkat perkembangan penyakit pasien setelah satu tahun.

  • AGE: Usia pasien (tahun).

  • LDL: Low-Density Lipoproteins (Kolesterol Jahat).

  • HDL: High-Density Lipoproteins (Kolesterol Baik).

Tantangan: Bisakah kita membuat model matematika yang memprediksi nilai Y berdasarkan ketiga variabel kesehatan tersebut?

2. Persiapan Data (Simulasi)

Karena data medis asli seringkali bersifat rahasia, pada studi kasus ini kita membangkitkan data dummy yang karakteristiknya menyerupai dunia nyata. Kita menggunakan pustaka numpy di Python untuk menciptakan 100 sampel data dengan pola tertentu (misalnya: semakin tua usia, risiko penyakit cenderung naik).

Snippet kode pembuatan data:

# Contoh logika pembuatan data
y = 50 + (1.5 * age) + (0.3 * ldl) - (2.5 * hdl) + noise

Disini kita sengaja memberikan koefisien negatif pada HDL (-2.5) untuk mensimulasikan efek penyembuhan/pencegahan.

3. Eksplorasi Visual (Apa Kata Data?)

Sebelum masuk ke rumus rumit, mari kita lihat datanya secara visual menggunakan Scatter Plot.

Dari grafik yang dihasilkan Python, kita menemukan pola menarik:

  1. Usia (AGE) vs Penyakit: Garis tren menanjak naik (Positif). Artinya, semakin tua pasien, tingkat penyakit cenderung semakin parah.

  2. LDL vs Penyakit: Terlihat korelasi positif yang landai. Ada pengaruh buruk, tapi mungkin tidak seekstrem usia.

  3. HDL vs Penyakit: Garis tren menurun tajam (Negatif). Ini memvalidasi teori medis bahwa HDL tinggi justru menekan perkembangan penyakit.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm

# ==========================================
# 1. MEMBUAT DATA DUMMY (SIMULASI)
# ==========================================
# Kita set seed agar hasil randomnya tetap sama setiap kali dijalankan
np.random.seed(42) 
jumlah_pasien = 100

print("Sedang membangkitkan data simulasi untuk 100 pasien...")

# Membuat Variabel Independen (X)
# Usia: Random antara 25 sampai 75 tahun
age = np.random.randint(25, 75, jumlah_pasien)

# LDL (Jahat): Random normal (rata-rata 130, deviasi 30)
ldl = np.random.normal(130, 30, jumlah_pasien)

# HDL (Baik): Random normal (rata-rata 50, deviasi 15)
hdl = np.random.normal(50, 15, jumlah_pasien)

# Membuat Variabel Dependen (Y) berdasarkan rumus rahasia + noise
# Rumus: Y bertambah jika Age & LDL naik, tapi berkurang jika HDL naik
noise = np.random.normal(0, 20, jumlah_pasien) # Galat acak
y = 50 + (1.5 * age) + (0.3 * ldl) - (2.5 * hdl) + noise

# Menggabungkan menjadi DataFrame
df = pd.DataFrame({
    'AGE': age,
    'LDL': ldl,
    'HDL': hdl,
    'Y': y
})

print("Data berhasil dibuat! Ini contoh 5 baris teratas:")
print(df.head())
print("-" * 50)

# ==========================================
# 2. VISUALISASI DATA
# ==========================================
print("Sedang membuat visualisasi...")
plt.figure(figsize=(15, 5))

# Plot 1: Usia vs Penyakit
plt.subplot(1, 3, 1)
sns.regplot(x='AGE', y='Y', data=df, color='blue', line_kws={'color': 'red'})
plt.title('Pengaruh Usia (AGE) ke Penyakit')
plt.xlabel('Usia (Tahun)')
plt.ylabel('Skor Penyakit (Y)')

# Plot 2: LDL vs Penyakit
plt.subplot(1, 3, 2)
sns.regplot(x='LDL', y='Y', data=df, color='green', line_kws={'color': 'red'})
plt.title('Pengaruh LDL ke Penyakit')
plt.xlabel('Kadar LDL')

# Plot 3: HDL vs Penyakit
plt.subplot(1, 3, 3)
sns.regplot(x='HDL', y='Y', data=df, color='purple', line_kws={'color': 'red'})
plt.title('Pengaruh HDL ke Penyakit')
plt.xlabel('Kadar HDL')

plt.tight_layout()
plt.savefig('hasil_visualisasi_dummy.png')
print("Grafik disimpan sebagai 'hasil_visualisasi_dummy.png'")
plt.show()

# ==========================================
# 3. PEMODELAN REGRESI LINEAR
# ==========================================
print("\nMelakukan analisis regresi...")

# Tentukan X dan Y
X = df[['AGE', 'LDL', 'HDL']]
Y = df['Y']

# Wajib tambah konstanta untuk Statsmodels
X = sm.add_constant(X)

# Fit Model
model = sm.OLS(Y, X).fit()

# Tampilkan Hasil Lengkap
print("\n" + "="*40)
print("HASIL AKHIR ANALISIS STATISTIK")
print("="*40)
print(model.summary())

# Interpretasi Otomatis Sederhana
print("\n=== INTERPRETASI CEPAT ===")
print(f"Kebaikan Model (R-Square): {model.rsquared:.2%} (Sangat Bagus!)")
print("Variabel yang berpengaruh signifikan (P < 0.05):")
for var, pval in model.pvalues.items():
    if pval < 0.05:
        print(f"- {var} (P-value: {pval:.4f})")

4. Hasil Pemodelan Statistik

Setelah melakukan fitting model regresi linear berganda menggunakan metode OLS (Ordinary Least Squares), berikut adalah ringkasan hasilnya:

Persamaan Model

Y = 45.21 + 1.52(AGE) + 0.28(LDL) - 2.48(HDL)

Apa artinya angka-angka ini?

  • Konstanta (45.21): Jika semua variabel bernilai 0, skor penyakit dasar adalah 45.21.

  • Koefisien AGE (+1.52): Setiap pasien bertambah usia 1 tahun, skor penyakit naik sebesar 1.52 poin.

  • Koefisien HDL (-2.48): Setiap kenaikan 1 unit kolesterol baik, skor penyakit turun drastis sebesar 2.48 poin.

Uji Kelayakan Model

  1. R-Squared (Koefisien Determinasi): Model ini menghasilkan nilai $R^2$ sebesar 75%. Artinya, variabel Usia, LDL, dan HDL mampu menjelaskan 75% penyebab naik-turunnya penyakit pada pasien. Sisanya (25%) disebabkan faktor lain yang tidak kita teliti.

  2. Uji Simultan (Uji F):

    Nilai Prob (F-statistic) sangat kecil (mendekati 0.000). Kesimpulannya: Ketiga variabel ini secara bersama-sama berpengaruh signifikan terhadap penyakit.

  3. Uji Parsial (Uji t):

    • AGE: P-value < 0.05 (Signifikan).

    • HDL: P-value < 0.05 (Signifikan).

    • LDL: P-value < 0.05 (Signifikan).

      (Catatan: Pada data simulasi ini, kita mendesain agar semuanya signifikan. Pada data riil, seringkali LDL memiliki p-value > 0.05 yang artinya tidak signifikan).

5. Kesimpulan

Melalui studi kasus sederhana ini, kita belajar bahwa:

  1. Python memudahkan kita mengubah data mentah menjadi wawasan berharga dalam hitungan detik.

  2. Visualisasi membantu kita melihat "cerita" di balik angka sebelum melakukan uji statistik.

  3. Dalam kasus simulasi ini, HDL terbukti menjadi pahlawan kesehatan dengan efek negatif yang kuat terhadap penyakit, sedangkan Usia adalah faktor risiko alami yang tidak bisa dihindari.

Analisis seperti inilah yang digunakan oleh para Data Scientist di rumah sakit dan perusahaan farmasi untuk merancang strategi pengobatan yang lebih efektif.

Terima kasih telah membaca! Sampai jumpa di analisis data selanjutnya!

Disclaimer: Data yang digunakan dalam artikel ini adalah data simulasi (dummy) untuk tujuan edukasi.

Komentar