\[ \begin{align} Y'=a+bX \end{align} \] dengan
\(Y\) = subyek variabel yang diprediksi, atau variabel dependen, atau variabel prediktor
\(a\) = konstanta
\(b\) = koefisien atau angka arah, yang menunjukkan angka peningkatan ataupun penurunan variabel dependen yang didasarkan pada perubahan variabel independen. Jika (+) maka arah garis naik, jika (-) maka arah garis turun.
\(X\) = subyek pada variabel independen yang mempunyai nilai tertentu
Regresi Linear Berganda merupakan analisis regresi yang menjelaskan hubungan antara peubah respon (variabel dependen) dengan faktor-faktor yang memengaruhi lebih dari satu prediktor (variabel independen). Regresi linier berganda hampir sama dengan regresi linier sederhana, hanya saja pada regresi linier berganda variabel bebasnya lebih dari satu variabel penduga. Tujuan analisis regresi linier berganda adalah untuk mengukur intensitas hubungan antara dua variabel atau lebih dan membuat prediksi perkiraan nilai Y atas X. Secara umum, model dari analisis regresi linear berganda adalah sebagai berikut.
\[ \begin{align} Y&=\beta_{0}+\beta_{1}X_{1}+\beta_{2}X_{2}+\beta_{3}X_{3}+...+\beta_{n}X_{n}+ \varepsilon \\ \end{align} \] Dengan \(\beta_{0},\beta_{1},\beta_{2}, ..., \beta_{n}\) adalah koefisien atau parameter model.
Model regresi linier berganda untuk populasi di atas, dapat ditaksir berdasarkan sebuah sampel acak yang berukuran n dengan model regresi linier berganda untuk sampel adalah sebagai berikut.
\[ \begin{align} \hat{Y}&=a_{0}+a_{1}X_{1}+a_{2}X_{2}+a_{3}X_{3}+...+a_{n}X_{n} \\ \end{align} \] Dengan * \(\hat{Y}\) = Nilai taksiran untuk variabel Y * \(a_{0}\) = Taksiran bagi parameter konstanta \(a_{0}\) * \(a_{1},a_{2},a_{3}\) = Taksiran bagi parameter koefisien regersi \(a_{1},a_{2},a_{3}\)
Contoh Soal Data disajikan dalam bentuk tabel dengan X adalah umur mobil sedangkan Y adalah harga mobil tersebut, terlihat dibawah ini:
Hasil estimasinya adalah sebagai berikut:
\[ \begin{align} \Sigma X=58 \\ \end{align} \] \[ \begin{align} \Sigma Y=975 \\ \end{align} \] \[ \begin{align} \Sigma XY=4732 \\ \end{align} \] \[ \begin{align} \Sigma X^2=326 \\ \end{align} \] \[ \begin{align} S_{XX}=\Sigma X^2-{(\Sigma X)^2\over n} = 326-{(58)^2\over 10}=20.182 \\ \end{align} \] \[ \begin{align} S_{XY}=\Sigma XY-{(\Sigma X)(\Sigma Y)\over n} = 4732-{(58)(975)\over 10}=-408.909 \\ \end{align} \] \[ \begin{align} b_{1}={S_{XY}\over S_{XX}}={-408.909\over 20.182}=-20,26\\ \end{align} \] \[ \begin{align} b_{0}={1\over n}(\Sigma Y-b_{1}\Sigma X)={1\over 10}(975 -(-20,26)(58))=195.47\\ \end{align} \] Sehingga persamaan regresinya menjadi \[ \begin{align} \tag{2} \hat{Y}&=195,47-20,26X \\ \end{align} \] Kemudian, dari hasil estimasi yang diperoleh, maka dapat disimpulkan bahwa setiap umur mobil bertambah satu tahun, dan harga mobil tersebut akan turun sebesar $2,026.
Diberikan soal sebagai berikut:
<- readRDS("marketing.rds")
marketing head(marketing,10)
## youtube facebook newspaper sales
## 1 276.12 45.36 83.04 26.52
## 2 53.40 47.16 54.12 12.48
## 3 20.64 55.08 83.16 11.16
## 4 181.80 49.56 70.20 22.20
## 5 216.96 12.96 70.08 15.48
## 6 10.44 58.68 90.00 8.64
## 7 69.00 39.36 28.20 14.16
## 8 144.24 23.52 13.92 15.84
## 9 10.32 2.52 1.20 5.76
## 10 239.76 3.12 25.44 12.72
Kemudian carilah:
Pertama, kita menentukan hipotesisnya. Hipotesisnya adalah sebagai berikut: \[ \begin{align} H_{0}&:\beta_{youtube}=\beta_{facebook}= \beta_{newspaper}=0 \\ H_{a}&:\beta_{youtube}≠\beta_{facebook}≠\beta_{newspaper}≠0 \end{align} \]
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
<- lm(sales~. , data=marketing)
linmod <- linmod %>% summary()
slinmod summary(linmod)
##
## Call:
## lm(formula = sales ~ ., data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.5932 -1.0690 0.2902 1.4272 3.3951
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.526667 0.374290 9.422 <2e-16 ***
## youtube 0.045765 0.001395 32.809 <2e-16 ***
## facebook 0.188530 0.008611 21.893 <2e-16 ***
## newspaper -0.001037 0.005871 -0.177 0.86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.023 on 196 degrees of freedom
## Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
## F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
anova(linmod)$'Pr(>F)'[1]
## [1] 1.809337e-84
Jika dilihat, maka \(p-valuenya = 1.809337e^{-84}\). Hasil tersebut lebih kecil dari tingkat signifikansi, yaitu 0.05. Hal itu menunjukan bahwa kita tolak H0, sehingga terdapat hubungan antara Youtube, Facebook, Newspaper, dan Sales.
Untuk menghitung seberapa kuat hubungan antara Youtube, Facebook, Newspaper, dengan Sales adalah dengan menggunakan rumus \(R^2\) sebagai berikut:
\[ \begin{align} \tag{2} R^2= {SSR\over SST}=1-{{SSE\over SST}} \end{align} \]
<- summary(linmod)$sigma
residual.se residual.se
## [1] 2.022612
<- mean(marketing$sales)
mean1 /mean1 residual.se
## [1] 0.1202004
<- summary(linmod)$r.sq
r_kuadrat r_kuadrat
## [1] 0.8972106
Nilai dari \(R^2\) adalah 0 atau 1. Jika nilai \(R^2\) semakin mendekati 1, maka hubungan antarvariabelnya semakin kuat.
Dari perhitungan kita di atas, hasil dari \(R^2\) adalah 0.8972106, yang berarti mendekati 1, maka tingkat kekuatan hubungan antara Youtube, Facebook, Newspaper, dengan Sales masuk ke dalam kategori sangat kuat.
Untuk mengetahui yang berkontribusi pada Sales di antara Youtube, Facebook, dan Newspaper, dapat dicari menggunakan p-value dari setiap variabel responnya. Caranya adalah sebagai berikut:
<- summary(linmod)$coefficients
coef1 coef1
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.526667243 0.374289884 9.4222884 1.267295e-17
## youtube 0.045764645 0.001394897 32.8086244 1.509960e-81
## facebook 0.188530017 0.008611234 21.8934961 1.505339e-54
## newspaper -0.001037493 0.005871010 -0.1767146 8.599151e-01
Berdasarkan hasil di atas, didapatkan bahwa hasil p-value youtube dan facebook adalah lebih rendah dari 0.05, sedangkan p-value dari newspaper tinggi. Oleh karena itu, media yang berkontribusi dengan sales adalah Youtube dan Facebook
Untuk mengetahui keakuratan media dalam mengestimasi sales, kita dapat melihat dari koefisien determination atau \(R^2\)
$adj.r.squared slinmod
## [1] 0.8956373
Hasilnya menunjukkan bahwa koefisien determinationnya adalah \(R^2 = 0.9242541\), yang berarti efek dari setiap media dapat mengestimasi Sales hingga 92.42%.
Untuk memeriksa keakuratan kita harus menemukan nilai Mean Absolute Percentage Error (MAPE)
library(dplyr)
library(magrittr)
<- coef(linmod)[[1]]
b0 <- coef(linmod)[[2]]
b1 <- marketing$youtube
x1 <- coef(linmod)[[3]]
b2 <- marketing$facebook
x2 <- coef(linmod)[[4]]
b3 <- marketing$newspaper
x3 $sales_pred <- (b0 +b1*x1 +b2*x2 +b3*x3) %>% round(2)
marketing$error <- abs(marketing$sales-marketing$sales_pred) %>% round(2)
marketing$'%error' <- round(marketing$error/marketing$sales*100,2)
marketing<- sum(marketing$`%error`)
total_percentage_error <- total_percentage_error/nrow(marketing)
MAPE paste(total_percentage_error/nrow(marketing),"%")
## [1] "13.87845 %"
Jadi, kita mendapatkan persentase kesalahannya adalah 13,87845%. Selanjutnya akurasi untuk prediksi adalah 1−MAPE
paste("The accuracy is ", 100-MAPE,"%")
## [1] "The accuracy is 86.12155 %"
Jadi, tingkat akurasi untuk memprediksi Sales di masa depan adalah 86.12%
Interaksi di antara media advertising menunjukkan salah satu masalah regresi linier yang disebut \(Multikolinearitas\) . Untuk mendeteksi apakah ada masalah atau tidak, kita harus memeriksa nilai VIF. Kita dapat memeriksa nilai VIF dari model linear menggunakan fungsi \(vif()\) yang disediakan oleh \(car\) package
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
vif(linmod)
## youtube facebook newspaper
## 1.004611 1.144952 1.145187
Hasil di atas menunjukkan bahwa semua nilai VIF nya adalah kurang dari 5, yang berarti tidak ada sinergi atau interaksi di antara advertising media.
library(devtools)
## Warning: package 'devtools' was built under R version 4.0.4
library(PoEdata)
library(DT)
data("food", package="PoEdata")
datatable(food)
Gambar di bawah adalah diagram sebar dari pengeluaran makanan terhadap pendapatan, menunjukkan bahwa ada hubungan positif antara pendapatan dan pengeluaran makanan.
plot(food$income, food$food_exp,
ylim=c(0, max(food$food_exp)),
xlim=c(0, max(food$income)),
xlab="weekly income in $100",
ylab="weekly food expenditure in $",
type = "p")
Untuk data pengeluaran makanan, model regresi akan menjadi:
\[ \begin{align} Y&=\beta_1+\beta_2 *X+e \\ food_{exp}&=\beta_1+\beta_2*income+e \end{align} \]
Selanjutnya kita akan menampilkan linear modelnya:
<- lm(food_exp ~ income, data = food)
mod1 <- summary(mod1)
smod1 smod1
##
## Call:
## lm(formula = food_exp ~ income, data = food)
##
## Residuals:
## Min 1Q Median 3Q Max
## -223.025 -50.816 -6.324 67.879 212.044
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 83.416 43.410 1.922 0.0622 .
## income 10.210 2.093 4.877 1.95e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 89.52 on 38 degrees of freedom
## Multiple R-squared: 0.385, Adjusted R-squared: 0.3688
## F-statistic: 23.79 on 1 and 38 DF, p-value: 1.946e-05
<- coef(mod1)[[1]] # the estimated value of β1
b1 <- coef(mod1)[[2]] # the estimated value of β2
b2 b1
## [1] 83.416
b2
## [1] 10.20964
Dari hasil di atas, kita dapat \(b_1\) nya adalah 83.416 dan \(b_2\) nya adalah 10.20964. Oleh karena itu, kita sudah bisa memasukan ke dalam rumusnya dan kita dapat menulis regresi linier yang memperkirakan sebagai berikut:
\[ \begin{align} \hat{Y}&=b_1+b_2*X \\ \hat{food_{exp}}&=83.416+10.20964*income \end{align} \]
Nilai perkiraan dari \(\beta_2\) menunjukkan bahwa pengeluaran makanan untuk keluarga rata-rata meningkat sebesar 10.209643 ketika pendapatan keluarga meningkat sebesar 1 unit. Fungsi R abline()
menambahkan garis regfression
ke diagram sebar yang diplot sebagai berikut:
plot(food$income, food$food_exp,
xlab="weekly income in $100",
ylab="weekly food expenditure in $",
type = "p")
abline(b1,b2)
Koefisien regresi \(b_1\) dan \(b_2\) adalah variabel acak, karena tergantung pada sampel. Dalam hal ini, kita mengulangi sampel untuk menilai koefisien regresi. Selajutnya kita membangun sejumlah subsample acak dari data makanan dan menghitung ulang \(b_1\) dan \(b_2\) . Subsample acak dapat dibuat menggunakan fungsi sample()
, sebagai contoh berikut untuk mengilustrasikan \(b_2\).
<- nrow(food) # returns the number of observations in the dataset
N <- 50 # desired number of subsamples
C <- 38 # desired sample size
S
<- 0
sumb2 for (i in 1:C){ # a loop over the number of subsamples
set.seed(3*i) # a different seed for each subsample
<- food[sample(1:N, size=S, replace=TRUE), ]
subsample <- lm(food_exp~income, data=subsample)
mod2 #sum b2 for all subsamples:
<- sumb2 + coef(mod2)[[2]]
sumb2
}print(sumb2/C, digits = 3)
## [1] 9.89
Hasilnya, \(b_2=9.89\), yang adalah rata-rata dari 50 estimasi \(b_2\).
<- vcov(mod1)[1, 1]) (varb1
## [1] 1884.442
<- vcov(mod1)[2, 2]) (varb2
## [1] 4.381752
<- vcov(mod1)[1,2]) (covb1b2
## [1] -85.90316
Dari hasil di atas, berarti: * Untuk hasil variansi dari \(b_1\), terlihat bahwa hasilnya sangat besar, yaitu 1884.442. Hal itu berarti terjadi penyimpangan yang sangat jauh dari rata-ratanya. Semakin besar nilai varians, semakin jauh data yang kita gunakan tersebar dari nilai rata-ratanya.
Untuk hasil variansi dari \(b_2\), terlihat bahwa hasilnya kecil, yaitu 4.381752. Hal itu berarti penyimpangan yang terjadi hanya sedikit dari rata-ratanya. Semakin kecil nilai varians, semakin dekat data yang kita gunakan tersebar dari nilai rata-ratanya.
Untuk hasil kovariansi dari \(b_1\) dan \(b_2\), terlihat bahwa hasilnya adalah negatif, yaitu -85.90316. Hal itu berarti hubungan antarvariabelnya berlawanan, jika variabel yang satu naik, maka yang satu lagi turun, atau sebaliknya.
Hubungan non-linear yang paling populer melibatkan logaritma dari variabel dependen atau independen dan fungsi polinomial. Model kuadrat membutuhkan kuadrat dari variabel independen.
\[ \begin{align} Y=\beta_1+\beta_2*X^2+e\\ \end{align} \]
Dalam R, variabel independen yang melibatkan operator matematika dapat dimasukkan dalam persamaan regresi dengan fungsi I()
. Contoh berikut menggunakan dataset br dari paket PoEdata
, yang mencakup harga jual dan atribut 1080 rumah di Baton Rouge, LA. Harga adalah harga jual dalam dolar, dan sqft adalah area permukaan di kaki persegi.
data(br)
<- lm(price~I(sqft^2), data=br)
mod2 <- coef(mod2)[[1]]
b1 <- coef(mod2)[[2]]
b2 =c(2000, 4000, 6000) # given values for sqft
sqftx=b1+b2*sqftx^2 # prices corresponding to given sqft
pricex<- 2*b2*sqftx # marginal effect of sqft on price
DpriceDsqft =DpriceDsqft*sqftx/pricex
elasticity# prints results b1; b2; DpriceDsqft; elasticity
## [1] 55776.57
## [1] 0.0154213
## [1] 61.68521 123.37041 185.05562
## [1] 1.050303 1.631251 1.817408
Maka, didapatkan bahwa \(b_1=0.0154213\) dan \(b_2=61.68521\)
Selanjutnya kita ingin menggambar diagram sebar dan melihat bagaimana fungsi kuadrat sesuai dengan data yang diberikan sebelumnya
plot(br$sqft, br$price, xlab="Total square feet",
ylab="Sale price, $", col="grey")
#add the quadratic curve to the scatter plot:
curve(b1+b2*x^2, col="red", add=TRUE)
<- lm(sales~(youtube+facebook+newspaper)^2, data=marketing)
kuadrat <- summary(kuadrat)) (skuadrat
##
## Call:
## lm(formula = sales ~ (youtube + facebook + newspaper)^2, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.1087 -0.4745 0.2248 0.7172 1.8320
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.752e+00 3.811e-01 20.342 <2e-16 ***
## youtube 2.033e-02 1.609e-03 12.633 <2e-16 ***
## facebook 2.293e-02 1.141e-02 2.009 0.0460 *
## newspaper 1.703e-02 1.007e-02 1.691 0.0924 .
## youtube:facebook 9.494e-04 4.764e-05 19.930 <2e-16 ***
## youtube:newspaper -6.643e-05 2.983e-05 -2.227 0.0271 *
## facebook:newspaper -9.133e-05 1.969e-04 -0.464 0.6433
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.126 on 193 degrees of freedom
## Multiple R-squared: 0.9686, Adjusted R-squared: 0.9677
## F-statistic: 993.3 on 6 and 193 DF, p-value: < 2.2e-16
<- lm(sales~poly(youtube)+facebook+newspaper, data=marketing)
polymod <- summary(polymod)) (spolymod
##
## Call:
## lm(formula = sales ~ poly(youtube) + facebook + newspaper, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.5932 -1.0690 0.2902 1.4272 3.3951
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.601885 0.296888 39.078 <2e-16 ***
## poly(youtube) 66.511940 2.027270 32.809 <2e-16 ***
## facebook 0.188530 0.008611 21.893 <2e-16 ***
## newspaper -0.001037 0.005871 -0.177 0.86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.023 on 196 degrees of freedom
## Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
## F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
<- lm(income~log(food_exp), data=food)
linlog <- summary(linlog)) (slinlog
##
## Call:
## lm(formula = income ~ log(food_exp), data = food)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.4039 -4.0237 -0.4234 2.7475 13.8668
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -38.483 11.154 -3.450 0.00139 **
## log(food_exp) 10.438 1.999 5.222 6.62e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.293 on 38 degrees of freedom
## Multiple R-squared: 0.4178, Adjusted R-squared: 0.4025
## F-statistic: 27.27 on 1 and 38 DF, p-value: 6.616e-06
<- lm(log(sales)~youtube+facebook+newspaper, data=marketing)
loglin <- summary(loglin)) (sloglog
##
## Call:
## lm(formula = log(sales) ~ youtube + facebook + newspaper, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.74201 -0.05892 0.04715 0.10553 0.20666
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.9213236 0.0345727 55.574 <2e-16 ***
## youtube 0.0030581 0.0001288 23.735 <2e-16 ***
## facebook 0.0098349 0.0007954 12.365 <2e-16 ***
## newspaper 0.0002953 0.0005423 0.545 0.587
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1868 on 196 degrees of freedom
## Multiple R-squared: 0.7998, Adjusted R-squared: 0.7967
## F-statistic: 260.9 on 3 and 196 DF, p-value: < 2.2e-16
Dari keempat model yang saya buat, kita melihat pada setiap \(R^2\) nya.
Maka, model terbaiknya adalah yang model Kuadrat.
[link] (http://repository.usu.ac.id/bitstream/handle/123456789/26987/Chapter%20II.pdf?sequence=4&isAllowed=y#:~:text=Regresi%20linier%20berganda%20adalah%20analisis,satu%20prediktor%20(variabel%20independen)