In [1]:
Copied!
import statsmodels.api as sm
import matplotlib.pyplot as plt
from scipy import stats
import pandas as pd
import seaborn as sns
import numpy as np
## Fungsi untuk menampilkan histogramabs
def showVisualNormalitas(data, xlabel='Values',ylabel='Density',title='Customized Histogram with Density Plot'):
# Creating a customized histogram with a density plot
sns.histplot(data, bins=30, kde=True, color='lightgreen', edgecolor='red')
# Adding labels and title
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.title(title)
# Display the plot
plt.show()
import statsmodels.api as sm
import matplotlib.pyplot as plt
from scipy import stats
import pandas as pd
import seaborn as sns
import numpy as np
## Fungsi untuk menampilkan histogramabs
def showVisualNormalitas(data, xlabel='Values',ylabel='Density',title='Customized Histogram with Density Plot'):
# Creating a customized histogram with a density plot
sns.histplot(data, bins=30, kde=True, color='lightgreen', edgecolor='red')
# Adding labels and title
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.title(title)
# Display the plot
plt.show()
Uji asumsi klasik¶
Adalah sereangkaian pengujian statistik yang dilakukan untuk memastikan model Regresi Linear valid dan tidak menghasilkan estimasi atau prediksi yang bias.
Kurang lebih ada 5 jenis uji asumsu klasik, diantaranya;abs
- Uji Normalitas
- Uji Multikolinearitas
- Uji Heteroskedastisitas
- Uji Autokorelasi
- Uji Linearitas
Uji Normalitas¶
Pengujian statistik untuk mengukur apakah data terdistribusi secara normal. Hasil Uji normalitas ini syarat penting untuk melakukan analisis statistik parametrik seperti uji-t dan uji-F.
Ada dua cara dalam melakukan uji normalitas;abs
- Analisis visual, seperti menggunakan histogram
- Analisis statistik, menggunakan uji;
- Shapiro-Wilk
- Kolmogorov-Smirnov
Sample Data¶
- Data
X1: Distribusi eksponensial (Data akan condong ke kanan, bisa kita katakan ini adalah data yang tidak normal) - Data
X2: Data dummy distribusi normal - Data
Y: Variable dependent $3 * X1 + 2 * X2$
In [2]:
Copied!
np.random.seed(42)
# Create skewed/unnormalized independent variables
X1 = np.random.exponential(scale=10, size=100) # skewed positive
X2 = np.random.normal(loc=50, scale=20, size=100) # wide variance, some outliers
# Dependent variable with noise
y = 3*X1 + 2*X2 + np.random.normal(0, 25, size=100)
df = pd.DataFrame({
"X1": X1,
"X2": X2,
"Y": y
})
df.head()
np.random.seed(42)
# Create skewed/unnormalized independent variables
X1 = np.random.exponential(scale=10, size=100) # skewed positive
X2 = np.random.normal(loc=50, scale=20, size=100) # wide variance, some outliers
# Dependent variable with noise
y = 3*X1 + 2*X2 + np.random.normal(0, 25, size=100)
df = pd.DataFrame({
"X1": X1,
"X2": X2,
"Y": y
})
df.head()
Out[2]:
| X1 | X2 | Y | |
|---|---|---|---|
| 0 | 4.692681 | 51.740941 | 117.884973 |
| 1 | 30.101214 | 44.019853 | 214.681701 |
| 2 | 13.167457 | 51.835216 | 136.556381 |
| 3 | 9.129426 | 10.248622 | 115.889749 |
| 4 | 1.696249 | 45.606562 | 111.943554 |
Uji visualisasi¶
In [3]:
Copied!
showVisualNormalitas(df['X1'],'Nilai sumbu x himpunan X1','Banyak data','Histogram persebaran data X1')
showVisualNormalitas(df['X1'],'Nilai sumbu x himpunan X1','Banyak data','Histogram persebaran data X1')
In [4]:
Copied!
showVisualNormalitas(df['X2'],'Nilai sumbu x himpunan X2','Banyak data','Histogram persebaran data X2')
showVisualNormalitas(df['X2'],'Nilai sumbu x himpunan X2','Banyak data','Histogram persebaran data X2')
Secara visualisasi dapat kita lihat bahwa data X1 distribusi datanya tidak normal dengan kencodongan data ke kiri, sedangkan data X2 data-nya terdistribusi dengan normal.
Uji Multikolinearitas¶
Uji Heteroskedastisitas¶
Uji Autokorelasi¶
Uji Linearitas¶
In [ ]:
Copied!