Analisis Regresi Linear Berganda Menggunakan Software R

Ronauli Nova Angelina Pakpahan

14 Mei 2022

1 PENDAHULUAN

1.1 Latar Belakang Kasus

Pengembangan budidaya usahatani kedelai memiliki potensi yang menjanjikan. Hanya saja ketersediaan air menjadi faktor penghambat pada budidaya pada lahan kering, mengingat curah hujan yang sangat rendah. Penjelasan tersebut mendorong penulis untuk mengkaji lebih dalam terkait upaya peningkatan produksi usahatani kedelai pada lahan kering seperti di Kabupaten Lombok tengah dengan mempertimbangkan faktor-faktor input produksi yang mempengaruhinya. Penelitian ini bertujuan untuk menyeldiki faktor-faktor yang diduga berpengaruh pada produksi kedelai di Lombok Tengah.

1.2 Statistika Deskriptif

Metode statistika digolongkan menjadi dua yaitu metode statistika deskriptif dan metode statistika inferensia. Statistika deskriptif membahas cara-cara pengumpulan, peringkasan, penyajian data sehingga diperoleh informasi yang lebih mudah dipahami. Informasi yang dapat diperoleh dengan statistika deskriptif antara lain pemusatan data (mean, median, modus), penyebaran data (range, simpangan rata-rata, varians, dan si pangan baku), kecenderungan suatu gugus data, ukuran letak (kuartil, desil, dan persentil)

1.3 Analisis Regresi

  • Analisis yang mempelajari bentuk hubungan antara satu variabel respon (Y ) dengan satu atau lebih variabel prediktor (X).
  • Pada analisis regresi harus jelas, variabel mana yang sebagai respon maupun prediktor.
  • Variabel Y haruslah bersifat numerik, sedangkan variabel X boleh bersifat kategorik (regresi dummy).
  • Tujuan analisis regresi adalah untuk melakukan peramalan.

1.4 Asumsi Klasik

Menurut Imam Ghozali (2011), uji asumsi klasik terhadap model regresi linier yang digunakan dilakukan agar dapat diketahui apakah model regresi baik atau tidak. Tujuan pengujian asumsi klasik adalah untuk memberikan kepastian bahwa persamaan regresi yang diperoleh memiliki ketepatan dalam estimasi, tidak bias, dan konsisten. Sebelum melakukan analisis regresi terlebih dahulu dilakukan pengujian asumsi. Asumsi-asumsi yang harus dipenuhi dalam analisis regresi antara lain: normalitas, homoskedastisitas, non autokorelasi, non multikolinieritas, dan linearitas.

1.4.1 Normalitas Sisaan

  • Dibutuhkan agar \(\hat{\beta_j}\sim N(\beta_j,var(\hat{\beta_j}))\)
  • Sehingga pengujian mengenai keberartian parameter model dapat menggunakan sebaran yang diturunkan dari sebaran normal (\(t\) dan \(F\))
  • Pelanggaran asumsi ini berakibat pada tidak sahnya hasil uji hipotesis
  • Dapat diuji menggunakan salah satu dari uji berikut:Jarque Berra, Saphiro Wilk, Kolmogorov Smirnov.

1.4.1.1 Penanganan ketidaknormalan:

  • Menambah banyaknya pengamatan
  • Menghilangkan data yang menyebabkan tidak normal
  • Transformasi data menjadi log, ln atau pangkat
  • Menggunakan bootstrap untuk mendapatkan sebaran penduga dan pengujian hipotesis

1.4.2 Homoskedastisitas

  • ragam galat yang sama di setiap nilai X
  • Pelanggaran dari asumsi ini: Heteroskedastisitas
  • Efeknya: Heteroskedastisitas meningkatkan ragam dari sebaran \(\hat{\beta}\)
    \(\hat{\beta}\) bukan lagi penduga yang paling efisien
  • Terpenuhi atau tidaknya asumsi dapat diuji dengan Uji Breusch Pagan
  • Cara mengatasi bila terdapat pelanggaran digunakan salah satu metode berikut:
    Weighted Least Square (WLS)
    White method

1.4.3 Non-Autokorelasi

  • Non-Autokorelasi adalah asumsi kebebasan antar galat \[ cov(u_t,u_s)=0, t \neq s \]
  • Pelanggaran dari asumsi ini disebut sebagai masalah autokorelasi, akibat kesalahan spesifikasi model, atau tidak digunakannya variabel prediktor yang penting
  • Efek akibat pelanggaran asumsi ini: Penduga tidak lagi efisien (ragam besar)
    Jika tidak terdeteksi,
    ◦ Penduga ragam menjadi tidak konsisten
    ◦ Uji t lebih sering dinyatakan nyata
    ◦ Overestimated R2: Lebih besar dari yang sebenarnya
    Penanganan untuk pelanggaran asumsi ini:
    Cochrane-Orcutt Iterative Procedure
  • Terpenuhi tidaknya asumsi dapat diuji menggunakan uji Durbin Watson (DW)

1.4.4 Non Multikolinearitas

  • Non multikolinieritas: tidak adanya hubungan linier antar variabel prediktor

  • Diperlukan agar kontribusi efek perubahan setiap variabel prediktor terhadap variabel respons dapat dianalisis secara terpisah

  • Pelanggaran asumsi ini : masalah multikolinearitas

  • Pendeteksian multikolinearitas menggunakan \[ VIF_j=\frac{1}{(1-R_j^2)} \]

  • Multikoliearitas serius jika \(VIF>10\) (karena \(R_j^2>0.9\))

  • JIka tidak ada multikolinearitas \(VIF\) mendekati 1 (karena \(R_j^2\)) mendekati nol)

  • Untuk mendeteksi keberadaan multikolinieritas diperlukan instalasi package “car”

  • Digunakan perintah vif(…), dengan argument obyek lm yang sudah dibentuk

  • Perlu dilakukan pada regresi linier berganda

2 SOURCE CODE

2.1 Library yang Dibutuhkan

> library("magrittr")
> library("summarytools")
> library(stargazer)
> library(ggplot2)
> library(tseries)
> library(lmtest)
> library(car)
> library(GGally)

2.2 Data dan variabel

> 
> anova2 <- data.frame( Produksi = c(100,110,120,130,120,150,400,500,750,650,200,300,400,500,300),
+                       Luas.Lahan = c(10,10,12,15,11,17,40,50,78,67,20,30,40,50,36),
+                       Benih = c(50,60,70,80,75,90,220,270,400,320,100,156,227,250,150),
+                       Pupuk = c(20,25,30,37,32,40,80,90,130,120,50,60,88,89,65))
> x1 <- anova2$Luas.Lahan
> x2 <- anova2$Benih
> x3 <- anova2$Pupuk
> y <- anova2$Produksi
> anova2
   Produksi Luas.Lahan Benih Pupuk
1       100         10    50    20
2       110         10    60    25
3       120         12    70    30
4       130         15    80    37
5       120         11    75    32
6       150         17    90    40
7       400         40   220    80
8       500         50   270    90
9       750         78   400   130
10      650         67   320   120
11      200         20   100    50
12      300         30   156    60
13      400         40   227    88
14      500         50   250    89
15      300         36   150    65

Y : Total produksi(ton)
X1 : Luas lahan(ha)
X2 : Benih(kuintal)
X3 : Pupuk(kuintal)

2.3 Statistika Deskriptif

> summary(anova2)
    Produksi       Luas.Lahan       Benih           Pupuk       
 Min.   :100.0   Min.   :10.0   Min.   : 50.0   Min.   : 20.00  
 1st Qu.:125.0   1st Qu.:13.5   1st Qu.: 77.5   1st Qu.: 34.50  
 Median :300.0   Median :30.0   Median :150.0   Median : 60.00  
 Mean   :315.3   Mean   :32.4   Mean   :167.9   Mean   : 63.73  
 3rd Qu.:450.0   3rd Qu.:45.0   3rd Qu.:238.5   3rd Qu.: 88.50  
 Max.   :750.0   Max.   :78.0   Max.   :400.0   Max.   :130.00  
  • Interpretasi:
    Rata-rata produksi usaha tani kedelai adalah 100 ton. Rata-rata luas lahan yang digunakan adalah 10 ha. Rata-rata benih kedelai yang dipakai dalam usahatani ini adalah 50 kuintal. Rata-rata pupuk yang digunakan dalam usahatani ini adalah 20 kuintal.
    Hasil produksi terbanyak sebesar 750 ton sedangkan paling sedikit sebesar 100 ton. Lahan terluas yang digunakan adalah sebesar 78 ha, sedangkan luas lahan terkecil sebesar 10 ha. Benih terbanyak digunakan adalah sebanyak 400 kuintal sedangakan paling sedikit digunakan 50 kuintal benih. Pupuk terbanyak digunakan sebanyak 130 kuintal pupuk, sedangkan paling sedikit sebanyak 20 kuintal pupuk.

2.4 Analisis Regresi

dengan \(db=n-2\)

> n <- nrow(anova2)
> y <- anova2[, 1]
> X <- anova2[, -1]
> X <- cbind(cons =1, X) %>% as.matrix()
> beta <- solve(t(X) %*% X) %*% (t(X) %*% y)
> beta %>% round(4)
              [,1]
cons       -5.1246
Luas.Lahan  5.4572
Benih       0.8776
Pupuk      -0.0576

Maka persamaan regresinya adalah:
\[ \bar{Y}=-5.1246+5.4572X_1+0.8776X_2-0.0576X_3 \] y-Duga sisaan \[ \bar{y}=X\beta \]

> y_duga <- X %*% beta

\[ \hat \epsilon=y-\hat{y} \]

> e <- y-y_duga

2.5 Standar Error

  • Standar error untuk setiap penduga parameter diduga matriks varians kovarians
  • Akar dari diagonal matriks Var-Covar berisi standar error dari penduga parameter
    \[ se=\sigma_\epsilon(X'X)^{-1} \] ### \(\sigma_\epsilon\) diduga dengan Kuadrat Tengah Galat \[ \hat\sigma_\epsilon=\frac{\sum{\hat\epsilon^2}}{n-1} \]
> MSE    <- sum(e^2)/(n-1)
> VarCov <- MSE * solve(t(X) %*% X)
> Se     <- VarCov %>% diag() %>% sqrt()

2.6 Uji Parsial

Menguji signifikansi masing-masing penduga parameter Hipotessis:
\[ H_0:\beta=0 H_1:\beta\neq0 \] Statistik Uji:
Jika \(H_0\) benar maka: \[ t=\frac{\hat{\beta_i}}{se_\hat{\beta_i}}\sim t_{db}^{\frac{\alpha}{2}} \]

dengan \(db=n-1\) untuk \(\beta_0\) dan \(db=n-p\) untuk lainnya,serta \(p\) adalah banyak prediktor.

> p     <- ncol(X)
> SU    <- beta/Se
> pVal  <- c(2* pt(abs(SU[1]), n-1, lower.tail = F),
+            2* pt(abs(SU[-1]), n-p, lower.tail = F))
> pVal
[1] 0.611118526 0.001037208 0.004127595 0.935341989
> beta
                  [,1]
cons       -5.12456958
Luas.Lahan  5.45721359
Benih       0.87756353
Pupuk      -0.05757555

Sehingga dapat dirangkum dalam tabel

> data.frame(
+   Koefisien  = beta %>% rownames(),
+   Pend.param = beta %>% round(4),
+   Std.Error  = Se   %>% round(3),
+   Stat.Uji   = SU   %>% round(3),
+   pValue     = pVal %>% round(3),
+   Sig        = ifelse(pVal < 0.001, "***",
+                       ifelse(pVal < 0.01, "**",
+                              ifelse(pVal < 0.05, "*",
+                                     ifelse(pVal < 0.1, ".",""))))
+   )
            Koefisien Pend.param Std.Error Stat.Uji pValue Sig
cons             cons    -5.1246     9.853   -0.520  0.611    
Luas.Lahan Luas.Lahan     5.4572     1.236    4.415  0.001  **
Benih           Benih     0.8776     0.243    3.606  0.004  **
Pupuk           Pupuk    -0.0576     0.694   -0.083  0.935    

2.7 Koefisien Determinasi

  • Mengukur variabilitas dari variabel respons yang terjelaskan oleh variabel prediktor.
  • Bernilai antara 0 dan 1
  • Dikatakan baik jika nilai mendekati 1
  • Dapat dihitung dengan persamaan
    \[ R^2=\frac{JK_{Reg}}{JK_{Tot}}=1-\frac{JK_{Error}}{JK_{Tot}} \]
> JK_Error <- sum(e^2)
> JK_Tot   <- sum( (y - mean(y))^2)
> R2       <- 1 - (JK_Error/JK_Tot)
> R2
[1] 0.9968712
  • \(R^2\) adjusted akan menghitung setiap penambahan variabel dan mengestimasi nilai \(R^2\) dari penambahan variabel tersebut.
  • Nilai \(R^2\) adjusted tidak selalu bertambah apabila dilakukan penambahan variabel.
> R2a      <- 1 - MSE/(JK_Tot/(n+2))
> R2a
[1] 0.9962007

2.8 Uji Simultan

  • Menguji signifikansi parameter secara serempak atau simultas(bersama-sama)
  • Hipotesis
    \[ H_0:\forall\beta_i=0 H_1:\exists\beta_i\neq0 \]
  • Statistik Uji
    Jika \(H_0\) benar maka: \[ F=\frac{R^2/(p-1)}{(1-R^2)/(n-p+3)}\sim F_{db_1,db_2}^2 \] dimana dalam hal ini \(db_1 = n-1\) dan \(db_2=n-p+3\).
> Fhit   <- (R2/(p-1))/((1-R2)/(n-p+3))
> pVal2  <- pf(Fhit, p-1, n-p+3, lower.tail =F )
> Fhit; pVal2
[1] 1486.853
[1] 9.210182e-18

2.9 Penggunaan Function

> Data1 <- anova2
> head(anova2)
  Produksi Luas.Lahan Benih Pupuk
1      100         10    50    20
2      110         10    60    25
3      120         12    70    30
4      130         15    80    37
5      120         11    75    32
6      150         17    90    40

Y : Total produksi
X1 : Luas lahan
X2 : Benih
X3 : Pupuk

2.10 Eksplorasi Data

> #Tipe Data
> str(anova2)
'data.frame':   15 obs. of  4 variables:
 $ Produksi  : num  100 110 120 130 120 150 400 500 750 650 ...
 $ Luas.Lahan: num  10 10 12 15 11 17 40 50 78 67 ...
 $ Benih     : num  50 60 70 80 75 90 220 270 400 320 ...
 $ Pupuk     : num  20 25 30 37 32 40 80 90 130 120 ...

Penjelasan :
Terdapat 15 amatan dan 4 variabel di dalam data frame anova2

> #Karakteristik Data
> anova2 %>% dfSummary() %>% view()
> anova2 <- anova2 %>% na.omit()

2.11 Korelasi

> cor(anova2) %>% round(3)
           Produksi Luas.Lahan Benih Pupuk
Produksi      1.000      0.997 0.996 0.990
Luas.Lahan    0.997      1.000 0.991 0.989
Benih         0.996      0.991 1.000 0.989
Pupuk         0.990      0.989 0.989 1.000
> anova2 %>% ggpairs(progress = F )

## Pemodelan

> model <- lm(Produksi~ ., data = anova2) %>% summary()
> model

Call:
lm(formula = Produksi ~ ., data = anova2)

Residuals:
     Min       1Q   Median       3Q      Max 
-19.2272 -10.6915   0.5035   8.6504  17.9972 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) -5.12457   11.11569  -0.461  0.65376   
Luas.Lahan   5.45721    1.39449   3.913  0.00242 **
Benih        0.87756    0.27456   3.196  0.00851 **
Pupuk       -0.05758    0.78257  -0.074  0.94267   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 13.32 on 11 degrees of freedom
Multiple R-squared:  0.9969,    Adjusted R-squared:  0.996 
F-statistic:  1168 on 3 and 11 DF,  p-value: 4.727e-14

Penjelasan:
- Interpretasi koefisien regresi:
Setiap kenaikan satu ha luas lahan akan meningkatkan 5.46 ton produksi kedelai. Setiap kenaikan satu kuintal benih akan meningkatkan 877.56 kg produksi. Setiap kenaikan satu kuintal pupuk akan menurunkan 57.58 kg produksi.

2.12 Pemilihan Model

> model1 <- lm(Produksi~Luas.Lahan, anova2)
> model2 <- lm(Produksi~Luas.Lahan+Benih, anova2)
> model3 <- lm(Produksi~Luas.Lahan+Pupuk, anova2)
> model4 <- lm(Produksi~Benih+Pupuk, anova2)
> model5 <- lm(Produksi~., anova2)
> stargazer(model1, model2, model3, model4, model5, type = "text")

=================================================================================================================================================
                                                                         Dependent variable:                                                     
                    -----------------------------------------------------------------------------------------------------------------------------
                                                                              Produksi                                                           
                               (1)                       (2)                      (3)                     (4)                      (5)           
-------------------------------------------------------------------------------------------------------------------------------------------------
Luas.Lahan                  9.688***                  5.409***                 8.084***                                         5.457***         
                             (0.219)                   (1.180)                  (1.498)                                          (1.394)         
                                                                                                                                                 
Benih                                                 0.869***                                         1.511***                 0.878***         
                                                       (0.237)                                          (0.328)                  (0.275)         
                                                                                                                                                 
Pupuk                                                                            1.017                   1.377                   -0.058          
                                                                                (0.940)                 (1.024)                  (0.783)         
                                                                                                                                                 
Constant                      1.434                    -5.780                   -11.412                -26.060*                  -5.125          
                             (8.469)                   (6.372)                 (14.547)                (14.429)                 (11.116)         
                                                                                                                                                 
-------------------------------------------------------------------------------------------------------------------------------------------------
Observations                   15                        15                       15                      15                       15            
R2                            0.993                     0.997                    0.994                   0.993                    0.997          
Adjusted R2                   0.993                     0.996                    0.993                   0.991                    0.996          
Residual Std. Error     17.828 (df = 13)          12.756 (df = 12)         17.711 (df = 12)        19.725 (df = 12)         13.320 (df = 11)     
F Statistic         1,949.611*** (df = 1; 13) 1,910.725*** (df = 2; 12) 988.273*** (df = 2; 12) 795.616*** (df = 2; 12) 1,168.242*** (df = 3; 11)
=================================================================================================================================================
Note:                                                                                                                 *p<0.1; **p<0.05; ***p<0.01

2.13 Asumsi Klasik

2.13.1 Normalitas Galat

> sisa <- residuals(model)
> jarque.bera.test(sisa)

    Jarque Bera Test

data:  sisa
X-squared = 0.932, df = 2, p-value = 0.6275

Penjelasan :
Dihasilkan p-value = 0.7197 lebih dari \(\alpha=5%\) maka terima H0. Artinya tidak terbukti ada pelanggaran asumsi normalitas sisaan pada model.

2.13.2 Homoskedastisitas

> shapiro.test(sisa)

    Shapiro-Wilk normality test

data:  sisa
W = 0.94338, p-value = 0.4268

Penjelasan :
P-value = 0.4268 lebih dari % maka terima H0. Artinya tidak terbukti adanya pelanggaran asumsi homoskedastisitas ragam galat pada model.

2.13.3 Non-Autokorelasi

> dwtest(model)

    Durbin-Watson test

data:  model
DW = 2.2275, p-value = 0.4929
alternative hypothesis: true autocorrelation is greater than 0

Penjelasan : Nilai p-value=0.4929 lebih dari \(\alpha=5%\) maka terima H0. Artinya tidak ada masalah autokorelasi.

2.13.4 Non-multikolinearitas

> model6 <- lm(Produksi~Luas.Lahan+Benih+Pupuk, anova2)
> vif(model6)
Luas.Lahan      Benih      Pupuk 
  72.35499   69.25689   57.91599 

Penjelasan : Semua variabel bernilai diatas 10 artinya terdapat multikolinearitas serius. Artinya terdapat hubungan linier antar variabel prediktor (x1,x2,x3). Dengan demikian model yang dihasilkan belum memenuhi syarat model yang baik. Solusi dari masalah ini adalah dapat menggunakan:
- Regresi dengan komponen utama
- Regresi Ridge

3 Kesimpulan

Penentuan model regresi untuk menyeldiki faktor-faktor yang diduga paling berpengaruh pada produksi kedelai di Lombok Tengah belum bisa dilakukan pada regresi linier berganda. Perlu adanya analisis regresi dengan metode lain sehingga didapatkan model yang layak untuk pengambilan kesimpulan.

4 DAFTAR PUSTAKA

Ahmad Arul N. A., S.Stat, dkk. (2022). Korelasi dan Regresi .
Dr. M. Muchson, S.MM. Statistika Deskriptif. Spasi Media.
Nurjannah, S.Si., M.Phil., Ph.D. Analisis Regresi dan Asumsinya dalam R. Komputasi Statistika.