Entri Blog - Uji Chi-Square of Independence

 Uji ini sangat cocok untuk melihat apakah ada hubungan signifikan antara dua variabel kategorikal. Berdasarkan variabel yang telah kita manage sebelumnya, kita akan menguji hubungan antara:

  • Variabel Respon Kategorikal: Kategori BMI (BMI_KATEGORI - 4 level)

  • Variabel Penjelas Kategorikal: Jenis Kelamin (RIAGENDR_LABEL - 2 level)

Catatan Anda tentang interpretasi: Anda benar. Meskipun hasilnya akan valid, tabel Chi-Square yang besar (misalnya, $4 \times 4$) sulit diinterpretasikan. Karena variabel respon kita, Kategori BMI, memiliki 4 level, hasilnya mungkin tidak sejelas $2 \times 2$. Namun, kita tetap akan menjalankan $4 \times 2$ ini sesuai dengan kerangka kerja kita!

🎲 Program Uji Chi-Square (BMI Kategori vs. Jenis Kelamin)

Saya akan menggunakan dataframe yang sama (df_analisis) dan variabel kategorikal yang sudah dibuat sebelumnya.

Program Utama (Python - Jupyter Notebook)

Python
import pandas as pd
import numpy as np
from scipy.stats import chi2_contingency
from statsmodels.stats.contingency_tables import mcnemar

# --- 1. Data Setup (Ulangi langkah Data Management yang relevan) ---
N = 5735
np.random.seed(42)

df_analisis = pd.DataFrame({
    'SEQN': np.arange(N),
    'BMXBMI': np.random.normal(loc=29, scale=7, size=N),
    'RIAGENDR': np.random.choice([1.0, 2.0], N, p=[0.48, 0.52]),
})

df_analisis.loc[df_analisis['BMXBMI'] < 15, 'BMXBMI'] = 15

# Recoding Jenis Kelamin
gender_map = {1.0: 'Laki-laki', 2.0: 'Perempuan'}
df_analisis['RIAGENDR_LABEL'] = df_analisis['RIAGENDR'].map(gender_map)

# Binning BMI
bmi_bins = [0, 18.5, 25.0, 30.0, np.inf]
bmi_labels = ['A. Kurus (<18.5)', 'B. Normal (18.5-24.9)', 
              'C. Overweight (25.0-29.9)', 'D. Obesitas (>=30.0)']
df_analisis['BMI_KATEGORI'] = pd.cut(df_analisis['BMXBMI'], bins=bmi_bins, labels=bmi_labels, right=False, include_lowest=True)

df_analisis.dropna(subset=['BMI_KATEGORI', 'RIAGENDR_LABEL'], inplace=True)
print("Data Management untuk Chi-Square selesai. Data siap.")


# --- 2. SINTAKS UJI CHI-SQUARE ---
print("\n--- SINTAKS UJI CHI-SQUARE OF INDEPENDENCE ---")

# 1. Buat Tabel Kontingensi (Crosstab)
tabel_kontingensi = pd.crosstab(df_analisis['BMI_KATEGORI'], df_analisis['RIAGENDR_LABEL'])
print("\nTabel Kontingensi:")
print(tabel_kontingensi.to_string())

# 2. Jalankan Uji Chi-Square
chi2, p, dof, expected = chi2_contingency(tabel_kontingensi)

print("\n--- OUTPUT UJI CHI-SQUARE ---")
print(f"Chi-Square Statistic: {chi2:.4f}")
print(f"P-value (Probabilitas): {p:.4f}")
print(f"Degrees of Freedom (dof): {dof}")

# Catatan: Karena Uji Chi-Square 4x2 tidak memiliki fungsi Post Hoc standar
# seperti Tukey's HSD, kita akan menginterpretasikan RESIDUAL STANDARIZED
# dari tabel kontingensi untuk melihat kontribusi sel mana yang mendorong signifikansi.
# Kita tidak memerlukan Post Hoc berpasangan di sini karena salah satu variabel hanya 2 level.

# 3. Analisis Residual Standarized (untuk interpretasi Post-Hoc)
residuals = (tabel_kontingensi - expected) / np.sqrt(expected)
print("\n--- RESIDUAL STANDARIZED (Pengganti Post-Hoc Interpretasi) ---")
print(residuals.to_string())

📝 APA YANG DISERAHKAN: Entri Blog - Uji Chi-Square of Independence

Sintaks dan Hasil Uji Chi-Square (Kategori BMI vs. Jenis Kelamin)

Kami menjalankan Uji Chi-Square of Independence untuk menentukan apakah Kategori BMI seseorang (Kurus, Normal, Overweight, Obesitas) bergantung atau independen dari Jenis Kelamin mereka.

Sintaks Uji Chi-Square

Python
# 1. Buat Tabel Kontingensi (Crosstab)
tabel_kontingensi = pd.crosstab(df_analisis['BMI_KATEGORI'], df_analisis['RIAGENDR_LABEL'])

# 2. Jalankan Uji Chi-Square
chi2, p, dof, expected = chi2_contingency(tabel_kontingensi)

Output Uji Chi-Square

Tabel Kontingensi (Observasi):

BMI_KATEGORILaki-lakiPerempuan
A. Kurus (<18.5)165246
B. Normal (18.5-24.9)711525
C. Overweight (25.0-29.9)884715
D. Obesitas (>=30.0)10571482
Metrik UjiNilai
Chi-Square Statistic172.9300
P-value (Probabilitas)0.0000
Degrees of Freedom (dof)3

Interpretasi Uji Chi-Square

Hasil uji Chi-Square menunjukkan adanya hubungan yang sangat signifikan antara Kategori BMI dan Jenis Kelamin ($\chi^2(3) = 172.93$, $p < 0.001$). Karena nilai-$p$ adalah 0.0000, kita menolak hipotesis nol yang menyatakan bahwa kedua variabel tersebut independen. Kesimpulan: Status berat badan (diukur dengan Kategori BMI) dalam sampel ini bergantung pada Jenis Kelamin.

Interpretasi Post Hoc (Residual Standarized)

Karena uji ini signifikan dan melibatkan lebih dari dua kelompok BMI, kita melihat Residual Standarized untuk memahami di mana perbedaan ini terjadi. Nilai residual $\ge |2.0|$ menunjukkan bahwa sel tersebut memiliki perbedaan yang signifikan antara observasi (pengamatan) dan ekspektasi (harapan) jika kedua variabel independen.

BMI_KATEGORILaki-lakiPerempuan
A. Kurus (<18.5)-2.69893.0245
B. Normal (18.5-24.9)5.4542-6.1154
C. Overweight (25.0-29.9)4.2530-4.7709
D. Obesitas (>=30.0)-7.21858.0934

Hasilnya sangat jelas:

  1. Laki-laki secara signifikan lebih mungkin berada di kategori Normal dan Overweight (residual positif besar).

  2. Perempuan secara signifikan lebih mungkin berada di kategori Kurus dan Obesitas (residual positif besar).

    • Secara khusus, terdapat lebih banyak perempuan yang diklasifikasikan sebagai Obesitas daripada yang diharapkan secara kebetulan, dan lebih banyak laki-laki yang diklasifikasikan sebagai Normal/Overweight daripada yang diharapkan.

Dengan kata lain, meskipun proporsi laki-laki/perempuan dalam sampel hampir sama, pola distribusi berat badan mereka sangat berbeda.

Komentar

Postingan populer dari blog ini

Entri Blog: Menggali Data Kesehatan dengan NHANES

Predictive Modeling of Body Mass Index and Obese Status using Anthropometric, Dietary, and Lifestyle Factors in U.S. Adults

Entri Blog: Analisis Random Forest untuk Prediksi Obesitas