Pages

Thursday, July 12, 2018

Regresi Linier Berganda dengan Menggunakan Python

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.
Berikut hipotesisnya:
-         Hipotesis
       H0 : βi = 0, i = 0,1,2 (Tidak terdapat pengaruh secara signifikan antara X dengan Y)
       H1 : β≠ 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.

·          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 < datau 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

1 comment:

  1. Selamat siang, boleh minta sourcecode nya?
    ukhwanobi@gmail.com
    Terimakasih

    ReplyDelete