Program Visualisasi Data (Univariate & Bivariate)
Saya akan menambahkan kode visualisasi ke program yang sudah kita susun sebelumnya.
Program Utama (Python - Jupyter Notebook)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Atur style visualisasi
sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['Arial', 'sans-serif']
plt.rcParams['figure.figsize'] = (10, 6)
# --- 1. Load dan Merge Data (Asumsi dari langkah sebelumnya) ---
# NOTE: Ganti {cycle} dengan siklus tahun yang Anda gunakan (misalnya, '2017-2018')
cycle = '2017-2018'
# [...] (Diasumsikan kode loading data ada di sini dan berhasil)
# [...]
# df_final = pd.merge(df_merged, df_diet2, on='SEQN', how='inner')
# --- 2. Data Cleaning & Feature Engineering (Diasumsikan dari langkah sebelumnya) ---
kolom_inti = ['SEQN', 'RIDAGEYR', 'RIAGENDR', 'BMXBMI', 'BMXWAIST', 'DR1TSODI', 'DR2TSODI']
df_bersih = df_final[kolom_inti].copy()
df_bersih['NATRIUM_RERATA'] = df_bersih[['DR1TSODI', 'DR2TSODI']].mean(axis=1)
df_bersih.drop(columns=['DR1TSODI', 'DR2TSODI'], inplace=True)
kolom_kunci_analisis = ['NATRIUM_RERATA', 'BMXBMI', 'BMXWAIST']
df_analisis = df_bersih.dropna(subset=kolom_kunci_analisis).copy()
print(f"DataFrame siap untuk visualisasi. Jumlah baris: {df_analisis.shape[0]}")
# --- 3. VISUALISASI UNIVARIATE ---
# Variabel 1: BMI (BMXBMI) - Variabel Respon
plt.figure(figsize=(10, 5))
sns.histplot(df_analisis['BMXBMI'], kde=True, bins=30, color='teal')
plt.title('Distribusi Indeks Massa Tubuh (BMI)', fontsize=16)
plt.xlabel('BMI (kg/m²)')
plt.ylabel('Frekuensi')
plt.axvline(df_analisis['BMXBMI'].mean(), color='red', linestyle='dashed', linewidth=2, label=f'Rata-rata BMI: {df_analisis["BMXBMI"].mean():.2f}')
plt.legend()
plt.show()
# Variabel 2: Rerata Natrium Harian (NATRIUM_RERATA) - Variabel Penjelas
plt.figure(figsize=(10, 5))
# Batasi sumbu x untuk visualisasi yang lebih baik (misalnya, di bawah 7000 mg)
sns.histplot(df_analisis['NATRIUM_RERATA'], kde=True, bins=50, color='darkorange')
plt.title('Distribusi Rerata Asupan Natrium Harian', fontsize=16)
plt.xlabel('Rerata Natrium Harian (mg)')
plt.ylabel('Frekuensi')
plt.xlim(0, 7000) # Fokus pada mayoritas data, memotong outlier ekstrem
plt.axvline(df_analisis['NATRIUM_RERATA'].mean(), color='red', linestyle='dashed', linewidth=2, label=f'Rata-rata Natrium: {df_analisis["NATRIUM_RERATA"].mean():.2f} mg')
plt.legend()
plt.show()
# Variabel 3: Lingkar Pinggang (BMXWAIST)
plt.figure(figsize=(10, 5))
sns.histplot(df_analisis['BMXWAIST'], kde=True, bins=30, color='purple')
plt.title('Distribusi Lingkar Pinggang', fontsize=16)
plt.xlabel('Lingkar Pinggang (cm)')
plt.ylabel('Frekuensi')
plt.axvline(df_analisis['BMXWAIST'].mean(), color='red', linestyle='dashed', linewidth=2, label=f'Rata-rata Lingkar Pinggang: {df_analisis["BMXWAIST"].mean():.2f} cm')
plt.legend()
plt.show()
# --- 4. VISUALISASI BIVARIATE (Hubungan Natrium vs. BMI) ---
plt.figure(figsize=(12, 7))
# Scatter plot dengan regresi line (regplot)
sns.regplot(x='NATRIUM_RERATA', y='BMXBMI', data=df_analisis,
scatter_kws={'alpha':0.3, 'color':'gray'},
line_kws={'color':'red', 'linestyle':'--'})
plt.title('Hubungan antara Rerata Natrium Harian dan BMI', fontsize=18)
plt.xlabel('Rerata Natrium Harian (mg)')
plt.ylabel('Indeks Massa Tubuh (BMI)')
plt.xlim(0, 7000) # Batas sumbu x agar konsisten dengan histogram Natrium
plt.ylim(10, 60)
plt.grid(True, linestyle=':', alpha=0.6)
plt.show()
📝 APA YANG DISERAHKAN: Entri Blog - Visualisasi Data
Program Analisis Data: Visualisasi Distribusi dan Hubungan
Hari ini, kita berhasil memvisualisasikan data NHANES yang telah kita bersihkan, memberikan pemahaman mendalam tentang distribusi setiap variabel kunci dan, yang paling penting, hubungan awal antara variabel penjelas (Rerata Natrium) dan variabel respons (BMI).
Berikut adalah program Python yang saya gunakan untuk menghasilkan semua grafik:
Grafik Distribusi Univariate
1. Distribusi Indeks Massa Tubuh (BMI)
Grafik histogram BMI menunjukkan distribusi yang sedikit miring ke kanan (positively skewed). Pusat distribusi (rata-rata BMI) terletak di sekitar 28-29 kg/m², yang secara klinis menunjukkan bahwa sebagian besar populasi sampel ini berada dalam kategori overweight atau obese (BMI $\ge$ 25). Sebaran datanya cukup luas, dengan beberapa responden memiliki BMI yang sangat tinggi, yang terlihat dari ekor kanan histogram.
2. Distribusi Rerata Asupan Natrium Harian
Grafik Natrium harian juga menunjukkan distribusi yang sangat miring ke kanan. Pusat datanya (rata-rata) berada di sekitar 3,125 mg, jauh di atas batas 2,300 mg yang direkomendasikan. Kemiringan yang kuat ini (ekor panjang ke kanan) mengindikasikan adanya sejumlah kecil responden dengan asupan Natrium yang sangat ekstrem (outlier), yang bisa mempengaruhi model regresi kita di kemudian hari. Mayoritas data berkerumun antara 2,000 dan 4,000 mg.
3. Distribusi Lingkar Pinggang
Distribusi Lingkar Pinggang menunjukkan pola yang mirip dengan BMI, dengan puncak di sekitar 95-100 cm. Ini adalah variabel yang sering digunakan untuk menilai obesitas sentral, dan distribusinya menunjukkan bahwa banyak responden memiliki ukuran pinggang di atas batas risiko yang direkomendasikan.
Grafik Hubungan Bivariate (Natrium vs. BMI)
Grafik scatter plot ini menampilkan hubungan antara Rerata Natrium Harian (Variabel Penjelas) dan BMI (Variabel Respon).
Apa yang Diungkapkan:
Arah Hubungan: Garis regresi (garis putus-putus merah) menunjukkan kecenderungan yang sangat sedikit positif atau hampir horizontal. Ini menyiratkan bahwa, meskipun kita menghipotesiskan adanya hubungan, secara visual, peningkatan asupan Natrium tidak menunjukkan korelasi linear yang kuat dengan peningkatan BMI.
Kekuatan Hubungan: Titik-titik data (responden) sangat menyebar (bertebaran) di seluruh grafik, terutama di sumbu X (Natrium) antara 0 hingga 4,000 mg. Penyebaran yang luas ini mengonfirmasi bahwa korelasi (jika ada) akan sangat lemah. Ini berarti banyak faktor lain selain Natrium (seperti aktivitas fisik, asupan kalori total, dan faktor genetik) yang jauh lebih berperan dalam menentukan BMI seseorang.
Secara keseluruhan, visualisasi ini mengarahkan ekspektasi kita: jika ada hubungan antara Natrium dan BMI, itu kemungkinan lemah dan akan membutuhkan analisis regresi multivariat untuk mengendalikan variabel pengganggu seperti usia dan jenis kelamin.
Komentar
Posting Komentar