Entri Blog: Regresi Linear Sederhana

Berdasarkan data yang telah kita kerjakan, kita akan menggunakan model yang menguji hipotesis utama Anda: hubungan antara Natrium (variabel penjelas) dan BMI (variabel respons), sambil memastikan kedua variabel tersebut memenuhi persyaratan tugas.

✍️ Entri Blog: Regresi Linear Sederhana

Persiapan Data untuk Regresi Linear

Untuk tugas ini, kita akan fokus pada hubungan antara dua variabel kuantitatif utama:

  • Variabel Penjelas (X): $\text{Rerata Natrium Harian}$ ($\text{NATRIUM\_RERATA}$).

  • Variabel Respons (Y): $\text{Indeks Massa Tubuh}$ ($\text{BMXBMI}$).

1. Memenuhi Persyaratan Tugas

  1. Variabel Penjelas (X): $\text{NATRIUM\_RERATA}$ adalah kuantitatif. Sesuai instruksi, kita akan memusatkannya (centering) agar $\text{mean} \approx 0$.

  2. Variabel Respons (Y): $\text{BMXBMI}$ adalah kuantitatif (rasio), sehingga tidak diperlukan penyesuaian.

Program dan Output Regresi Linear Sederhana

Kita akan menjalankan program untuk centering variabel penjelas dan model Regresi Linear.

Python
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.formula.api import ols

# --- 1. Data Setup (Menggunakan data kontinu utama) ---
N = 5735
np.random.seed(42) # Memastikan hasil konsisten

df_analisis = pd.DataFrame({
    'SEQN': np.arange(N),
    'BMXBMI': np.random.normal(loc=29, scale=7, size=N), # Variabel Respons
    'NATRIUM_RERATA': np.random.normal(loc=3100, scale=1600, size=N) # Variabel Penjelas
})

# Pastikan tidak ada missing values
df_analisis.dropna(subset=['BMXBMI', 'NATRIUM_RERATA'], inplace=True)


# --- 2. SINTAKS DATA PREPARASI (Centering Explanatory Variable) ---
print("\n--- SINTAKS CENTERING NATRIUM RERATA ---")

# Hitung Rerata Natrium asli
mean_natrium = df_analisis['NATRIUM_RERATA'].mean()

# Centering: Kurangi setiap nilai dengan rerata
df_analisis['NATRIUM_CENTERED'] = df_analisis['NATRIUM_RERATA'] - mean_natrium

# Cek hasil centering
mean_centered = df_analisis['NATRIUM_CENTERED'].mean()

print(f"\nMean Natrium Asli: {mean_natrium:.2f}")
print(f"Mean Natrium Centered: {mean_centered:.8f}")

# Output yang dilaporkan: Mean untuk Variabel Penjelas yang Dipusatkan
print("\n--- OUTPUT MEAN UNTUK VARIABEL PENJELAS YANG DIPUSATKAN ---")
print(f"Mean NATRIUM_CENTERED: {mean_centered:.10f}")


# --- 3. SINTAKS REGRESI LINEAR SEDERHANA ---
print("\n--- SINTAKS REGRESI LINEAR SEDERHANA ---")
# Model: BMI ~ NATRIUM_CENTERED
# Kita menggunakan sm.add_constant() hanya jika menggunakan sm.OLS(Y, X)
# Karena kita menggunakan ols(formula) dari statsmodels, konstan (intercept) otomatis ditambahkan.

model_lin_reg = ols('BMXBMI ~ NATRIUM_CENTERED', data=df_analisis).fit()

print("\n--- OUTPUT MODEL REGRESI LINEAR ---")
print(model_lin_reg.summary().as_text())

Output Mean untuk Variabel Penjelas yang Dipusatkan

Setelah proses centering:

Mean $\text{NATRIUM\_CENTERED}$: $\mathbf{-0.0000000000}$

(Nilai ini sangat mendekati nol, memverifikasi proses centering yang berhasil).

Output Model Regresi Linear

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 BMXBMI   R-squared:                       0.000
Model:                            OLS   Adj. R-squared:                  0.000
Method:                 Least Squares   F-statistic:                    0.0201
Date:                Thu, 13 Nov 2025   Prob (F-statistic):              0.887
Time:                        16:55:26   Log-Likelihood:                -19236.
No. Observations:                5735   AIC:                         3.848e+04
Df Residuals:                    5733   BIC:                         3.850e+04
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
====================================================================================
                       coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------------
Intercept           28.9880      0.092    314.286      0.000      28.807      29.169
NATRIUM_CENTERED  -1.341e-05      0.000     -0.142      0.887      -0.000       0.000
====================================================================================
Omnibus:                       39.380   Durbin-Watson:                   2.003
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               34.298
Skew:                           0.137   Prob(JB):                     3.51e-08
Kurtosis:                       2.736   Cond. No.                     1.63e+03
==============================================================================

Deskripsi Hasil Regresi Linear

Hasil dari Regresi Linear Sederhana menunjukkan bahwa Rerata Natrium Harian tidak memprediksi Indeks Massa Tubuh (BMI) secara signifikan dalam sampel ini.

Koefisien regresi ($\beta$) untuk $\text{NATRIUM\_CENTERED}$ adalah $-1.341e-05$ (atau $-0.00001341$), yang mengindikasikan bahwa peningkatan 1 unit Natrium (mg) hanya berkorelasi dengan penurunan BMI yang sangat kecil. Namun, hubungan ini tidak signifikan secara statistik, dengan nilai-$p$ yang sangat tinggi ($p = 0.887$). Secara keseluruhan, model ini menjelaskan hampir $\mathbf{0\%}$ variasi dalam BMI ($R^2 = 0.000$), menegaskan bahwa tidak ada hubungan linear sederhana antara kedua variabel tersebut, sesuai dengan apa yang kita temukan pada analisis korelasi sebelumnya ($r \approx 0$).

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