Email : brigita.melantika@student.matanauniversity.ac.id
RPubs : https://rpubs.com/brigitatiaraem/
Jurusan : Statistika
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
Analisis Regresi merupakan teknik analisis yang digunakan untuk pengujian pengaruh variable independent terhadap variable dependen. Regresi linier sederhana digunakan apabila variable dependen dipengaruhi hanya oleh satu variable independent. hubungan antara variabel bersifat linier, dimana perubahan pada variabel X akan diikuti oleh perubahan pada variabel Y secara tetap. Selain itu, analisis regresi linear sederhana bertujuan untuk forecast atau memprediksi nilai Y. Model regresi linear sederhana yang baik harus memenuhi asumsi eksogenitas, linearitas, autokorelasi, dan varians error.
Rumus dari analisis regresi linear sederhana adalah:
\[Y'=a+bX\]
dimana:
Y’ = subyek dalam variabel dependen yang dipresiksi
a = harga Y ketika harga X = 0
b = angka koefisien regresi
X = subyek pada variabel independen yang memiliki nilai tertentu.
b adalah tangent dari perbandingan antara panjang garis variabel dependen dimana:
\[b=r∗(s_y/s_x)\]
dimana:
R = koefisien korelasi antara variabel X dan Y
sy = simpangan baku variabel Y
sx = simpangan baku variabel X
Contoh :
Seorang manajer di suatu perusahaan ingin mengetahui apakah kopetensi pegawai (X) memengaruhi kinerja pegawai (Y) di perusahaannya
# Input data
kopetensi <- c(40, 55, 32, 55, 50, 52, 61, 44, 30, 22,
40, 64, 58, 48, 44)
kinerja <- c(4, 16, 12, 24, 15, 24, 22, 17, 4,
14, 24, 26, 20, 9, 14)KPKP<-(lm(kinerja~kopetensi))
summary(KPKP)##
## Call:
## lm(formula = kinerja ~ kopetensi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.0091 -3.0964 0.2842 3.8347 9.9909
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.6704 6.1418 -0.109 0.9148
## kopetensi 0.3670 0.1286 2.854 0.0136 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.776 on 13 degrees of freedom
## Multiple R-squared: 0.3852, Adjusted R-squared: 0.3379
## F-statistic: 8.145 on 1 and 13 DF, p-value: 0.01355
Sedangkan regresi linier berganda atau multiple regression digunakan untuk menguji pengaruh lebih dari satu variable independent terhadap variable dependen. Model ini disebut linear berganda, karena beberapa variabel independen ini akan berpengaruh pada variabel dependen. Analisis regresi linear berganda bertujuan untuk mengetahui manakah variabel independen yang paling berpengaruh atau memiliki hubungan paling kuat terhadap variabel dependen. Selain itu, metode ini juga digunakan untuk menguji hipotesis karakteristik dependensi
Model regresi linear berganda dilukiskan dengan persamaan:
\[Y=β_0+β_1X_1+β_2X_2+...+β_nX_n+ϵ\]
dimana:
Y = nilai prediksi dari variabel dependen
β0 = perpotongan y (nilai y ketika semua parameter lainnya disetel ke 0)
βiXi = koefisien regresi (βi) dari variabel independen (Xi) (atau pengaruh peningkatan nilai variabel independen terhadap nilai y yang diprediksi)
ϵ = kesalahan model
Contoh :
Pengaruh smoking and biking (merokok dan bersepeda) terhadap heart disease (penyakit jantung. Pada data ini dapat diketahui bahwa smoking and biking sebagai variabel bebas dan heart disease sebagai variabel terikat.
Heart_Data <- read.csv(file = 'heart.data.csv')HD <- lm(heart.disease~biking+smoking, Heart_Data)
summary(HD)##
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1789 -0.4463 0.0362 0.4422 1.9331
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.984658 0.080137 186.99 <2e-16 ***
## biking -0.200133 0.001366 -146.53 <2e-16 ***
## smoking 0.178334 0.003539 50.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared: 0.9796, Adjusted R-squared: 0.9795
## F-statistic: 1.19e+04 on 2 and 495 DF, p-value: < 2.2e-16
Seorang manajer di suatu perusahaan ingin mengetahui apakah kopetensi pegawai (X) memengaruhi kinerja pegawai (Y) di perusahaannya
df=data.frame(kinerja,kopetensi)
df## kinerja kopetensi
## 1 4 40
## 2 16 55
## 3 12 32
## 4 24 55
## 5 15 50
## 6 24 52
## 7 22 61
## 8 17 44
## 9 4 30
## 10 14 22
## 11 24 40
## 12 26 64
## 13 20 58
## 14 9 48
## 15 14 44
dattab<-data.table(kinerja,kopetensi)
dattabplot(kopetensi, kinerja,
ylim=c(0,max(kinerja)),
xlim=c(0,max(kopetensi)),
xlab="kopetensi pegawai",
ylab="kinerja pegawai",
type="p")Dari output diatas menunjukan scatter plot kinerja terhadap kopetensi pegawai yang menunjukkan bahwa terdapat hubungan positif antara kinerja pegawai dan kopetensi pegawai.
Untuk menganalisa suatu program linear, ada beberapa asumsi yang harus dipenuhi, yaitu :
Karena kita hanya memiliki satu variabel independen dan satu variabel dependen, kami tidak perlu menguji hubungan tersembunyi di antara variabel. Jika Anda mengetahui bahwa Anda memiliki autokorelasi dalam variabel (yaitu beberapa observasi dari subjek uji yang sama), jangan lanjutkan dengan regresi linier sederhana! Gunakan model yang lebih terstruktur seperti model mixed-effect.
Untuk mengecek normalitasnya dengan menggunakan fungsi hist() seperti berikut.
avg <- mean(kopetensi)
stdev <- sd(kopetensi)
hist(kopetensi, xlab = "kopetensi pegawai", main="Histogram dari Kopetensi Pegawai", freq = FALSE)
curve(dnorm(x, avg, stdev), add = TRUE, col=2)Pada hubungan antar variabel bebas dan terikat ini harus linear sehingga dapat dilakukan dilakukan pengujian dengan plot untuk melihat pada distribusi titik datanya apakah dapat di gambarkan dengan linear.
library("gridExtra")
library("ggplot2")
glinear <- ggplot(KPKP)+
geom_point(aes(x = kinerja,
y = kopetensi),
shape = 1)+
geom_smooth(aes(x = kinerja,
y = kopetensi),
method = "lm",
formula = "y~x",
color = "red")
glinearPada plot diatas dapat diamati bahwa dapat disebut linear.
Hipotesis dan tingkat signifikansinya adalah:
\[H0:β1=β2\]
\[H0:β1≠β2\]
\[α=0.05\]
Untuk melihat summatry dari model linier regresi sederhana kita dapat menggunakan lm() dan summary() seperti pada contoh nomor 1
summary(KPKP)##
## Call:
## lm(formula = kinerja ~ kopetensi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.0091 -3.0964 0.2842 3.8347 9.9909
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.6704 6.1418 -0.109 0.9148
## kopetensi 0.3670 0.1286 2.854 0.0136 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.776 on 13 degrees of freedom
## Multiple R-squared: 0.3852, Adjusted R-squared: 0.3379
## F-statistic: 8.145 on 1 and 13 DF, p-value: 0.01355
dapat dilihat dari hasil, bahwa β1=−0.6704 dan β2=0.367. Sehingga estimasi dari y adalah: \[y=β_1+β_2X\]
\[y = −0.6704 + 0.367X\]
Kemudian kita cari p-value menggunakan fungsi anova()
anovaKPKP<-anova(KPKP)
anovaKPKP$`Pr(>F)`[1]## [1] 0.01355419
Interpretasi : Pada kopetensi pegawai terhadap kinerja pegawai ini memiliki hubungan yang signifikan yang dapat dilihat dari tabel output pada p-value sebesar 0.0136 ( ’*’ ini menandakan sudah signifikan). Model ini dapat dilihat kuat atau tidaknya dapat dilihat pada R-squared: 0.3379 / 33% ini dapat diartikan bahwa datanya belum cukup kuat (mendekati 99% / 80%).Maka dapat dijelaskan, jika kopetensi pegawai naik sebesai 1 unit maka kinerja pegawai akan naik sebesar 0.3670.
Pengaruh smoking and biking (merokok dan bersepeda) terhadap heart disease (penyakit jantung. Pada data ini dapat diketahui bahwa smoking and biking sebagai variabel bebas dan heart disease sebagai variabel terikat.
library(data.table)## Warning: package 'data.table' was built under R version 4.1.3
HDD<-as.data.table(Heart_Data)
HDD## X biking smoking heart.disease
## 1: 1 30.801246 10.896608 11.769423
## 2: 2 65.129215 2.219563 2.854081
## 3: 3 1.959665 17.588331 17.177803
## 4: 4 44.800196 2.802559 6.816647
## 5: 5 69.428454 15.974505 4.062224
## ---
## 494: 494 47.660440 27.562464 11.294392
## 495: 495 45.097203 21.385620 9.616762
## 496: 496 8.279743 6.423720 13.495168
## 497: 497 42.345863 20.741328 10.115865
## 498: 498 30.774254 23.610175 11.843556
Untuk menganalisa suatu program linear, ada beberapa asumsi yang harus dipenuhi, yaitu :
Pada pengujian hubungan antara variabel Independensi menggunakan fungsi cor yaang dapat memastikan korelasinya tidak terlalu tinggi. Pada kasus ini variabel bebasnya lebih dari 1, maka harus diperiksa apakah ada korelasi antar variabel. Jika korelasi mendekati 1 maka terdapat hubungan timpal balik positif. Jika mendekati 0, maka tidak ada korelasi. Dan jika mendekati -1 maka terdapat hubungan timpal balik negatif.
cor(Heart_Data$biking, Heart_Data$smoking)## [1] 0.01513618
Dari output korelasi ini berjumlah 0.01513618 yang artinya tidak terdapat korelasi.
Hal ini dilakukan untuk melihat bahwa variabel dependen pada data itu merupakan distribusi normal yang sesuai dengan kurva lonceng atau tidak. Pada normalitas ini menggunakan fungsi hist.
avg2 <- mean(HDD$heart.disease)
stdev2 <- sd(HDD$heart.disease)
hist(HDD$heart.disease, xlab = "Heart Disease", main="", freq=FALSE)
curve(dnorm(x, avg2, stdev2), add = TRUE, col="blue")Pada linearitas ini dapat melihat hubungan antara variabel bebas dan variabel terikat sehingga harus linear. Maka dalam linearitas menggunakan plot pencar sebagai visualisasinya yang berguna untuk melihat apakah distribusi titik data dapat dijelaskan dengan garis lurus.
glinear2 <- ggplot(HDD)+
geom_point(aes(x = smoking,
y = heart.disease),
shape = 1)+
geom_smooth(aes(x = smoking ,
y = heart.disease),
method = "lm",
formula = "y~x",
color = "yellow")
glinear3 <- ggplot(HDD)+
geom_point(aes(x = biking,
y = heart.disease),
shape = 1)+
geom_smooth(aes(x = biking,
y = heart.disease),
method = "lm",
formula = "y~x",
color = "yellow")
grid.arrange(glinear2, glinear3, nrow = 1, ncol =2)Dari kedua plot diatas, pada hubungan antara bersepeda dan penyakit jantung dapat diperkirakan bentuknya garis linear. Sedangkan hubungan antara merokok dan penyakit jantung sedikit kurang jelas namun hubungan tersebut masih terlihat linier. Dengan demikian akan dilanjutkan dengan regresi linier.
Hipotesis dan tingkat signifikansinya adalah:
\[H_0:β.biking=β.smoking=0\]
\[H_0:β.biking≠β.smoking≠0\]
\[α=0.01\]
summary(HD)##
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1789 -0.4463 0.0362 0.4422 1.9331
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.984658 0.080137 186.99 <2e-16 ***
## biking -0.200133 0.001366 -146.53 <2e-16 ***
## smoking 0.178334 0.003539 50.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared: 0.9796, Adjusted R-squared: 0.9795
## F-statistic: 1.19e+04 on 2 and 495 DF, p-value: < 2.2e-16
dapat dilihat dari hasil, bahwa β0=14.984658, β1=−0.200133, dan β2=0.178334. Sehingga estimasi dari y adalah:
\[y=β_0+β_1X_1+β_2X_2\]
\[y=14.984658−0.200133X_1+0.178334X_2\]
Kemudian cari p-value menggunakan fungsi anova().
anovaHD <- anova(HD)
anovaHD$`Pr(>F)`[1]## [1] 0
Interpretasi :
Pada biking terhadap heart disease ini memiliki hubungan yang signifikan yang dapat dilihat dari tabel output pada p-value sebesar 0.00 ( ’*’ ini menandakan sudah signifikan). Model ini dapat dilihat kuat atau tidaknya dapat dilihat pada R-squared: 0.9796 / 97% ini dapat diartikan bahwa datanya sudah cukup kuat (mendekati 99%). Maka dapat dijelaskan, jika biking turun sebesai 1 unit maka heart disease ini akan turun sebesar -0.200133.
Pada smoking terhadap heart disease ini memiliki hubungan yang signifikan yang dapat dilihat dari tabel output pada p-value sebesar 0.00 ( ’*’ ini menandakan sudah signifikan). Model ini dapat dilihat kuat atau tidaknya dapat dilihat pada R-squared: 0.9796 / 97% ini dapat diartikan bahwa datanya sudah cukup kuat (mendekati 99%). Maka dapat dijelaskan, jika biking naik sebesai 1 unit maka heart disease ini akan naik sebesar 0.178334.
Dari hasil didapatkan bahwa p−value≤α dimana α=0.01 pada kasus kesehatan. Berarti pada data heart.disease, terdapat hubungan yang signifikan antara variabel smoking dan variabel biking terhadap variabel heart.disease dengan tingkat kepercayaan 99%.
Modellinear <- summary(HD)
Modellinear##
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1789 -0.4463 0.0362 0.4422 1.9331
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.984658 0.080137 186.99 <2e-16 ***
## biking -0.200133 0.001366 -146.53 <2e-16 ***
## smoking 0.178334 0.003539 50.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared: 0.9796, Adjusted R-squared: 0.9795
## F-statistic: 1.19e+04 on 2 and 495 DF, p-value: < 2.2e-16
summary(HD)$r.squared ## [1] 0.9796175
kuadrat <- lm(heart.disease~(biking+smoking)^2, data=Heart_Data)
Modelkuadrat <- summary(kuadrat)
Modelkuadrat##
## Call:
## lm(formula = heart.disease ~ (biking + smoking)^2, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.20619 -0.44862 0.02892 0.44099 1.94142
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 15.0527397 0.1248112 120.604 <2e-16 ***
## biking -0.2019916 0.0029472 -68.536 <2e-16 ***
## smoking 0.1740065 0.0070359 24.731 <2e-16 ***
## biking:smoking 0.0001177 0.0001653 0.712 0.477
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6544 on 494 degrees of freedom
## Multiple R-squared: 0.9796, Adjusted R-squared: 0.9795
## F-statistic: 7922 on 3 and 494 DF, p-value: < 2.2e-16
summary(kuadrat)$r.squared ## [1] 0.9796383
polimial <- lm(heart.disease~poly(biking,3)+smoking, data=Heart_Data)
Modelpolin <- summary(polimial)
Modelpolin##
## Call:
## lm(formula = heart.disease ~ poly(biking, 3) + smoking, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.13134 -0.44800 0.03562 0.44119 1.98212
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.41749 0.06199 119.653 <2e-16 ***
## poly(biking, 3)1 -95.84416 0.65349 -146.665 <2e-16 ***
## poly(biking, 3)2 -1.06107 0.65414 -1.622 0.105
## poly(biking, 3)3 0.36175 0.65344 0.554 0.580
## smoking 0.17862 0.00354 50.458 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6534 on 493 degrees of freedom
## Multiple R-squared: 0.9797, Adjusted R-squared: 0.9796
## F-statistic: 5960 on 4 and 493 DF, p-value: < 2.2e-16
summary(polimial)$r.squared ## [1] 0.9797382
loglin <- lm(log(heart.disease)~biking+smoking, data=Heart_Data)
ModelLogLinear <- summary(loglin)
ModelLogLinear##
## Call:
## lm(formula = log(heart.disease) ~ biking + smoking, data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.59285 -0.08401 0.04881 0.14200 0.37256
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.7338211 0.0296098 92.33 <2e-16 ***
## biking -0.0244554 0.0005047 -48.46 <2e-16 ***
## smoking 0.0238085 0.0013077 18.21 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2417 on 495 degrees of freedom
## Multiple R-squared: 0.8428, Adjusted R-squared: 0.8421
## F-statistic: 1327 on 2 and 495 DF, p-value: < 2.2e-16
summary(loglin)$r.squared ## [1] 0.8427845
linlog <- lm(heart.disease~log(biking)+log(smoking), data=Heart_Data)
Modellinearlog <- summary(linlog)
Modellinearlog##
## Call:
## lm(formula = heart.disease ~ log(biking) + log(smoking), data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.581 -1.249 0.349 1.546 4.275
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 21.6124 0.4631 46.67 <2e-16 ***
## log(biking) -4.5597 0.1067 -42.73 <2e-16 ***
## log(smoking) 1.5781 0.1109 14.22 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.03 on 495 degrees of freedom
## Multiple R-squared: 0.8037, Adjusted R-squared: 0.8029
## F-statistic: 1013 on 2 and 495 DF, p-value: < 2.2e-16
summary(linlog)$r.squared ## [1] 0.8036598
loglog <- lm(log(heart.disease)~log(biking)+log(smoking), data=Heart_Data)
Modelloglog <- summary(loglog)
Modelloglog##
## Call:
## lm(formula = log(heart.disease) ~ log(biking) + log(smoking),
## data = Heart_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8049 -0.1553 0.1113 0.2413 0.7898
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.31670 0.08637 38.40 <2e-16 ***
## log(biking) -0.51146 0.01990 -25.70 <2e-16 ***
## log(smoking) 0.23441 0.02069 11.33 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3786 on 495 degrees of freedom
## Multiple R-squared: 0.6141, Adjusted R-squared: 0.6125
## F-statistic: 393.8 on 2 and 495 DF, p-value: < 2.2e-16
summary(loglog)$r.squared ## [1] 0.6140915
Model terbaik adalah model yang memiliki R^2 tertinggi. Pada kasus ini R^2 tertinggi berada pada model polinomial yaitu sebesar 0.9797382. Maka dapat disimpulkan model terbaik adalah Model Polinomial dimana variabel biking di polinomialkan.