Regresi Linier Berganda dan Sederhana dengan R

Halo semua, tutorial kali ini adalah bagaimana melakukan regresi linier sederhana dan regresi linier berganda dengan pemrograman R kita sertai dengan contohnya.

Contoh #1

Data untuk video di atas dapat didownload di link ini.

Contoh #2

Contoh #2 ini kita akan menggunakan data yang berasal dari penelitian kami yang di terbitkan di Jurnal Manajemen dan Kewirausahaan, silahkan download data tabel12reg.xlsx. Seperti biasa kita akan melakukan import data ke dalam RStudio terlebih dahulu sebelum memulai pengaolahan data. Model regresi kita adalah seperti pada gambar di bawah ini,

Langkah pertama adalah dapat kita lakukan perintah operasi regresi linier sederhana dan berganda dari data kita dan model gambar di atas sebagai berikut,

Menyusun model Regresi Linier Sederhana

Misal persamaan regresi linier sederhana kita adalah:
SMP = a + b.KM + e
di mana a adalah konstanta dan b koefisien regresi, nama variabel yang akan kita gunakan dalam perintah R harus sesuai dengan nama kolom dalam tabel12reg kita, maka perintah nya seperti di bawah ini,

> regModelku <- lm(SMP~KM, data = table12reg)

Menyusun model Regresi Linier Berganda

Misal persamaan regresi linier berganda kita adalah:
SMP = a +b1.KM + b2.CI + e
di mana a adalah konstanta, b1 dan b2 adalah koefisien regresinya, nama variabel yang akan kita gunakan dalam perintah R harus sesuai dengan nama kolom dalam tabel12reg kita, maka perintah nya seperti di bawah ini,

> regModelku <- lm(SMP~KM+CI, data = table12reg) 

Uji Asumsi Regresi Linier

Sebelum membahas hasil uji regresi linier berganda kita perlu melakukan uji asumsi regresi linier untuk menguji normalitas, multikolinieritas, heterokedastisitas, autokorelasi dan linieritas dari model regresi kita.

Uji asumsi Normalitas

Pengujian residual dari model regresi apakah berdistribusi normal maka dilakukan uji Normalitas, dengan perintah di bawah ini,

> par(mfrow=c(2,2))
> plot(regModelku) 

maka di windows Plot akan muncul grafik seperti di bawah ini,

Kita lihat pada grafik Normal Q-Q (pojok kanan atas) menunjukkan point-point data berada disekitar garis lurus, maka dapat dikatakan terdistribusi normal, sehingga dapat dikatakan model regresi memenuhi asumsi Normalitas.

Uji asumsi Multikolinieritas

Pengujian korelasi antar variabel independent untuk melihat tidak adanya korelasi erat antar variabel independent dapat dilakukan melihat nilai VIF dengan perintah vif() dalam package car (anda mungkin perlu menginstal terlebih dahulu package ini), seperti di bawah ini,

> library(car)
> vif(regModelku) 

     KM       CI
 1.529073 1.529073

kita lihat bahwa nilai VIF untuk KM dan CI berada di bawah 2, maka dapat dikatakan tidak terjadi Multikolinieritas dan model kita memenuhi asumsi Multikolinieritas.

Uji asumsi Heteroskedastisitas

Mengukur apakah terjadi ketidaksamaan varians residual (Heteroskedastisitas) dari data-data pengukuran dapat kita lakukan dengan melihat sebaran pada grafik Residuals vs Vitted dengan perintah yang sama pada uji Normalitas.

> par(mfrow=c(2,2))
> plot(regModelku) 

maka di windows Plot akan muncul grafik seperti di bawah ini,

kita lihat pada grafik Residuals vs Fitted (pojok kiri atas) bahwa data-data tersebar dan tidak membentuk satu pola tertentu, sehingga dapat dikatakan tidak terjadi perbedaan varians residual dan model kita memenuhi uji asumsi Heteroskedastisitas.

Uji asumsi Autokorelasi

Uji autokorelasi dilakukan untuk menguji apakah ada pengaruh dari data terdahulu kepada data yang baru, uji ini dilakukan untuk data time series, dengan menggunakan perintah dwtest() dalam package lmtest (anda mungkin perlu menginstal terlebih dahulu package ini) dengan perintah di bawah ini,

> library(lmtest)
> dwtest(regModelku) 

Durbin-Watson test
data:  regModelku
DW = 1.9522, p-value = 0.3891
alternative hypothesis: true autocorrelation is greater than 0

dari hasil uji di atas, dengan nilai Durbin-Watson test p-value lebih dari 0.05 maka dapat dikatakan bahwa tidak terjadi pengaruh antar data sebelum dan terbaru, dapat dikatakan asumsi tidak ada Autokorelasi antar data model regresi terpenuhi.

Uji asumsi Linieritas

Pengujian hubungan linier antara variabel dependent dan independent dilakukan untuk memenuhi asumsi adanya hubungan linier antar variabel tersebut, dengan perintah crPlots() dari package conf (anda mungkin perlu menginstal terlebih dahulu package ini) di bawah ini,

> library(conf)
> crPlots(regModelku) 

maka di windows Plot akan muncul grafik seperti di bawah ini,

dari grafik di atas tampak bahwa posisi 2 (dua) garis warna berbeda (garis putus-putus dan garis sambung) berada pada posisi yang hampir berdempet, artinya variabel independent memiliki linieritas dengan variabel dependent, dapat dikatakan asumsi Lineritas model regresi terpenuhi.

Membaca hasil Regresi Linier Berganda

Tahap akhir dari proses regresi linier berganda adalah intepretasi hasil nya dapat dilakukan dengan perintah di bawah ini,

> summary(regModelku) 
 
Call:
lm(formula = SMP ~ KM + CI, data = table12reg)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.8578 -0.9147  0.0728  1.0631  5.1673 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.35207    0.82306   1.643  0.10265    
KM           0.10416    0.03865   2.695  0.00789 ** 
CI           0.74446    0.07008  10.622  < 2e-16 ***

Signif. codes:  
0 '***' 0.001 '**' 0.01 '*' 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.005 on 142 degrees of freedom
Multiple R-squared:  0.6235,    Adjusted R-squared:  0.6182 
F-statistic: 117.6 on 2 and 142 DF,  p-value: < 2.2e-16

dari tabel hasil uji di atas didapat persamaan regresi linier berganda kita adalah

SMP = 1.35207 + 0.10416KM + 0.74446CI + e

Kita dapat menyatakan hasil pengujian model regresi linier berganda di atas bahwa pengaruh KM dan CI ke SMP adalah signifikan dengan nilai p-value pada kolom Pr(>|t|) lebih kecil dari 0.05, setiap peningkatan satu satuan KM akan memberikan peningkatan sebesar 0.104 pada SMP, dan setiap peningkatan satu satuan pada CI akan memberikan peningkatan sebesar 0.744 pada SMP. Model kita memiliki nilai Adj. R2 sebesar 0.6182 atau variabel KM dan CI mampu menjelaskan 61.82% dari faktor-faktor yang mempengaruhi SMP. Pada uji F-statistic didapat p-value < 2.2e-16 jauh lebih kecil dari 0.05 menunjukkan model regresi sangat baik.

Analisis Moderasi dengan R

Artikel berikut akan memberikan contoh bagaimana pengujian sebuah variabel sebagai variabel moderasi. Metode dalam artikel ini akan mengacu pada buku Hayes (2018) dengan pendekatan regresi linier. Pada contoh ini kita akan menggunakan data tabel12reg.xlsx yang terdiri atas 145 data sample, data dapat di-download di sini, data terlebih dahulu di-import ke dalam RStudio dengan cara di video ini. Proses regresi linier dengan pemrograman R dapat dilihat pada tutorial sebelumnya di artikel ini.

Misal model penelitian kita seperti di bawah ini, kita akan menguji apakah variabel Z menjadi moderator pengaruh variabel X ke Y.

Proses pengujian moderasi akan menggunakan pengujian regresi linier berganda di mana model di atas akan diuji dengan regresi linier berganda dengan mengubah model menjadi seperti gambar di bawah ini.

model regresinya adalah: Y = c + b1.X + b2.Z + b3.X.Z + e, dalam bukunya, Hayes (2018) menjelaskan bahwa variabel Z akan menjadi moderator yang kuat jika nilai b3 signifikan pada model regresi di atas.

Kita lakukan proses regresi dengan perintah di bawah ini,

 > modelkita <- lm(SMP~KM*CI, data = table12reg)
 > summary(modelkita) 

 Call:
 lm(formula = SMP ~ KM * CI, data = table12reg)

 Residuals:
     Min      1Q  Median      3Q     Max 
 -6.9826 -0.8869  0.0943  1.0341  4.8728 

 Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
 (Intercept) -2.340687   2.111058  -1.109  0.26942    
 KM           0.314829   0.117498   2.679  0.00825 ** 
 CI           1.022098   0.162034   6.308 3.42e-09 ***
 KM:CI       -0.015295   0.008065  -1.897  0.05994 .  
 ----
 Signif. codes:  
 0 '***' 0.001 '**' 0.01 '*' 0.05 ‘.’ 0.1 ‘ ’ 1

 Residual standard error: 1.987 on 141 degrees of freedom
 Multiple R-squared:  0.6328,    Adjusted R-squared:  0.625 
 F-statistic: 81.01 on 3 and 141 DF,  p-value: < 2.2e-16

dari pengujian regresi linier di atas kita dapatkan nilai b3 sebesar -0.01529 dan tidak signifikan pada model (p-value 0.05994), sehingga dapat disimpulkan bahwa variabel Z (competitive intelligene) tidak menjadi moderator bagi pengaruh variabel X (knowledge management) pada variabel Y (strategic management process).

Simple slopes test

Kita akan melakukan pengujian simple slopes test, untuk melihat bagaimana setiap perubahan pada nilai varibel moderasi (Z) akan memberikan perubahan pada pengaruh variabel independent (X) ke variabel dependent (Y). Simple slopes test dapat dilakukan dengan perintah plotSlops() dan testSlopes() yang ada pada package rockchalk.

 > library(rockchalk) 
 > uji.slopes <- plotSlopes(modelkita, plotx="KM", modx="CI", n=3, modxVals="std.dev.")
 > hasil.uji.slopes <- testSlopes(uji.slopes)
   
Values of CI INSIDE this interval:
        lo         hi 
-145.08827   15.36297 
cause the slope of (b1 + b2*CI)KM to be statistically significant 

perintah plotSlopes() di atas akan menghasilkan grafik di bawah ini, tiga garis menunjukkan perubahan nilai Y dengan perubahan X dan Z, dimana nilai Z dimasukkan pada perintah plotSlops() otomatis digunakan tiga nilai Z yaitu mean, mean-SD dan mean+SD.

Lanjutkan dengan perintah di bawah ini untuk melihat hasil simple slopes test,

 > round(hasil.uji.slopes$hypotests,4)
 
        "CI"  slope Std. Error t value Pr(>|t|)
 (m-sd) 10.59 0.1529     0.0461  3.3150   0.0012
 (m)    13.54 0.1077     0.0383  2.8093   0.0057
 (m+sd) 16.49 0.0626     0.0441  1.4189   0.1581 

dari hasil di atas dapat kita lihat bahwa beberapa nilai variabel moderasi akan menghasilkan persamaan linier pengaruh variabel independent ke variabel dependent dengan nilai p-values yang tidak signifikan, saat nilai variabel moderasi = m, p-values nya 0.0057, saat saat nilai variabel moderasi = m+sd, p-values nya 0.1581. Menunjukkan tidak konsisten/signifikannya variabel competitive intelligence dalam memoderasi pengaruh knowledge management ke strategic management process.

Kita dapat membuat variasi pengujian simple slopes test dengan baris perintah di bawah ini,

> uji.slopes <- plotSlopes(modelkita, plotx="KM", modx="CI", n=5, modxVals="quantile")

bagaimana hasilnya? kami tunggu feedback nya ya, semoga lancar semua.

References
Hayes, A. F. (2018). Introduction to Mediation, Moderation, and Conditional Process Analysis, Second Edition: A Regression-Based Approach. New York: Guilford Publications.

Analisis Mediasi dengan R

Artikel ini akan memberikan contoh bagaimana melakukan analisis mediasi dengan pemrograman R. Pada contoh ini kita akan menggunakan data tabel12reg.xlsx yang dapat di-download di sini, dapat terlebih dahulu di-import ke dalam RStudio dengan cara di video ini. Proses regresi linier dengan pemrograman R dapat dilihat pada tutorial sebelumnya di artikel ini. Metode analisis mediasi ini akan menggunakan metode yang dikembangkan oleh Baron & Kenny (1986) yang berbasis pada analisis regresi linier sederhana dan regresi linier berganda.

Misal kita memiliki model di bawah ini, kita akan menguji apakah variabel M menjadi mediator pengaruh variabel X ke Y.

ada 3 tahap analisis mediasi yang akan dilakukan

#Tahap1
Pengujian regresi linier sederhana variabel X ke Y,

diharapakan ada pengaruh signifikan X ke Y, namun ada beberapa pendapat yang menyatakan tidak terlalu penting untuk melakukan #Tahap1 ini selama ada teori yang kuat terkait variabel X dan Y ini,

#Tahap1
> model.0 <- lm(SMP~KM, data = table12reg)
> summary(model.0) 

 Call:
 lm(formula = SMP ~ KM, data = table12reg)
 
 Residuals:
     Min      1Q  Median      3Q     Max 
 -6.6226 -1.5486 -0.0423  1.6861  9.8711 
 
 Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
 (Intercept)  6.40061    0.89703   7.135 4.45e-11 ***
 KM           0.34567    0.04173   8.284 7.76e-14 ***
 Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 ‘.’ 0.1 ‘ ’ 1
 
 Residual standard error: 2.677 on 143 degrees of freedom
 Multiple R-squared:  0.3243,    Adjusted R-squared:  0.3196 
 F-statistic: 68.63 on 1 and 143 DF,  p-value: 7.76e-14

dari proses #Tahap1 didapat bahwa variabel X memiliki tingkat signifikansi dengan p-value 7.76e-14 pada variabel Y.

#Tahap2
Pengujian regresi linier sederhana variabel X ke M,

variabel X harus berpengaruh signifikan ke M untuk bisa melanjutkan pengujian mediasi.

#Tahap2
> model.M <- lm(CI~KM, data = table12reg)
> summary(model.M) 

 Call:
 lm(formula = CI ~ KM, data = table12reg)

 Residuals:
     Min      1Q  Median      3Q     Max 
 -5.4035 -1.8647  0.1085  1.1085  9.5965 

 Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
 (Intercept)   6.7815     0.8018   8.458 2.89e-14 ***
 KM            0.3244     0.0373   8.698 7.28e-15 ***
 Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 ‘.’ 0.1 ‘ ’ 1

 Residual standard error: 2.393 on 143 degrees of freedom
 Multiple R-squared:  0.346,    Adjusted R-squared:  0.3414 
 F-statistic: 75.66 on 1 and 143 DF,  p-value: 7.276e-15

dari proses #Tahap2 didapatkan bahwa variabel Knowledge Management (X) berpengaruh signifikan pada variabel Competitive intelligence (M) dengan nilai p-value 7.28e-15.

#Tahap3
Pengujian regresi linier berganda variabel X dan M ke Y,

pada pengujian #Tahap3, M harus signifikan pada Y, jika signifikansi X terhadap Y turun, maka M adalah variabel mediasi sebagian pengaruh X pada Y, jika variabel X berpengaruh tidak signifikan pada Y, maka M adalah sebagai mediator penuh X pada Y.

#Tahap3
#multiple regression
> model.Y <- lm(SMP~KM+CI, data = table12reg)
> summary(model.Y)
 
 Call:
 lm(formula = SMP ~ KM + CI, data = table12reg)
 Residuals:
     Min      1Q  Median      3Q     Max 
 -6.8578 -0.9147  0.0728  1.0631  5.1673
 
 Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
 (Intercept)  1.35207    0.82306   1.643  0.10265    
 KM           0.10416    0.03865   2.695  0.00789 ** 
 CI           0.74446    0.07008  10.622  < 2e-16 ***
 Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 ‘.’ 0.1 ‘ ’ 1

 Residual standard error: 2.005 on 142 degrees of freedom
 Multiple R-squared:  0.6235,    Adjusted R-squared:  0.6182 
 F-statistic: 117.6 on 2 and 142 DF,  p-value: < 2.2e-16

dari hasil pengujian pada #Tahap3 kita dapatkan bahwa variabel M berpengaruh signifikan pada variabel Y (p-value < 2e-16) dan signifikansi variabel X pada variabel Y mengalami penurunan dimana nilai p-value menjadi 0.00789, dibandingkan sebelum ada varibel M (proses #Tahap1) dengan p-value adalah 7.76e-14. Pengujian pada 3 tahapan di atas memberikan kesimpulan bahwa variabel M menjadi mediator sebagian pengaruh variabel X kepada variabel Y.

References
Baron, R. M., & Kenny, D. A. (1986). The moderator–mediator variable distinction in social psychological research: Conceptual, strategic, and statistical considerations. Journal of Personality and Social Psychology, 5, 1173-1182.