Email          : valensiusjimy27@gmail.com
RPubs         : https://rpubs.com/valensiusjimy/
Jurusan      : Statistika
Address     : ARA Center, Matana University Tower
             Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
 Setelah menyelesaikan tugas pada Ujian Tengah Semester, kini kita sudah memasuki materi yang baru, dimana pada kesempatan kali ini kita akan mempelajari tentang Regresi. Materi ini sangat penting dalam Statistika dan tidak boleh dilewatkan dan dengan adanya materi ini kita dapat mengetahui hal yang sangat menarik.
 Bagi kalian semua yang belum mengetahui apa itu Regresi, secara teoritis Regresi merupakan sebuah model yang bertujuan untuk memperkirakan, mengukur dan menguji hubungan antara variabel independen dan variabel dependennya, dimana untuk hubungannya dinyatakan dalam bentuk fungsi Matematika. Dengan adanya regresi seperti yang sudah disinggung di awal, bahwa regresi akan membawa hal yang menarik, yaitu pada materi ini kita bisa memanfaatkannya untuk memprediksi suatu hal.
 Pada kesempatan kali ini, kita akan mempelajari dua jenis regresi sebagai awal untuk kita berkenalan dengan regresi ini. Untuk dua jenis regresi yang akan dibahas adalah sebagai berikut ini.
* Regresi Sederhana (Simple Regression)
* Regresi Berganda (Multiple Regression)
 Oleh karena itu, tanpa berlama-lama lagi mari kita bersama-sama belajar mengenai regresi pada kesempatan kali ini.
Selamat Belajar
Semangattttttt!
 Pada umum dan mudahnya, regresi sederhana adalah sebuah metode yang hanya menggunakan satu variabel independen saja. Dan kita langsung saja untuk mencoba mengulik yang terdapat pada regresi sederhana ini.
 Pada langkah ini kita perlu untuk memanggil beberapa library dalam R yang kita butuhkan, yaitu antara lain :
pacman::p_load(ggplot2,
dplyr,
broom,
ggpubr)Â Kemudian, setelah kita sudah memanggil beberapa library yang dibutuhkan. Langkah selanjutnya adalah memanggil dataset yang kita akan gunakan.
data <- read.csv("C:/Users/valen/Documents/Kuliah/Tugas R/income.data.csv")Â Kita juga bisa melihat kesimpulan secara umum untuk data kita, misalkan mean, max value dan lainnya.
summary(data)## X income happiness
## Min. : 1.0 Min. :1.506 Min. :0.266
## 1st Qu.:125.2 1st Qu.:3.006 1st Qu.:2.266
## Median :249.5 Median :4.424 Median :3.473
## Mean :249.5 Mean :4.467 Mean :3.393
## 3rd Qu.:373.8 3rd Qu.:5.992 3rd Qu.:4.503
## Max. :498.0 Max. :7.482 Max. :6.863
 Kemudian, kita dapat membuat model untuk regresi sederhana ini dengan variabel independen adalah income dan variabel dependennya adalah happiness. Kita akan menguji apakah terdapat hubungan antara gaji dengan kebahagiaan seseorang.
regresi1 <- lm(data$happiness ~ data$income, data = data)
summary(regresi1)##
## Call:
## lm(formula = data$happiness ~ data$income, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.02479 -0.48526 0.04078 0.45898 2.37805
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.20427 0.08884 2.299 0.0219 *
## data$income 0.71383 0.01854 38.505 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7181 on 496 degrees of freedom
## Multiple R-squared: 0.7493, Adjusted R-squared: 0.7488
## F-statistic: 1483 on 1 and 496 DF, p-value: < 2.2e-16
 Berdasarkan hasil tersebut kita bisa melihat bahwa untuk p-value didapat senilai 2.2e-16 yang dimana < 0.05 dengan artinya income memiliki hubungan dengan happiness. Kemudian untuk model yang kita miliki memiliki nilai Adjusted R-Square sebesar 74.88% yang artinya sudah sebesar itu faktor dalam model bisa menjelaskan sebuah pengaruhnya. Dan untuk R-Square yang kita dapat sebesar 74.93% yang artinya sudah bisa dikatakan baik, karena kasus kita adalah kasus sosial.
 Untuk persamaan regresinya dapat kita buat seperti berikut ini : happiness = 0.204 + 0.713 * income.
 Berdasarkan persamaan regresi kita, dapat diartikan bahwa dalam kenaikan satu satuan income akan memengaruhi 0.713 kebahagiaan seseorang. Secara umum, artinya antara pendapatan dan kebahagiaan seseorang berbanding lurus, dimana jika pendapatan meningkat, maka kebahagiaan seseorang juga akan meningkat.
 Seperti yang sudah disinggung di awal, bahwa dalam memerika asumsi homoskedastisitas ini haruslah kita membuat modelnya terlebih dahulu karena kita akan memeriksa nilai galatnya atau error pada model tersebut.
par(mfrow = c(2,2))
plot(regresi1)par(mfrow = c(1,1))Residu adalah varians yang tidak dapat dijelaskan. Mereka tidak persis sama dengan kesalahan model, tetapi mereka dihitung darinya, jadi melihat bias dalam residu juga akan menunjukkan bias dalam kesalahan. Hal yang paling penting untuk dicari adalah bahwa garis merah yang mewakili rata-rata residu pada dasarnya horizontal dan berpusat di sekitar nol. Ini berarti tidak ada outlier atau bias dalam data yang akan membuat regresi linier tidak valid.
Dalam Q-Qplot Normal di kanan atas, kita dapat melihat bahwa residu nyata dari model kita membentuk garis satu-ke-satu yang hampir sempurna dengan residu teoritis dari model sempurna. Dan berdasarkan residu ini, kita dapat mengatakan bahwa model kita memenuhi asumsi homoskedastisitas.
 Kemudian, kita akan mencoba untuk membuat grafik untuk model regresi kita dengan hasil seperti berikut ini.
ggplot(data, aes(x=income, y=happiness))+
geom_point()+
geom_smooth(method="lm", col="red")+
stat_regline_equation(label.x = 3, label.y = 7)+
theme_bw() +
labs(title = "Reported happiness as a function of income",
x = "Income (x$10,000)",
y = "Happiness score (0 to 10)")## `geom_smooth()` using formula = 'y ~ x'
 Untuk regresi berganda lebih mudahnya dan secara perbedaannya dengan regresi sederhana adalah mencari hubungan antara dua atau lebih variabel independen dan satu variabel dependen. Dan pada kali ini, kita akan mencoba untuk mencoba membuat dan memcoba melakukan langkah-langkah regresi berganda dalam R.
 Dataset yang akan kita gunakan berbeda dengan yang sederhana, dimana kita akan menggunakan data heart.data.
getwd()## [1] "C:/Users/valen/Documents/Kuliah/Tugas R"
dataa <- read.csv("C:/Users/valen/Documents/Kuliah/Tugas R/heart.data.csv")summary(dataa)## X biking smoking heart.disease
## Min. : 1.0 Min. : 1.119 Min. : 0.5259 Min. : 0.5519
## 1st Qu.:125.2 1st Qu.:20.205 1st Qu.: 8.2798 1st Qu.: 6.5137
## Median :249.5 Median :35.824 Median :15.8146 Median :10.3853
## Mean :249.5 Mean :37.788 Mean :15.4350 Mean :10.1745
## 3rd Qu.:373.8 3rd Qu.:57.853 3rd Qu.:22.5689 3rd Qu.:13.7240
## Max. :498.0 Max. :74.907 Max. :29.9467 Max. :20.4535
 Sama halnya seperti pada regresi sederhana, kita akan mencari tahu apakah data kita sudah memenuhi asumsi-asumsi pada regresi dan tentunya terdapat sedikit perbedaan mengenai asumsi ini, dimana kita akan melihat apakah terjadi autokorelasi.
cor(dataa$biking, dataa$smoking)## [1] 0.01513618
Berdasarkan hasil tersebut kita mendapat hasil 0.015 dan artinya antara variabel biking dan variabel smoking memiliki korelasi sebesar 0.015 atau 1.5% dan nilai ini cukup kecil, sehingga kita dapat menggunakan kedua variabel tersebut.
hist(dataa$heart.disease, col = rainbow(10))Berdasarkan hasil grafik histogram tersebut, terlihat bentuk lonceng yang artinya data kita berdistribusi normal.
plot(dataa$heart.disease ~ dataa$biking, data = dataa, col = 'red')Untuk variabel penyakit jantung dengan bersepeda, memiliki hubungan linier tapi negatif.
plot(heart.disease ~ smoking, data = dataa, col = 'blue')Berdasarkan hasil tersebut, terlihat hubungan antara penyakit jantung dengan merokok kurang jelas, tetapi masih terlihat linier. Sehingga, kita dapat lanjutkan untuk membuat langkah selanjutnya.
 Seperti halnya dengan regresi sederhana, kita akan memerika asumsi ini setelah kita membuat modelnya.
regresi2 <- lm(heart.disease ~ biking + smoking, data = dataa)
summary(regresi2)##
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = dataa)
##
## 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
Dari hasil tersebut kita mendapat p-value sebesar 2.2e-16 yang artinya variabel independen memiliki hubungan dengan dependen dan sebaliknya. Kemudian untuk Adjusted R-Square didapat 97.95% yang artinya sudah sebesar itu faktor dalam model sudah bisa menjelaskan pengaruhnya. Dan model ini sudah dikatakan baik, karena dalam penelitian yang berkaitan dengan kesehatan minimal 80% dan untuk hasil kita sudah > 90%.
Untuk model regresi berganda ini dapat dibuat seperti berikut.
penyakit jantung = 14.98 - 0.2 biking + 0.17 smoking
Arti dari model tersebut adalah ketika kita menambah runitinas bersepeda akan mengurangi resiko penyakit jantung sebesar 0.2 dan ketika kita makin sering merokok dengan satu satuan rokok akan menambah resiko penyakit jantung sebesar 0.17
plotting.data<-expand.grid(
biking = seq(min(dataa$biking), max(dataa$biking), length.out=30),
smoking=c(min(dataa$smoking), mean(dataa$smoking), max(dataa$smoking)))
plotting.data$predicted.y <- predict.lm(regresi2, newdata=plotting.data)
plotting.data$smoking <- as.factor(round(plotting.data$smoking, digits = 2))
ggplot(dataa, aes(x=biking, y=heart.disease)) +
geom_point()+
geom_line(data=plotting.data, aes(x=biking, y=predicted.y, color=smoking), size=1.25)+
theme_bw() +
labs(title = "Rates of heart disease (% of population) \n as a function of biking to work and smoking",
x = "Biking to work (% of population)",
y = "Heart disease (% of population)",
color = "Smoking \n (% of population)")## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## i Please use `linewidth` instead.
par(mfrow = c(2,2))
plot(regresi2)par(mfrow = c(1,1))Seperti regresi sederhana, residu tidak menunjukkan bias, sehingga kita dapat mengatakan model kami sesuai dengan asumsi homoskedastisitas.