Regresi

Coding Python: Regresi berganda beserta Asumsi Klasiknya

Coding Python: Regresi berganda beserta Asumsi Klasiknya
Daftar isi
  1. Tahap Persiapan mengolah regresi berganda dengan Python
  2. Coding Python regresi berganda
  3. Coding python untuk linearitas regresi berganda
  4. Coding python untuk homoskedastisitas regresi berganda
  5. Coding python untuk normalitas regresi berganda
  6. Coding python untuk multikolineraitas regresi berganda

Melengkapi coding python dalam tulisan sebelumnya, di sini kami menambahkan codingnya lengkap dengan asumsi klasik di regresi berganda. Regresi berganda itu analisis untuk mengetahui hubungan variabel dependen (Y) dengan beberapa variabel independen atau X. jadi, kata kuncinya: variabel Y cuma 1, namun variabel X ada 2 atau lebih.

Tahap Persiapan mengolah regresi berganda dengan Python

Beberapa keterampilan diperlukan untuk sampai di sini, seperti cara install python dan membuat folder directory. Jadi artikel ini hanya berisi kodenya dan sedikit pembahasan tentang outputnya. Jangan kuatir, anda bisa klik link aktif dalam paragraf ini, untuk membaca dan melakukan install python sekaligus membuat folder directory python.

Saya melakukan proses analisis regresi berganda ini menggunakan python versi 3.13.1.

Coding Python regresi berganda

Pertama, kita siapkan terlebih dahulu data dan modul python yang akan digunakan. data kita siapkan dalam sebuah excel yang berisi kolom y dan variabel X. kemudian module kita yang kita gunakan bisa diinstall dengan membuka terminal dalam kolom pencarian windows kemudian ketikkan:

pip install pandas openpyxl statsmodels scikit-learn matplotlib seaborn scipy

setelah itu kita buka jupyter notebook dan buat sebuah environment pythin sederhana dengan membuat new notebook.:

# Import libraries
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.stats.diagnostic import het_goldfeldquandt
from statsmodels.stats.outliers_influence import variance_inflation_factor
from scipy.stats import shapiro
import matplotlib.pyplot as plt
import seaborn as sns

# ----------------------------
# STEP 1: Load YOUR Excel Data
# ----------------------------
# Replace with your Excel file path and sheet name
file_path = "your_data.xlsx"  # Update this
sheet_name = "Sheet1"         # Update if your data is in a specific sheet
data = pd.read_excel(file_path, sheet_name=sheet_name)

Step pertama diatas adalah mengambil atau membaca data excel yang akan diolah. pada baris file path, ganti nama file excel yang tersimpan. begitu juga dengan nama sheetnya jika anda merubahnya.

# ----------------------------
# STEP 2: Define Features (X) and Target (y)
# ----------------------------
# Replace these with YOUR column names for features and target
# Example: If your Excel has columns "Age", "Income", and "Sales"
feature_columns = ["X1", "X2"]  # Update with your feature columns (e.g., ["Age", "Income"])
target_column = "y"             # Update with your target column (e.g., "Sales")

X = data[feature_columns]  # Features
y = data[target_column]    # Target

# Add intercept term (required for statsmodels)
X = sm.add_constant(X)

# ----------------------------

Step kedua diatas merupakan mengatur nama-nama variabel dalam excel yang kita siapkan. pada baris feature_columns= X1 X2 itu kata X1 dan X2 kita ganti sesuai nama kolom di excel sebagai variabel independen. sedangkan variabel dependen ada di baris bawahnya yakni “y” (silahkan ganti namun tetap dalam tanda petik “….”).

Setelah variabel kita definisikan, maka tibalah saatnya untuk melakukan proses regresi berganda dengan mengetik code berikut:

# STEP 3: Fit Linear Regression Model
# ----------------------------
model = sm.OLS(y, X).fit()
print(model.summary())  # Detailed regression results

Selanjutnya akan muncul output sebagai berikut:

output python regresi berganda

cara membaca output ini sama dengan membaca regresi yang dikeluarkan spss atau minitab. seperti r squared, r squared adjusted, F statistic, dll. ada pun bagian bawah merupakan tambahan keterangan untuk mengetahui goodness of fit seperti random error, anda bisa membaca lebih lanjut di artikel: Interpretasi Hasil Arima dan Sarima – Forecasting.

Namun, tidak lengkap rasanya jika tidak membahas uji asumsi klasiknya. berikut adalah coding python untuk uji asumsi klasik regresi berganda

Coding python untuk linearitas regresi berganda

# ----------------------------
# STEP 4: Assumption Checks
# ----------------------------
residuals = model.resid        # Residuals (errors)
fitted_values = model.predict(X)  # Predicted values

# 1. Linearity: Actual vs. Predicted Plot
plt.figure(figsize=(10, 6))
sns.scatterplot(x=fitted_values, y=y)
plt.xlabel("Predicted Values")
plt.ylabel("Actual Values")
plt.title("Linearity Check: Actual vs. Predicted")
plt.show()

hasil yang keluar berupa gambar berikut:

linearity check

gambar ini memasangkan nilai aktual disumbu Y dan nilai prediksi di kolom X. hasil yang diharapkan sebenarnya berupa garis lurus (linear) karena tepat berpasangan setelah data itu diurutkan.artinya, jika data terlihat mengacak seperti ini bisa dipastikan errornya akan tinggi. bisa dilihat dari nilai r squarednya yang kecil. hasil yang diharapkan seperti gambar dibawah ini:

Kesimpulan yang bisa diambil bahwa model ini tidak memenuhi syarat linearity.

Coding python untuk homoskedastisitas regresi berganda

# 2. Homoscedasticity: Residuals vs. Predicted Plot
plt.figure(figsize=(10, 6))
sns.scatterplot(x=fitted_values, y=residuals)
plt.axhline(y=0, color='r', linestyle='--')
plt.xlabel("Predicted Values")
plt.ylabel("Residuals")
plt.title("Homoscedasticity Check: Residuals vs. Predicted")
plt.show()

# Goldfeld-Quandt Test for Homoscedasticity
_, p_value, _ = het_goldfeldquandt(residuals, X)
print(f"\nGoldfeld-Quandt Test (Homoscedasticity) p-value: {p_value:.4f}")
print("--> Homoscedasticity holds (constant variance)" if p_value > 0.05 else "--> Heteroscedasticity detected!")
homoskedastisitas

Hasil menunjukkan bahwa variance yang dihasilkan dalam tes tersebut bersifatkonstan atau tetap berada di nilai 0 (garismerah), artinya model ini tidak mengalami heteroskedastisitas.

Coding python untuk normalitas regresi berganda

Normalitas berfungsi untuk meyakinkan bahwa residual yang dihasilkan model sudah terdistribusi normal. ini untuk meyakinkan bahwa tidak perlu adanya penambahan variabel independen akibat terjadipola tertentu dalam residual. adapun coding python dalam regresi berganda adalah sebagai berikut:

# 3. Normality of Residuals: Q-Q Plot & Shapiro-Wilk Test
plt.figure(figsize=(10, 6))
sm.qqplot(residuals, line='s')
plt.title("Normality Check: Q-Q Plot of Residuals")
plt.show()

shapiro_stat, shapiro_p = shapiro(residuals)
print(f"\nShapiro-Wilk Test (Normality) p-value: {shapiro_p:.4f}")
print("--> Residuals are normal" if shapiro_p > 0.05 else "--> Residuals are NOT normal!")
normalitas di python

hasil menunjukkan bahwa residu belum terdistribusi normal.kebetulan contoh data yang saya gunakan adalah data yang bermasalah untuk menunjukan hasil yang perlu dihindari selama pengolahan data.

Coding python untuk multikolineraitas regresi berganda

# 4. Multicollinearity: VIF (Variance Inflation Factor)
vif_data = pd.DataFrame()
vif_data["Feature"] = X.columns
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
print("\nVariance Inflation Factor (VIF):")
print(vif_data)
print("--> VIF < 10: No multicollinearity | VIF ≥ 10: Severe multicollinearity")


multikolineritas, salah satu uji asumsi klasik yang menerangkan ada atau tidak hubungan antar variabel independen. secara teori, anda bisa membacamultikolinearitas di artikel: https://agungbudisantoso.com/mengapa-regresi-tidak-boleh-terkena-multikolinearitas/
Hasil dibawah ini menunjukan tidak ada multikolinearitas disetiap variabel independennya:

Variance Inflation Factor (VIF):
Feature VIF
0 const 11.079590
1 X1 1.010615
2 X2 1.009935
3 X3 1.001020
–> VIF < 10: No multicollinearity | VIF ≥ 10: Severe multicollinearity

Demikian adalah coding python yang bisa digunakan untuk mengolah data regresi berganda lengkapdengan uji asumsi klasik. bagi anda yang butuh panduan langkah teknis, berikut adalah video yang menjelaskan dari awal, install python, instal module dan pengolahan regresi berganda secara detil menjelaskan artikel ini:

This content is blocked because it requires marketing cookies.

Regression Software

Terima kasih

Foto Agung Budi Santoso

Ditulis oleh

Agung Budi Santoso

Dosen Manajemen Agribisnis · Universitas Sumatera Utara

Dosen yang senang mengubah teori manajemen dan agribisnis menjadi materi yang praktis, relevan, dan mudah dipahami mahasiswa.