Regresi Berganda

Published

September 10, 2024

Data NFL

The National Football League (NFL) records a variety of performance data for individuals and teams. To investigate the importance of passing on the percentage of games won by a team, the following data show the conference (Conf), average number of passing yards per attempt (Yds/Att), the number of interceptions thrown per attempt (Int/Att), and the percentage of games won (Win%) for a random sample of 16 NFL teams for one full season.

data1 <- data.frame(
  Team = c("Arizona Cardinals", "Atlanta Falcons", "Carolina Panthers", "Cincinnati Bengals", 
           "Detroit Lions", "Green Bay Packers", "Houston Texans", "Indianapolis Colts", 
           "Jacksonville Jaguars", "Minnesota Vikings", "New England Patriots", 
           "New Orleans Saints", "Oakland Raiders", "San Francisco 49ers", 
           "Tennessee Titans", "Washington Redskins"),
  
  Conf = c("NFC", "NFC", "NFC", "AFC", "NFC", "NFC", "AFC", "AFC", 
           "AFC", "NFC", "AFC", "NFC", "AFC", "NFC", "AFC", "NFC"),
  
  Yds_Att = c(6.5, 7.1, 7.4, 6.2, 7.2, 8.9, 7.5, 5.6, 4.6, 5.8, 8.3, 8.1, 7.6, 6.5, 6.7, 6.4),
  
  Int_Att = c(0.042, 0.022, 0.033, 0.026, 0.024, 0.014, 0.019, 0.026, 0.032, 0.033, 0.020, 0.021, 0.044, 0.011, 0.024, 0.041),
  
  Win_Percent = c(50.0, 62.5, 37.5, 56.3, 62.5, 93.8, 62.5, 12.5, 31.3, 18.8, 81.3, 81.3, 50.0, 81.3, 56.3, 31.3)
)
data1
                   Team Conf Yds_Att Int_Att Win_Percent
1     Arizona Cardinals  NFC     6.5   0.042        50.0
2       Atlanta Falcons  NFC     7.1   0.022        62.5
3     Carolina Panthers  NFC     7.4   0.033        37.5
4    Cincinnati Bengals  AFC     6.2   0.026        56.3
5         Detroit Lions  NFC     7.2   0.024        62.5
6     Green Bay Packers  NFC     8.9   0.014        93.8
7        Houston Texans  AFC     7.5   0.019        62.5
8    Indianapolis Colts  AFC     5.6   0.026        12.5
9  Jacksonville Jaguars  AFC     4.6   0.032        31.3
10    Minnesota Vikings  NFC     5.8   0.033        18.8
11 New England Patriots  AFC     8.3   0.020        81.3
12   New Orleans Saints  NFC     8.1   0.021        81.3
13      Oakland Raiders  AFC     7.6   0.044        50.0
14  San Francisco 49ers  NFC     6.5   0.011        81.3
15     Tennessee Titans  AFC     6.7   0.024        56.3
16  Washington Redskins  NFC     6.4   0.041        31.3
pairs(Win_Percent~ Yds_Att+ Int_Att, data = data1, main="Scatter Plot")

Package yang akan digunakan

library(lmtest)
library(carData)
library(car)

Membangun Model Estimasi Parameter

mod1 <- lm(Win_Percent~Yds_Att+Int_Att, data = data1)
summary(mod1)

Call:
lm(formula = Win_Percent ~ Yds_Att + Int_Att, data = data1)

Residuals:
    Min      1Q  Median      3Q     Max 
-26.075  -3.099   1.149   6.265  17.112 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept)    -5.763     27.147  -0.212  0.83517   
Yds_Att        12.949      3.186   4.065  0.00134 **
Int_Att     -1083.788    357.117  -3.035  0.00958 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.6 on 13 degrees of freedom
Multiple R-squared:  0.7525,    Adjusted R-squared:  0.7144 
F-statistic: 19.76 on 2 and 13 DF,  p-value: 0.0001144

Dari output tersebut kita dapat mengetahui persamaan regresi yang terbentuk untuk presentase kemenangan tim NFL dari average number of passing yards per attempt (Yds/Att) dan the number of interceptions thrown per attempt (Int/Att). \(\hat{y} = -5.763+12.949Yds-1083.788Int\)

Uji Asumsi Klasik

Linearitas

resettest(mod1)

    RESET test

data:  mod1
RESET = 0.86941, df1 = 2, df2 = 11, p-value = 0.4461

Dengan Ramsey’s RESET Test diperoleh p-value > 0.05 yang menunjukan bahwa model terbukti linear. Jika ingin melihat masing-masing prediktor dengan respon dapat digambarkan sebagai berikut:

crPlots(mod1)

Uji Normalitas

qqnorm(mod1$residuals, main = "Plot QQ Residual")
qqline(mod1$residuals, col="green")

Plot tersebut menunjukan bahwa data berada pada sekitar garis residual, sehingga dapat dikatakan normalitas terpenuhi. Jika ingin membuktikan lebih lanjut dapat menggunakan Uji Shapiro-Wilk dan Kolmogorov-Smirnov.

shapiro.test(mod1$residuals)

    Shapiro-Wilk normality test

data:  mod1$residuals
W = 0.94232, p-value = 0.3784
ks.test(mod1$residuals, "pnorm", mean(mod1$residuals), sd(mod1$residuals))

    Exact one-sample Kolmogorov-Smirnov test

data:  mod1$residuals
D = 0.20327, p-value = 0.463
alternative hypothesis: two-sided

P-value > 0.05 menunjukan residual dapat dianggap berdistribusi normal.

Homogenitas

Uji homogenitas varians (homoskedastisitas) bertujuan untuk mengevaluasi apakah varians residual dalam model regresi konstan di seluruh rentang prediktor. Jika varians residual tidak konstan, maka disebut heteroskedastisitas, yang dapat menyebabkan masalah pada estimasi regresi seperti koefisien yang bias atau kesalahan standar yang tidak akurat. Uji statistik yang dapat digunakan terdapat uji Breusch-Pagan dan Non-Constant Variance Score Test (ncvTest).

bptest(mod1)

    studentized Breusch-Pagan test

data:  mod1
BP = 4.1451, df = 2, p-value = 0.1259
ncvTest(mod1)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 2.624955, Df = 1, p = 0.1052

p-value > 0.05 menunjukkan tidak ada bukti homogenitas.

Uji Independensi (Autokorelasi)

Salah satu uji yang paling sering digunakan untuk memeriksa autokorelasi residual adalah Durbin-Watson test. Uji ini memeriksa autokorelasi residual dalam model regresi, khususnya autokorelasi urutan pertama.Nilai statistik Durbin-Watson berkisar antara 0 dan 4:

  • Nilai mendekati 2 menunjukkan tidak ada autokorelasi.

  • Nilai mendekati 0 menunjukkan autokorelasi positif.

  • Nilai mendekati 4 menunjukkan autokorelasi negatif.

dwtest(mod1)

    Durbin-Watson test

data:  mod1
DW = 2.1773, p-value = 0.6063
alternative hypothesis: true autocorrelation is greater than 0

Nilai statiskik DW mendekati 2, sehingga dapat disimpulkan tidak ada bukti autokorelasi, dan asumsi independensi terpenuhi. P-value >0.05 mengindikasikan bahwa tidak ada autokorelasi yang signifikan. Selain DW-test Plot ACF (Autocorrelation Function) juga bisa digunakan untuk mengecek autokorelasi residual. Plot ini menggambarkan tingkat korelasi residual pada berbagai lag (urutan waktu).

acf(mod1$residuals, main="ACF Plot")

Multikolinearitas

Rule of thumb: VIF>5 berarti potensi penyebab kolinearitas.

vif(mod1)
 Yds_Att  Int_Att 
1.145078 1.145078 

Data Latihan 2

data2 <- data.frame(
  y = c(0.9, 0.91, 0.96, 0.89, 1, 1.1, 1.15, 1.03, 0.77, 1.07, 1.07, 0.94, 1.1, 1.1, 1.1, 0.91, 0.87, 0.78, 0.82, 0.95),
  x1 = c(72.4, 41.6, 34.3, 35.1, 10.7, 12.9, 8.3, 20.1, 72.2, 24, 23.2, 47.4, 31.5, 10.6, 11.2, 73.3, 75.4, 96.6, 107.4, 54.9),
  x2 = c(76.3, 70.3, 77.1, 68, 79, 67.4, 66.8, 76.9, 77.7, 67.7, 76.8, 86.6, 76.9, 86.3, 86, 76.3, 77.9, 78.7, 86.8, 70.9),
  x3 = c(29.18, 29.35, 29.24, 29.27, 29.78, 29.39, 29.69, 29.48, 29.09, 29.6, 29.38, 29.35, 29.63, 29.56, 29.48, 29.4, 29.28, 29.29, 29.03, 29.37)
)
data2
      y    x1   x2    x3
1  0.90  72.4 76.3 29.18
2  0.91  41.6 70.3 29.35
3  0.96  34.3 77.1 29.24
4  0.89  35.1 68.0 29.27
5  1.00  10.7 79.0 29.78
6  1.10  12.9 67.4 29.39
7  1.15   8.3 66.8 29.69
8  1.03  20.1 76.9 29.48
9  0.77  72.2 77.7 29.09
10 1.07  24.0 67.7 29.60
11 1.07  23.2 76.8 29.38
12 0.94  47.4 86.6 29.35
13 1.10  31.5 76.9 29.63
14 1.10  10.6 86.3 29.56
15 1.10  11.2 86.0 29.48
16 0.91  73.3 76.3 29.40
17 0.87  75.4 77.9 29.28
18 0.78  96.6 78.7 29.29
19 0.82 107.4 86.8 29.03
20 0.95  54.9 70.9 29.37
pairs(y~., data = data2, main="Scatter Plot")

Membangun Model Estimasi Parameter

mod2 <- lm(y~., data = data2)
summary(mod2)

Call:
lm(formula = y ~ ., data = data2)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.11799 -0.02526  0.01345  0.04103  0.06523 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)   
(Intercept) -3.5077781  3.0048641  -1.167  0.26017   
x1          -0.0026250  0.0006549  -4.008  0.00101 **
x2           0.0007989  0.0020451   0.391  0.70121   
x3           0.1541550  0.1013675   1.521  0.14784   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.05617 on 16 degrees of freedom
Multiple R-squared:  0.8005,    Adjusted R-squared:  0.763 
F-statistic:  21.4 on 3 and 16 DF,  p-value: 7.609e-06

Persamaan penduga parameter yang terbentuk ialah \(\hat{y} = -3.5077781-0.0026250 X_1+0.0007989 X_2+0.1541550 X_3\)

Uji Asusmsi Klasik

Linearitas

resettest(mod2)

    RESET test

data:  mod2
RESET = 2.6967, df1 = 2, df2 = 14, p-value = 0.1022
crPlots(mod2)

Dengan Ramsey’s RESET Test diperoleh p-value > 0.05 yang menunjukan bahwa model terbukti linear.

Uji Normalitas

qqnorm(mod2$residuals, main = "Plot QQ Residual")
qqline(mod2$residuals, col="red")

Plot tersebut menunjukan bahwa data berada pada sekitar garis residual, sehingga dapat dikatakan normalitas terpenuhi. Jika ingin membuktikan lebih lanjut dapat menggunakan Uji Shapiro-Wilk dan Kolmogorov-Smirnov.

shapiro.test(mod2$residuals)

    Shapiro-Wilk normality test

data:  mod2$residuals
W = 0.93532, p-value = 0.1953
ks.test(mod2$residuals, "pnorm", mean(mod2$residuals), sd(mod2$residuals))

    Exact one-sample Kolmogorov-Smirnov test

data:  mod2$residuals
D = 0.12976, p-value = 0.8471
alternative hypothesis: two-sided

P-value > 0.05 menunjukan residual dapat dianggap berdistribusi normal.

Homogenitas

bptest(mod2)

    studentized Breusch-Pagan test

data:  mod2
BP = 0.86033, df = 3, p-value = 0.835
ncvTest(mod2)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.3570362, Df = 1, p = 0.55016

p-value > 0.05 menunjukkan tidak ada bukti homogenitas.

Uji Independensi

dwtest(mod2)

    Durbin-Watson test

data:  mod2
DW = 1.8894, p-value = 0.3536
alternative hypothesis: true autocorrelation is greater than 0

Nilai statiskik DW mendekati 2, sehingga dapat disimpulkan tidak ada bukti autokorelasi, dan asumsi independensi terpenuhi. P-value >0.05 mengindikasikan bahwa tidak ada autokorelasi yang signifikan.

acf(mod2$residuals, main="ACF Plot")

Multikolinearitas

Rule of thumb: VIF>5 berarti potensi penyebab kolinearitas.

vif(mod2)
      x1       x2       x3 
2.396391 1.068691 2.329738 

Silahkan dicoba

Nah, kan sudah paham dengan langkah-langkah untuk melakukan analisis regresi berganda. Sekarang silahkan mencoba menggunakan data mtcars yang tersedia di r.