Email             :
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.


1 Pendahuluan

  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!

2 Regresi Sederhana

  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.

2.1 Set Library

  Pada langkah ini kita perlu untuk memanggil beberapa library dalam R yang kita butuhkan, yaitu antara lain :

pacman::p_load(ggplot2,
               dplyr,
               broom,
               ggpubr)

2.2 Load Dataset

  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")

2.2.1 Summary of Data

  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

2.3 Memastikan Memenuhi Asumsi

  Pada setiap model regresi yang ingin dibangun, terdapat beberapa asumsi yang harus dipenuhi. Untuk mengetahui apa saja asumsi yang harus dipenuhi, yaitu antara lain :

2.3.1 Normalitas

hist(data$happiness, col = rainbow(14))

  Dari hasil hitogram di atas, terlihat secara jelas bahwa terbentuk seperti lonceng. Maka dari itu, dapat kita asumsikan bahwa data tersebut adalah normal.

2.3.2 Linearitas

  Selanjutnya, kita dapat melihat hubungan antara variabel independen dan dependen apakah linier atau tidak. Kita bisa mengujinya dengan menggunakan visual lewat scatter plot.

plot(data$happiness ~ data$income, data = data, col = rainbow(3))

  Dapat kita lihat secara seksama, bahwa berdasarkan scatter plor yang dibuat terdapat hubungan yang nampak linier. Karena plot yang kita miliki secara jelas berbentuk garis miring.

2.3.3 Homoskedastisitas

  Pada asumsi ini kita akan menguji galat dalam model yang kita buat untuk melihat apakah terdapat pengaruh lain pada varians yang kita dapat. Karena ini untuk menguji modelnya, kita lakukan setelah membuat modelnya nanti.

2.4 Membuat Model Regresi

  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.

2.5 Periksa Homoskedastisitas

  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.

2.6 Visualisasi Model Regresi

  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'

3 Regresi Berganda

  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.

3.1 Loading Dataset

getwd()
## [1] "C:/Users/valen/Documents/Kuliah/Tugas R"
dataa <- read.csv("C:/Users/valen/Documents/Kuliah/Tugas R/heart.data.csv")

3.1.1 Summary of Data

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

3.2 Cek Asumsi

  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.

3.2.1 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.

3.2.2 Normalitas

hist(dataa$heart.disease, col = rainbow(10))

Berdasarkan hasil grafik histogram tersebut, terlihat bentuk lonceng yang artinya data kita berdistribusi normal.

3.2.3 Linearitas

3.2.4 Variabel Heart Disease dan Biking

plot(dataa$heart.disease ~ dataa$biking, data = dataa, col = 'red')

Untuk variabel penyakit jantung dengan bersepeda, memiliki hubungan linier tapi negatif.

3.2.5 Variabel Heart Disease dan Smoking

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.

3.2.6 Homoskedastisitas

  Seperti halnya dengan regresi sederhana, kita akan memerika asumsi ini setelah kita membuat modelnya.

3.3 Membuat Model Regresi

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

3.4 Visualisasi Model Regresi

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.

3.5 Homoskedistisitas

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.