Bismillahirrohmanirrohim
Asslmualaikum.wr.wb gaes... kali ini kami mau membahas sedikit tentang regresi linear berganda denga menggunakan python. Semoga bermanfaat ya gaes.
Oke kita mulai. Dalam rangka menentukan hubungan antara variabel dependen (y) dari variabel independen (x) dapat pula digunakan analisis statistika. Salah satu metode untuk menyelesaikan masalah tersebut yaitu analisis regresi. Analisis regresi yang menganalisis hubungan antara satu variabel x dan variabel y disebut regresi linier sederhana, sedangkan regresi linier yang melibatkan lebih dari satu variabel independen disebut Regresi Linier Berganda (Sembiring, 1995). Nah di sini kita akan mempelajari regresi linear berganda . Oke kita coba dengan contoh data ekspor Pakaian Jadi dari Indonesia ke Jepang (1985-2000). Dengan variabel penelitiannya yaitu Ekspo Pakaian Jadi, dalam ton (EKS) sebagai variabel dependen (y) dan Harga Ekspor Pakaian Jadi, dalam juta per ton (HRG) sebagi X1 dan Kurs Yen terhadap Rupiah (KURS) sebagai X2. Datanya didapat dari https://dosen.perbanas.id/wp-content/uploads/2015/05/Regresi-Linier-Berganda-SPSS1.pdf
Setelah itu gunakan syntax berikut. Cekidottttt...!!!
import numpy as np
import pandas as pd
import statsmodels
import patsy
import statsmodels.api as sm
import matplotlib.pyplot as plt
#Import model
from sklearn.linear_model import LinearRegression
from sklearn.cross_validation import train_test_split
from sklearn import metrics
#Masukin data yang telah berbentuk csv dengan memanggil datanya sesuai tempat penyimpanannya
data=pd.read_csv(“post2.csv”, sep=”;”)
data
#Pilih HRG dan Kurs untuk variabel X dan EKS sebagai variabel y:
feature_names=[‘HRG’,’KURS’]
X=data[feature_names]
X
y=data.EKS
#Kemudian memisahkan X dan y ke dalam data latih (train) dan data pengujian (test):
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=1)
# Linear Regression Model
Linreg=LinearRegression()
#Membuat model dengan data latih
Linreg.fit(X_train,y_train)
#Membuat prediksi pada data pengujian
y_pred=linreg.predict(X_test)
#menghitung RMSE
print(np.sqrt(metrics.mean_squared_error(y_test,y_pred)))
#mencari model regresi
model=sm.OLS(y,X).fit()
predictions=model.predict(X)
model.summary()
#menambahkan variabel konstan
X=sm.add_constant(X)
model=sm.OLS(y,X).fit()
model.summary()
Pada Gambar diatas diketahui bahwa fungsi yang dibuat menghasilkan model linier sederhana yaitu:
Berdasarkan model diatas artinya jika HRG dan KURS mendekati nol maka nilai EKS -4067.4959. Sedangkan jika HRG naik satu satuan akan menaikkan nilai EKS sebesar 7.8150 dan jika KURS naik satu satuan maka akan menaikkan EKS sebesar 1001.8555 dengan R-square sebesar 0.911 atau 91.1% variabel HRG dan KURS dapat menjelaskan variabel EKS.
· Uji parsial
Uji parsial digunakan untuk menguji parameter secara parsial dengan kata lain untuk mengetahui apakah variable independent (X) berpengaruh secara signifikan (nyata) terhadap variable dependent (Y). Dari gambar didapat p-value (Konsatanta) sebesar 0.391, nilai (HRG) sebesar 0.001 dan nilai (KURS) sebesar 0.000.
Uji parsial digunakan untuk menguji parameter secara parsial dengan kata lain untuk mengetahui apakah variable independent (X) berpengaruh secara signifikan (nyata) terhadap variable dependent (Y). Dari gambar didapat p-value
Berikut hipotesisnya:
- Hipotesis
H0 : βi = 0, i = 0,1,2 (Tidak terdapat pengaruh secara signifikan antara X dengan Y)
H1 : βi ≠ 0, i = 0,1,2 (Ada pengaruh secara signifikan antara X dengan Y)
- Tingkat signifikasi
∝=5% = 0.05
- Daerah kritis
Jika p-value ≤ ∝ (0.05) → Tolak H0
- Statistik uji
P-value : = 0.001 dan = 0.000 ; ∝= 0,05
- Keputusan
Karena nilai p-value untuk β1 dan β2 < ∝ maka tolak
- Kesimpulan
Dengan tingkat kepercayaan 95% terdapat pengaruh secara signifikan antara variable X (HRG dan KURS) dengan variabel Y(EKS).
· Uji Normalitas
Uji Normalitaas adalah untuk melihat apakah nilai residual terdistribusi normal atau tidak. Model regresi yang baik adalah memiliki nilai residual yang terdistribusi normal. Disini kita menggunakan nilai prob Jaque Bera (JB) dari gambar output diatas sebesar 0.571. Dengan hipotesis sebagai berikut:
-
Menentukan Hipotesis
H0
: Residual berdistribusi normal
H1 : Residual tidak
Berdistribusi Normal
-
Tingkat signifikansi
∝=5% (∝=0.05)
-
Statistik Uji
p-value = 0.571
-
Daerah kritis
Tolak
H0 jika p-value < α
-
Keputusan
Karena
nilai p-value sama dengan 0.571,
dimana nilai p-value >α yaitu
0.571 > 0,05 maka gagal tolak H0.
-
Kesimpulan
Jadi, dengan tingkat kepercayaan 95% dapat disimpulkan bahwa residual berdistribusi normal.
Jadi, dengan tingkat kepercayaan 95% dapat disimpulkan bahwa residual berdistribusi normal.
· Uji Autokorelasi
Dianalisis autokorelasi ini jadi tidak
boleh ada korelasi (non-autokorelasi) antara observasi dengan data observasi
sebelumnya. Dapat dilihat dari gambar output diatas bahwa uji autokorelasi menggunakan
output DW(Durbin-Watson) sebesar 2.162.
-
Menentukan Hipotesis
H0 : Tidak terdapat
Autokorelasi
H1 : terdapat Autokorelasi
-
Tingkat signifikansi
∝=5 (∝=0,05)
- Menentukan daerah kritis
Tolak H0 :
jika 0 < DW < dl atau 4
– dl < DW < 4
Gagal tolak H0 :
jika du < DW <4 – du
Tidak ada keputusan : jika dl < DW < du
atau 4 – du < DW < 4 – dl
-
Statistik uji
Karena nilai DW
2.162
dngean du < DW <4 – du atau 0.9820 < DW <4 – 1.5386
maka interval daerah keputusannya yaitu 0.9820<
2,162 < 2.4614 sehingga dapat dikatakan bahwa Tolak H0.
-
Kesimpulan
Jadi,
dengan tingkat signifikansi 5% dapat disimpulkan bahwa keputusan uji adalah
Tidak terdapat Autokorelasi.
· Uji Heteroskedastisitas
Uji
Heteroskedastistas untuk melihat apakah terdapat ketidaksamaan varians
dari residual satu ke pengamatan yang lain. Disini antar pengamatan harus homoskedastisitas.
Import
statsmodels.formula.api as smf
lm=smf.ols(formula=”EKS~HRG+KURS”,data=data).fit()
lm
resid=lm.resid
plt.scatter(lm.predict(),resid)
import
statsmodels.stats as stats
stats.diagnostic.het_white(resid, lm.model.exog,
retres=False)
plt.show()
Dari output diatas dapat diketahui bahwa
titik-titik tidak berbentuk pula yang jelas. Dan titik-titik penyebar diatas
dan dibawah angka 0 pada sumbu Y. Jadi dapat disimpulkan bahwa tidak terjadi
masalah heteroskedastisitas dalam model regresi.
· Uji Multikolinearitas
Uji Multikolinearitas untuk melihat ada tidaknya korelasdi antara variabel bebas dalam regresi linear berganda.
from patsy import
dmatrices
from
statsmodels.stats.outliers_influence import variance_inflation_factor
lm =
smf.ols(formula = “EKS~HRG+KURS”, data = data).fit()
y,X = dmatrices (“EKS~
HRG+KURS”, data = data, return_type =”dataframe”)
vif =
[variance_inflation_factor(x, values, i) for i in range (X.shape[1])]
print(vif)
- Menentukan Hipotesis
H0 : VIF
< 10 artinya tidak terdapat Multikolinearitas.
H1 : VIF > 10 artinya terdapat
Multikolinearitas.
- Tingkat signifikansi
∝=5%
(∝=0.05)
- Statistik Uji
VIF :
Konstan = 2.691
HRG =
1.248
KURS
= 1.248
- Daerah Kritis
Tolak H0 jika VIF > ∝, Tolak H0
- Keputusan
Karena nilai VIF (Konstan =
2.691, HRG =1.248, KURS = 1.248) < α
maka gagal Tolak
H0
-
Kesimpulan
Jadi, dengan tingkat
kepercayaan 95% dapat disimpulkan bahwa tidak terdapat Multikolinearitas.
Oke selesai juga pembahasan kali ini. Mohon saran, komentar, perbaikan dari
teman-teman dari tulisan ini. Terima Kasih Banyak telah membaca tulisan ini.
Semoga bermanfaat. Semangattttttt!!!!!!
Wassalamualaikum.wr.wb
:))
Author: Panji Satrio Kurniawan & Zamroni
Rosyadi
Selamat siang, boleh minta sourcecode nya?
ReplyDeleteukhwanobi@gmail.com
Terimakasih