Regresi Linear Sederhana merupakan teknik analisis statistik yang digunakan untuk menggambarkan hubungan antara satu peubah dependen dan satu peubah independen. Model ini dapat dinyatakan dalam bentuk persamaan linear, yaitu Y = a + bX. Dalam persamaan tersebut, Y adalah peubah dependen sedangkan X adalah peubah independen. Nilai a adalah intercept (besar Y ketika X = 0), dan b adalah koefisien regresi yang menunjukkan perubahan rata-rata dalam Y untuk setiap unit perubahan dalam X.

Dataset

Data yang digunakan mencakup 111 negara diseluruh dunia. Pada analisis ini hanya digunakan dua peubah untuk menganalisis hubungan penghasilan dengan tingkat kebahagiaan karyawan. Untuk melihat struktur data, kita bisa menggunakan fungsi glimpse(). Terlihat bahwa, ada 11 peubah (8 peubah numerik dan 3 peubah kategorik) serta terdapat 111 amatan pada data.

data <- read.csv("happyscore_income.csv")
glimpse(data)
## Rows: 111
## Columns: 11
## $ country               <chr> "Armenia", "Angola", "Argentina", "Austria", "Au…
## $ adjusted_satisfaction <dbl> 37, 26, 60, 59, 65, 46, 43, 63, 37, 34, 25, 20, …
## $ avg_satisfaction      <dbl> 4.9, 4.3, 7.1, 7.2, 7.6, 5.8, 5.3, 7.2, 4.4, 4.6…
## $ std_satisfaction      <dbl> 2.42, 3.19, 1.91, 2.11, 1.80, 2.27, 2.10, 1.72, …
## $ avg_income            <dbl> 2096.760, 1448.880, 7101.120, 19457.040, 19917.0…
## $ median_income         <dbl> 1731.507, 1044.240, 5109.400, 16879.620, 15846.0…
## $ income_inequality     <dbl> 31.44556, 42.72000, 45.47556, 30.29625, 35.28500…
## $ region                <chr> "'Central and Eastern Europe'", "'Sub-Saharan Af…
## $ happyScore            <dbl> 4.350, 4.033, 6.574, 7.200, 7.284, 5.212, 4.694,…
## $ GDP                   <dbl> 0.76821, 0.75778, 1.05351, 1.33723, 1.33358, 1.0…
## $ country.1             <chr> "Armenia", "Angola", "Argentina", "Austria", "Au…

Fungsi summary() dapat digunakan untuk melihat ringkasan data. Pada langkah berikut, kita hanya menampilkan ringkasan dari peubah tingkat kebahagiaan (y) dan peubah penghasilan (x). Tingkat kebahagiaan memiliki skor 1 sampai 10, semakin besar nilainya mengindikasikan karyawan semakin bahagia. Hasil ringkasan menunjukkan bahwa peubah dependen (tingkat kebahagiaan) memiliki rata-rata 5,4 sedangkan pendapatan (income average) memiliki rata-rata $6442,8.

numerik <- data[sapply(data, is.numeric)]
summary(numerik)
##  adjusted_satisfaction avg_satisfaction std_satisfaction   avg_income     
##  Min.   :19.00         Min.   :2.500    Min.   :1.380    Min.   :  572.9  
##  1st Qu.:40.00         1st Qu.:5.100    1st Qu.:1.910    1st Qu.: 1519.4  
##  Median :48.00         Median :6.000    Median :2.130    Median : 3889.3  
##  Mean   :48.73         Mean   :5.937    Mean   :2.125    Mean   : 6442.8  
##  3rd Qu.:57.00         3rd Qu.:7.000    3rd Qu.:2.330    3rd Qu.: 7867.4  
##  Max.   :74.00         Max.   :8.500    Max.   :3.190    Max.   :26182.3  
##  median_income     income_inequality   happyScore         GDP        
##  Min.   :  415.5   Min.   :24.21     Min.   :2.839   Min.   :0.0153  
##  1st Qu.: 1167.7   1st Qu.:32.18     1st Qu.:4.568   1st Qu.:0.5099  
##  Median : 2647.0   Median :36.48     Median :5.268   Median :0.9186  
##  Mean   : 5186.0   Mean   :38.42     Mean   :5.422   Mean   :0.8419  
##  3rd Qu.: 6581.1   3rd Qu.:43.38     3rd Qu.:6.392   3rd Qu.:1.1495  
##  Max.   :22240.2   Max.   :63.73     Max.   :7.587   Max.   :1.5639
# jika hanya  ingin menampilkan peubah dependen dan independen, dapat menggunakan sintaks berikut: summary(data[, c(5,9)])

Model Linear

Scatter plot adalah grafik yang menampilkan nilai dari dua variabel dalam bentuk titik-titik pada bidang kartesius. Setiap titik pada scatter plot mewakili satu observasi, di mana satu variabel ditampilkan pada sumbu horizontal (X) dan variabel lainnya pada sumbu vertikal (Y). Dengan cara ini, scatter plot memungkinkan kita untuk melihat bagaimana dua variabel berhubungan satu sama lain. Berdasarkan plot dibawah, terdapat indikasi variabel X berhubungan secara linear dengan variabel Y.

Scatter Plot

# Plot
data$pc <- predict(prcomp(~happyScore+avg_income, data))[,1]
ggplot(data, aes(avg_income,happyScore, color=pc)) +
  geom_point(shape = 16, size = 3.5, show.legend = FALSE, alpha=0.5) +
  theme_minimal() + geom_smooth(formula=y~x,method = 'lm', col='black')+
  scale_color_gradient(low = "#0091ff", high = "#f0650e")+ labs(x="Rataan Pendapatan ($)", y="Tingkat Kebahagiaan")+ scale_x_continuous(labels = label_number(suffix = "K", scale = 1e-3))

Model Regresi Linear

# Model Regresi
MRL <- lm(happyScore~avg_income, data)
summary(MRL)
## 
## Call:
## lm(formula = happyScore ~ avg_income, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7981 -0.4940 -0.0584  0.4584  2.0922 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4.504e+00  9.916e-02   45.42   <2e-16 ***
## avg_income  1.425e-04  1.088e-05   13.10   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7392 on 109 degrees of freedom
## Multiple R-squared:  0.6117, Adjusted R-squared:  0.6082 
## F-statistic: 171.7 on 1 and 109 DF,  p-value: < 2.2e-16

Uji Asumsi

Uji asumsi dalam analisis regresi adalah serangkaian tes yang dilakukan untuk memastikan bahwa model regresi yang digunakan memenuhi asumsi-asumsi dasar yang diperlukan agar hasil analisis menjadi valid.

Normalitas

Uji normalitas bertujuan untuk memastikan bahwa residual dari model regresi mengikuti distribusi normal. Hal ini penting karena banyak uji statistik, seperti uji t dan F, mengasumsikan bahwa residual berdistribusi normal. Metode yang umum digunakan untuk menguji normalitas adalah uji Shapiro-Wilk dan uji Kolmogorov-Smirnov. Normalitas juga dapat dilihat dari representasi grafis dari distribusi frekuensi data. Dalam konteks uji normalitas, histogram dapat menunjukkan apakah data membentuk pola distribusi normal (kurva lonceng). Jika histogram menunjukkan bentuk yang simetris dan berbentuk lonceng, maka data dapat dianggap berdistribusi normal.

Histogram

ggplot(data, aes(x=happyScore)) +    
   geom_histogram(binwidth=.6, fill = "lightblue", alpha=0.9)+ labs(x="Tingkat Kebahagiaan", y="Jumlah")

Density Plot

ggplot(data, aes(x=happyScore))+
  geom_density(color="darkblue", fill="lightblue")+ labs(x="Tingkat Kebahagiaan", y="density")

Shapiro-Wilk

\(H_0 =\) Residual berdistribusi normal \(H_1 =\) Residual tidak berdistribusi normal

Berdasarkan uji normalitas menggunakan Shapiro-Wilk, diperoleh \(P-Value > \alpha\) maka kita gagal menolak \(H_0\). Ini berarti tidak ada cukup bukti untuk menyatakan bahwa data tidak berdistribusi normal, sehingga kita dapat menyimpulkan bahwa data tersebut berdistribusi normal.

shapiro.test(residuals(MRL))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(MRL)
## W = 0.9951, p-value = 0.9659

Homokedastisitas

Homoskedastisitas adalah kondisi di mana varians/ragam dari residual tetap konstan di seluruh rentang nilai variabel independen. Jika asumsi ini tidak terpenuhi disebut heteroskedastisitas, model regresi dapat memberikan estimasi yang tidak efisien dan hasil uji hipotesis yang tidak valid. Berdasarkan uji homokedastisitas dengan hipotesis: \(H_0 =\) Ragam Homogen \(H_1 =\) Ragam tidak homogen

diperoleh kesimpulan \(P-Value > \alpha\) maka kita gagal menolak \(H_0\). Ini berarti tidak ada cukup bukti untuk menyatakan bahwa ragam dari data tidak homogen, sehingga kita dapat menyimpulkan bahwa data tersebut memenuhi asumsi homokedastisitas.

library(lmtest)
bptest(MRL, data=data)
## 
##  studentized Breusch-Pagan test
## 
## data:  MRL
## BP = 1.5083, df = 1, p-value = 0.2194

Autokorelasi

Autokorelasi terjadi ketika residual dari model regresi tidak independen satu sama lain. Ini sering terjadi dalam data time series. Uji Durbin-Watson adalah salah satu metode yang dapat digunakan untuk mendeteksi autokorelasi. Berdasarkan uji Durbin-Watson dengan hipotesis: \(H_0 =\) Tidak ada autokorelasi dari galat \(H_1 =\) Ada auto korelasi dari galat

diperoleh kesimpulan \(P-Value > \alpha\) maka kita gagal menolak \(H_0\). Ini berarti tidak ada cukup bukti untuk menyatakan bahwa ada autokorelasi dari galat, sehingga kita dapat menyimpulkan bahwa data tersebut memenuhi asumsi Autokorelasi.

library(lmtest)
dwtest(MRL)
## 
##  Durbin-Watson test
## 
## data:  MRL
## DW = 1.9291, p-value = 0.3462
## alternative hypothesis: true autocorrelation is greater than 0

Interpretasi Model

Berdasarkan model yang terbentuk, diperoleh intercept sebesar 4.5 dan kemiringan (slope) sebesar 0.00014. Kenaikan gaji sebesar 1 satuan (1$) dapat meningkatkan kebahagiaan sebesar 0.00014 dengan menganggap variabel lain konstan.

Nilai \(R-squared = 0.61\) artinya tingkat kebahagiaan (happy score) dapat dijelaskan oleh rata-rata pendapatan (income) sebesar 61% sedangkan 39% dijelaskan oleh faktor lain diluar model.

A <- ggplot(data, aes(avg_income,happyScore)) + geom_point(shape = 16, size = 5.5, show.legend = FALSE, alpha=0.5) +
  theme_minimal() +
  scale_color_gradient(low = "#0091ff", high = "#f0650e")+ labs(y="Tingkat Kebahagiaan", x="Pendapatan ($)")+ scale_x_continuous(labels = label_number(suffix = "K", scale = 1e-3))
B <- A+geom_smooth(formula=y~x,method = 'lm', col='black')+
stat_regline_equation(aes(label=paste(..eq.label.., ..rr.label..,sep = "~~~~~~~")),label.x =2000, label.y = 8.3, position = "identity",geom = "label")
B