Analisis Regresi Linier Sederhana untuk Mengetahui Hubungan antara Lama Pengalaman Kerja dan Gaji

Dickna Nenden Woro Ramadityawati

Mei 2022

1 PENDAHULUAN

1.1 Latar Belakang

Pada zaman kemajuan teknologi ini membuat aktivitas kehidupan sehari-hari kita tidak terlepas dalam penggunaan smartphone, laptop, dan lain-lain yang mampu membantu mengolah data. Komputasi adalah pilihan yang tepat untuk data inputan yang menggunakan suatu algoritma. Komputasi bisa dilakukan dengan software yang mendukung analisisnya, seperti software R, spp, genstat, minitab, dan sebagainya. Dalam software R terdapat fasilitas untuk perhitungan, manipulasi, dan pembuatan grafik. Oleh karena itu, software R dapat digunakan untuk suatu analisis statistika. Namun, terdapat kelemahan dari software ini yaitu diperlukan syntax agar dapat mengetahui hasil dari analisis statistika tersebut. Maka, dalam praktikum ini akan membahas mengenai salah satu analisis yang dilakukan menggunakan aplikasi R yaitu analisis regresi linier sederhana untuk mengetahui pengaruh lama pengalaman kerja karyawan terhadap banyaknya gaji yang didapat.

1.2 Tinjauan Pustaka

1.2.1 Statistika Deskriptif

Statistik deskriptif merupakan proses transformasi data penelitian dalam bentuktabulasi sehingga mudah dipahami dan diinterpretasikan. Statistik deskripstifberfungsi mempelajari tata cara pengumpulan, pencatatan, penyusunan danpenyajian data penelitian dalam bentuk tabel frekuensi atau grafik dan selanjutnyadilakukan pengukuran nilai-nilai statistiknya seperti mean/rerata aritmetik, median,modes, deviasi standar. Pada umumnya memberikan informasi mengenaikarakteristik variabel penelitian utama dan data demografi responden.

1.2.2 Statistik Inferensial

Statistik inferensial merupakan penerapan metode statistik untuk menaksir dan atau menguji karakteristik populasi yang dihipotesiskan berdasarkan data sampel.Ilmu pengetahuan statistik yang bertugas mempelajari tata cara penarikankesimpulan mengenai keseluruhan populasi berdasarkan data hasil penelitianpada sampel (bagian dari populasi). Berdasarkan asumsi yang mendasarinya, statistik inferensial dibedakan menjadi dua yaitu : a. Statistik Parametrik. Pendugaan dan uji hipotesis dari parameter populasi didasarkan anggapan bahwa skor-skor yang dianalisis telah ditarik dari suatu populasi dengan ditribusi tertentu

  1. Statistik Nonparametrik. Pendugaan dan uji hipotesis dari parameter populasi anggapan bahwa skor-skor yang dianalisis telah ditarik dari suatu populasi dengan bebas sebaran (tidak mengikuti distribusi tertentu)

1.2.3 Analisis Regresi Linier Sederhana

Analisis regresi linier sederhana adalah hubungan secara linear antara satu variabel independen (X) dengan variabel dependen (Y). Analisis regresi sederhana dapat digunakan untuk mengetahui arah dari hubungan antara variabel bebas dengan variabel terikat, apakah memiliki hubungan positif atau negatif serta untuk memprediksi nilai dari variabel terikat apabila nilai variabel bebas mengalami kenaikan ataupun penurunan. Pada regresi sederhana biasanya data yang digunakan memiliki skala interval atau rasio.

Rumus regresi linier sederhana sebagai berikut: \[ Y= a+bX \] dimana:
Y = Variabel tak bebas (nilai yang akan diprediksi) X = Variabel bebas (variabel ndependent)
a = Konstanta (nilai dari Y apabila X=0) b = koefisien regresi (pengaruh positif atau negatif)

1.2.4 Analisis Korelasi

Analisis koefisien korelasi pada penelitian ini menggunakan analisis koefisien korelasi pearson. Analisis koefisien korelasi pearson digunakan untuk mengukur hubungan antara disiplin kerja (X) dan variabel kinerja (Y).

Rumus yang digunakan untuk uji korelasi menurut Sugiyono (2012) yaitu : \[ r = \frac{n \sum xy - \sum x \sum y} {\sqrt(n \sum x^2 - (\sum x)^2)(n \sum y^2 -(\sum y)^2)} \] dimana: r = Koefisien korelasi
n = Jumlah data
X = Variabel Bebas (Independen)
Y = Variabel terikat (Dependen)

1.2.5 Uji Asumsi Klasik

Uji asumsi klasik ini merupakan uji prasyarat yang dilakukan sebelum melakukan analisis lebih lanjut terhadap data yang telah dikumpulkan. Pengujian asumsi klasik ini ditujukan agar dapat menghasilkan model regresi yang memenuhi kriteria BLUE (Best Linier Unbiased Estimator). Untuk mengetahui apakah model regresi yang akan digunakan telah memenuhi kriteria BLUE maka perlu dilakukan serangkaian pengujian yaitu Uji Normalitas, Uji Multikolinieritas, Uji Heteroskedastisitas, dan Uji Autokorelasi

2 SOURCE CODE

2.1 Library yang Dibutuhkan

> library(rmarkdown) #membuat markdown dengan Bahasa R menggunakan Rstudio 
> library(prettydoc) #membuat tampilan dokumen menjadi lebih cantik
> library(tinytex) #membantu fungsi untuk menginstall dan memperbaiki TeXLive dan meng-compile LaTeX dokumen
> library(equatiomatic)  #Mengubah model menjadi persamaan LaTeX
> library(car) #pendamping analisis regresi yang diterapkan
> library(tseries) #analisis time series dan komputasi keuangan
> library(lmtest)  #pengujian model regresi linier

2.2 Data

Berikut adalah data yang akan digunakan (Data terdiri dari 30 obervasi dengan 2 variabel).

> datagaji<- read.csv(file.choose(), header=TRUE)
> head(datagaji)
  YearsExperience Salary
1             1.1  39343
2             1.3  46205
3             1.5  37731
4             2.0  43525
5             2.2  39891
6             2.9  56642
> str(datagaji)
'data.frame':   30 obs. of  2 variables:
 $ YearsExperience: num  1.1 1.3 1.5 2 2.2 2.9 3 3.2 3.2 3.7 ...
 $ Salary         : num  39343 46205 37731 43525 39891 ...
> paged_table(as.data.frame(datagaji))

Keterangan: -datagaji<-read.csv(file.choose(), header=TRUE) untuk memilih file yang disimpan pada komputer dalam bentuk csv di folder. - datagaji untuk memanggil file yang sudah disimpan pada obyek bernama datagaji.

2.3 Analisis Grafik

2.3.1 Scatter plot

> scatter.smooth(x=datagaji$YearsExperience, y=datagaji$Salary, main="Gambar 1. Smooth Scatter Plot Salary~YearsExperience", xlab="Salary", ylab="Years Experience", pch=16, col="brown1") # scatterplot

2.3.2 Box plot

> par(mfrow=c(1,2))  #Membagi area grafik menjadi 2 kolom
> boxplot(datagaji$YearsExperience, main="Gambar 2.1. Boxplot Years Experience",sub=paste("Outlier rows: ", boxplot.stats(datagaji$YearsExperience)$out), col="darkseagreen1")   #box plot untuk YearsExperience
> 
> boxplot(datagaji$Salary, main="Gambar 2.2. Boxplot Salary",sub=paste("Outlier rows: ", boxplot.stats(datagaji$Salary)$out), col="darksalmon")   #box plot untuk Salary

2.3.3 Density plot

> par(mfrow=c(1,2))   #Membagi area grafik menjadi 2 kolom
> plot(density(datagaji$YearsExperience), main="Gambar 3.1. Density Plot : Year Experience", ylab="Frequency", sub=paste("Skewness: ", round(e1071::skewness(datagaji$YearsExperience),2)))   #desity plot untuk YearsExperience
> polygon(density(datagaji$YearsExperience), col="darkolivegreen3")
> 
> plot(density(datagaji$Salary), main="Gambar 3.2. Density Plot : Salary", ylab="Frequency", sub=paste("Skewness: ", round(e1071::skewness(datagaji$Salary),2)))   #desity plot untuk Salary
> polygon(density(datagaji$Salary), col="deepskyblue3")

2.4 Analisis Korelasi

Analisis korelasi pada kasus ini untuk mengetahui hubungan antara lamanya pengalaman karyawan dengan banyaknya gaji yang didapatkan.

> cor(datagaji[1:2], method="pearson")  #menghitung korelasi antara YearsExperience dengan banyaknya gaji
                YearsExperience    Salary
YearsExperience       1.0000000 0.9782416
Salary                0.9782416 1.0000000

2.5 Analisis Regresi

Analisis untuk meramalkan pengaruh variabel prediktor terhadap variable kriterium untuk membuktikan ada atau tidaknya hubungan fungsional antara variabel bebas (X) dengan sebuah variabel terikat (Y). Setelah melihat hubungan linier secara visual dan dengan menghitung korelasinya, maka langkah selanjutnya yaitu membentuk model analisis regresi sebagai berikut:

2.5.1 Analisis Koefisien Model

2.5.1.1 Penduga Beta

\[ \hat\beta=(X'X) ^-~^1 X'Y \]

> X<-datagaji$YearsExperience
> Y<-datagaji$Salary
> datagaji2<-data.frame(X,Y)
> n<-dim(datagaji)[1]   #dimensi data
> n
[1] 30
> X<-matrix(c(rep(1,n),datagaji$YearsExperience),nrow=n)
> X
      [,1] [,2]
 [1,]    1  1.1
 [2,]    1  1.3
 [3,]    1  1.5
 [4,]    1  2.0
 [5,]    1  2.2
 [6,]    1  2.9
 [7,]    1  3.0
 [8,]    1  3.2
 [9,]    1  3.2
[10,]    1  3.7
[11,]    1  3.9
[12,]    1  4.0
[13,]    1  4.0
[14,]    1  4.1
[15,]    1  4.5
[16,]    1  4.9
[17,]    1  5.1
[18,]    1  5.3
[19,]    1  5.9
[20,]    1  6.0
[21,]    1  6.8
[22,]    1  7.1
[23,]    1  7.9
[24,]    1  8.2
[25,]    1  8.7
[26,]    1  9.0
[27,]    1  9.5
[28,]    1  9.6
[29,]    1 10.3
[30,]    1 10.5
> Y
 [1]  39343  46205  37731  43525  39891  56642  60150  54445  64445  57189
[11]  63218  55794  56957  57081  61111  67938  66029  83088  81363  93940
[21]  91738  98273 101302 113812 109431 105582 116969 112635 122391 121872
> k<-dim(X)[2]   #dimensi data variabel X
> k
[1] 2
> b_topi<-(solve(t(X)%*%X))%*%(t(X)%*%Y)   #Penduga beta
> b_topi  
          [,1]
[1,] 25792.200
[2,]  9449.962

2.5.1.2 Penduga Respons (Y)

\[ \hat Y=X \hat\beta \]

> Y_topi<-X%*%b_topi   #Penduga respon (Y)
> Y_topi  
           [,1]
 [1,]  36187.16
 [2,]  38077.15
 [3,]  39967.14
 [4,]  44692.12
 [5,]  46582.12
 [6,]  53197.09
 [7,]  54142.09
 [8,]  56032.08
 [9,]  56032.08
[10,]  60757.06
[11,]  62647.05
[12,]  63592.05
[13,]  63592.05
[14,]  64537.05
[15,]  68317.03
[16,]  72097.02
[17,]  73987.01
[18,]  75877.00
[19,]  81546.98
[20,]  82491.97
[21,]  90051.94
[22,]  92886.93
[23,] 100446.90
[24,] 103281.89
[25,] 108006.87
[26,] 110841.86
[27,] 115566.84
[28,] 116511.84
[29,] 123126.81
[30,] 125016.80

2.5.1.3 Penduga U (sisaan)

\[ \hat u=Y-\hat Y \]

> sisa_utopi<-Y - Y_topi   #sisaan (vektor selisih)
> sisa_utopi   
            [,1]
 [1,]  3155.8412
 [2,]  8127.8488
 [3,] -2236.1437
 [4,] -1167.1248
 [5,] -6691.1173
 [6,]  3444.9091
 [7,]  6007.9128
 [8,] -1587.0796
 [9,]  8412.9204
[10,] -3568.0608
[11,]   570.9467
[12,] -7798.0495
[13,] -6635.0495
[14,] -7456.0457
[15,] -7206.0306
[16,] -4159.0156
[17,] -7958.0080
[18,]  7210.9995
[19,]  -183.9779
[20,] 11448.0259
[21,]  1686.0560
[22,]  5386.0673
[23,]   855.0975
[24,] 10530.1088
[25,]  1424.1276
[26,] -5259.8611
[27,]  1402.1577
[28,] -3876.8385
[29,]  -735.8121
[30,] -3144.8046

2.5.2 Analisis Ragam

> 
> Ybar<-rep(mean(Y),n)   #nilai rata-rata variabel Y diulang sebanyak n kali
> Ybar
 [1] 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003
[13] 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003 76003
[25] 76003 76003 76003 76003 76003 76003
> 
> JKRegresi<-t(Y_topi-Ybar)%*%(Y_topi-Ybar)   #Jumlah keragaman regresi
> JKRegresi
            [,1]
[1,] 20856849300
> 
> JKGalat<-t(Y-Y_topi)%*%(Y-Y_topi)   #Jumlah keragaman galat
> JKGalat
          [,1]
[1,] 938128552
> 
> JKTotal<-t(Y-Ybar)%*%(Y-Ybar)   #Jumlah keragaman total
> JKTotal
            [,1]
[1,] 21794977852
> 
> JK<-c(JKRegresi, JKGalat, JKTotal)   #gabungan jumlah kuadrat
> JK
[1] 20856849300   938128552 21794977852
> 
> dbregresi<-k-1   #derajat bebas regresi
> dbTotal<-n-1     #derajat bebas total
> dbGalat<-dbTotal-dbregresi   #derajat bebas galat
> db<-c(dbregresi, dbGalat, dbTotal)   #gabungan derajat bebas
> db
[1]  1 28 29
> 
> KT<-JK/db   #kuadrat tengah
> KT
[1] 20856849300    33504591   751550960
> 
> sk<-c("Regresi", "Galat", "Total")   #sumber keragaman
> sk
[1] "Regresi" "Galat"   "Total"  
> 
> anregresi<-data.frame(sk,JK,db,KT)   #data frame gabungan sk, JK, db, dan KT untuk membentuk suatu tabel
> names(anregresi)<-c("SK","JK","db","KT")   
> anregresi
       SK          JK db          KT
1 Regresi 20856849300  1 20856849300
2   Galat   938128552 28    33504591
3   Total 21794977852 29   751550960

2.5.3 Hasil Uji Serempak(uji F)

Rumus: \[ F=\frac{KT Regresi} {KT Galat} \]

> F_hit<-anregresi$KT[1]/anregresi$KT[2]   #F hitung
> F_hit
[1] 622.5072
> 
> pf<-pf(F_hit, anregresi$db[1],anregresi$db[2], lower.tail=FALSE)   #menghitung p-value 
> pf
[1] 1.143068e-20

2.5.4 Hasil Uji Partial (uji t)

Rumus statistik uji:

\[ se(\hat\beta~j~)= \sqrt{var(\hat\beta~j~)} \] \[ var(\hat\beta~j)=\hat\sigma^2 (X'X)^-~^1 \]

> var_cov<-anregresi$KT[2]*solve(t(X) %*% X)   #mencari ragam peragam
> var_cov
          [,1]      [,2]
[1,] 5166771.9 -762224.4
[2,] -762224.4  143455.0
> sd<-rep(0,k)
> for(i in 1:k){
+   sd[i]<-sqrt(var_cov[i,i])
+ }
> sd
[1] 2273.0534  378.7546

\[ T=\frac{\hat\beta~j~-\beta~j~}{se(\hat\beta~j~)}, menyebar secara ~~t(n-k) \]

Menghitung statistik uji t masing-masing penduga beta:

> t<-b_topi/sd
> t
         [,1]
[1,] 11.34694
[2,] 24.95009

Menghitung nilai p-value masing-masing penduga beta:

> p<-2*pt(abs(t), areg$db[2], lower.tail=FALSE)
Error in pt(abs(t), areg$db[2], lower.tail = FALSE): object 'areg' not found
> p
Error in eval(expr, envir, enclos): object 'p' not found

2.5.5 Selang Kepercayaan Parameter

\[ Selang~kepercayaan~(1-\alpha)*100\% ~~bagi~~ \beta~j \]

> alpha<-0.05
> ttabel<-qt(alpha/2,anregresi$db[2], lower.tail=FALSE)
> ttabel
[1] 2.048407
> 
> batasbawah_sk<-b_topi-(ttabel*sd)   #menghitung batas bawah selang
> batasbawah_sk
          [,1]
[1,] 21136.061
[2,]  8674.119
> batasatas_sk<-b_topi+(ttabel*sd)   #menghitung batas atas selang
> batasatas_sk
         [,1]
[1,] 30448.34
[2,] 10225.81
> 
> selangkepercayaan<-cbind(batasbawah_sk, batasatas_sk)   #membuat selang kepercayaan berdasarkan batas atas dan batas bawah
> selangkepercayaan
          [,1]     [,2]
[1,] 21136.061 30448.34
[2,]  8674.119 10225.81

2.5.6 Koefisien Determinasi dan Adjusted Koefisien Determinasi

Koefisien determinasi: \[ R^2=\frac{JK~Regresi}{JK~Total} \]

Hasil pada Rstudio:

> R2<-anregresi$JK[1]/anregresi$JK[3]
> R2
[1] 0.9569567

Adjusted koefisien determinasi: \[ adjusted~R^2=1-\frac{JK~Galat/(n-k)}{JK~Total/(n-1)} \]

Hasil pada Rstudio:

> adjustedR2<-1-((anregresi$JK[1]/dbGalat)/(anregresi$JK[3]/dbTotal))
> adjustedR2
[1] 0.008866312

2.6 Analisis Regresi dengan Fungsi Built In

2.6.1 Analisis Koefisien Model

> X<-datagaji$YearsExperience
> Y<-datagaji$Salary
> regresi<-lm(Y~X, data=datagaji) #membentuk analisis regresi sederhana
> print(regresi)

Call:
lm(formula = Y ~ X, data = datagaji)

Coefficients:
(Intercept)            X  
      25792         9450  
> extract_eq(regresi, use_coefs = TRUE) #membentuk model analisis regresi sederhana beserta nilai koefisiennya

\[ \operatorname{\widehat{Y}} = 25792.2 + 9449.96(\operatorname{X}) \]

> summary(regresi) #memanggil koefisien model menggunakan syntax sebagai berikut.

Call:
lm(formula = Y ~ X, data = datagaji)

Residuals:
    Min      1Q  Median      3Q     Max 
-7958.0 -4088.5  -459.9  3372.6 11448.0 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  25792.2     2273.1   11.35 5.51e-12 ***
X             9450.0      378.8   24.95  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5788 on 28 degrees of freedom
Multiple R-squared:  0.957, Adjusted R-squared:  0.9554 
F-statistic: 622.5 on 1 and 28 DF,  p-value: < 2.2e-16

2.6.2 Analisis Ragam

> anova(regresi) #memanggil hasil analisis ragam 
Analysis of Variance Table

Response: Y
          Df     Sum Sq    Mean Sq F value    Pr(>F)    
X          1 2.0857e+10 2.0857e+10  622.51 < 2.2e-16 ***
Residuals 28 9.3813e+08 3.3505e+07                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.6.3 Hasil Uji Serempak (uji F)

> f_hit <- regresi$fhit[1] #menghitung statistik uji f
> f <- summary(regresi)$fstatistic  
> f
   value    numdf    dendf 
622.5072   1.0000  28.0000 
> p_value <- pf(f[1], f[2], f[3], lower=FALSE) #menghitung p value
> p_value
       value 
1.143068e-20 

2.6.4 Hasil Uji Partial (uji t)

> regresi

Call:
lm(formula = Y ~ X, data = datagaji)

Coefficients:
(Intercept)            X  
      25792         9450  
> model_sum <- summary(regresi) #membuat model_sum sebagai sebuah objek 
> model_coef <- model_sum $ coefficients #model koefisien 
> beta.duga <- model_coef["X", "Estimate"] #mencari beta duga untuk kecepatan
> std.error <- model_coef["X", "Std. Error"] #mencari standar error untuk kecepatan
> t_hit <- beta.duga/std.error #menghitung statistik uji t
> t_hit
[1] 24.95009
> p_value <- 2*pt(-abs(t_hit)  ,df=nrow(datagaji)-ncol(datagaji)) #menghitung p value
> p_value
[1] 1.143068e-20

##PENGUJIAN ASUMSI ###Uji Normalitas galat Uji Jarque Berra

H0 : Pengamatan menyebar normal H1 : Pengamatan tidak menyebar normal

> library(tseries)
> sisa<-residuals(regresi)
> jarque.bera.test(sisa)

    Jarque Bera Test

data:  sisa
X-squared = 1.5691, df = 2, p-value = 0.4563

###Uji Saphiro Wilk

H0 : Pengamatan menyebar normal H1 : Pengamatan tidak menyebar normal

> shapiro.test(sisa)

    Shapiro-Wilk normality test

data:  sisa
W = 0.95234, p-value = 0.1952

###Uji homogenitas ragam galat Uji Breusch Pagan

H0 : asumsi homogenitas ragam galat terpenuhi H1 : asumsi homogenitas ragam galat tidak terpenuhi

> library(lmtest)
> bptest(regresi)

    studentized Breusch-Pagan test

data:  regresi
BP = 0.39905, df = 1, p-value = 0.5276

###uji non autokorelasi galat Uji DW

H0 : tidak terdapat masalah autokorelasi H1 : terdapat masalah autokorelasi

> library(lmtest)
> dwtest(regresi)

    Durbin-Watson test

data:  regresi
DW = 1.648, p-value = 0.1178
alternative hypothesis: true autocorrelation is greater than 0

3 HASIL DAN PEMBAHASAN

3.1 Analisis Grafik

3.1.1 Scatter Plot

Plot pencar atau scatter plot dapat membantu memvisualisasikan hubungan linier antara variabel dependen (respon) dan variabel independen (prediktor).

> scatter.smooth(x=datagaji$YearsExperience, y=datagaji$Salary, main="Gambar 1. Smooth Scatter Plot Salary~YearsExperience", xlab="Salary", ylab="Years Experience", pch=16, col="brown1") # scatterplot

Plot pencar bersama dengan garis smoothing di atas menunjukkan hubungan yang meningkat secara linier antara variabel ‘YearsExperience’ dan ‘Salary’. Ini adalah hal yang baik, karena salah satu asumsi yang mendasari regresi linier adalah bahwa hubungan antara variabel respon dan prediktor adalah linier dan aditif.

3.1.2 Box Plot

Box plot digunakan untuk menemukan pengamatan outlier dalam variabel. Data yang memiliki outlier di prediktor dapat secara drastis memengaruhi prediksi karena mereka dapat dengan mudah memengaruhi arah/kemiringan garis yang paling sesuai.

> par(mfrow=c(1,2))  #Membagi area grafik menjadi 2 kolom
> boxplot(datagaji$YearsExperience, main="Gambar 2.1. Boxplot Years Experience",sub=paste("Outlier rows: ", boxplot.stats(datagaji$YearsExperience)$out), col="darkseagreen1")   #box plot untuk YearsExperience
> 
> boxplot(datagaji$Salary, main="Gambar 2.2. Boxplot Salary",sub=paste("Outlier rows: ", boxplot.stats(datagaji$Salary)$out), col="darksalmon")   #box plot untuk Salary

Dari diagram boxplot di atas, diketahui bahwa secara visual dalam data variabel prediktor “Years Experience” dan variabel respons “Salary” tidak setangkup, karena panjang garis whisker tidak sama dan median tidak berada tepat di tengah-tengah kotak. Selain itu, juga dapat diketahui bahwa dari kedua variabel data tidak terdeteksi adanya pencilan atau outlier.

3.1.3 Density Plot

Density plot digunakan untuk melihat distribusi variabel prediktor (memeriksa apakah variabel respons mendekati normalitas). Idealnya, distribusi yang mendekati normal (kurva berbentuk lonceng), tanpa miring ke kiri atau kanan.

> par(mfrow=c(1,2))   #Membagi area grafik menjadi 2 kolom
> plot(density(datagaji$YearsExperience), main="Gambar 3.1. Density Plot : Year Experience", ylab="Frequency", sub=paste("Skewness: ", round(e1071::skewness(datagaji$YearsExperience),2)))   #desity plot untuk YearsExperience
> polygon(density(datagaji$YearsExperience), col="darkolivegreen3")
> 
> plot(density(datagaji$Salary), main="Gambar 3.2. Density Plot : Salary", ylab="Frequency", sub=paste("Skewness: ", round(e1071::skewness(datagaji$Salary),2)))   #desity plot untuk Salary
> polygon(density(datagaji$Salary), col="deepskyblue3")

Dari grafik diatas, secara visualisasi data variabel numerik bentuk distribusinya 4 cilinder.

3.2 Analisis Korelasi

Analisis korelasi pada kasus ini untuk mengukur kekuatan hubungan antara dua variabel yaitu variabel respons “Salary” dan variabel prediktor “Years Experience” dengan menggunakan metode pearson.

> cor(datagaji[1:2], method="pearson")  #menghitung korelasi antara YearsExperience dengan banyaknya gaji
                YearsExperience    Salary
YearsExperience       1.0000000 0.9782416
Salary                0.9782416 1.0000000

kuat lemah hubungan diukur diantara jarak (range) dari 0 sampai dengan 1. Dari hasil analisis di atas diketahui bahwa nilai korelasinya 0.9782416, hal ini berarti variabel “YearsExperience” dan variabel “Salary” memiliki hubungan yang sangat kuat. Selain, itu karena koefisien korelasi ditemukan positif (+) maka hubungan tersebut disebut sebagai korelasi sempurna atau hubungan linier sempurna dengan kemiringan (slope) positif.

3.3 Analisis Regresi

3.3.1 Analisis Koefisien Model

-hasil cara manual

-hasil cara built in

> X<-datagaji$YearsExperience
> Y<-datagaji$Salary
> regresi<-lm(Y~X, data=datagaji) #membentuk analisis regresi sederhana
> print(regresi)

Call:
lm(formula = Y ~ X, data = datagaji)

Coefficients:
(Intercept)            X  
      25792         9450  
  • nilai koefisien beta0 sebesar 25792 yang berarti apabila lama pengalaman kerja bernilai 0 maka jumlah gaji akan naik sebesar 25792
  • nilai koefisien beta1 sebesar 9450 yang berarti apabila lama pengalaman kerja naik sebesar 1 satuan maka jumlah gaji akan naik sebsar 9450
  • Bentuk persamaan regresinya adalah Y = 25792 + 9450X

3.3.2 Analisis Ragam

Analisis ragam atau anova digunakan untuk melihat perbandingan rata-rata dari dua kelompok atau lebih. Hal ini memudahkan analisis beberapa kelompok sampel yang berbeda dengan minimal risiko kesahalan. Pembentuk tabel analisis ragam: -Sumber keragaman regresi : keragaman yang disebabkan atas perbedaan perlakuan/kondisi
Galat : keragaman yang tidak dapat dikontrol(error)
Total
-Derajat bebas -Jumlah Kuadrat -Kuadrat Tengah -Fhitung -Ftabel -Kaidah keputusan Fhitung>= Ftabel-> tolak H0 (antar perlakuan berbeda yata/signifikan) Fhitung< Ftabel-> terima H0 (antar perlakuan tidak berbeda nyata)

Gambar susunan tabel: -Analisis ragam secara manual

-Analisis ragam fungsi built in

> anova(regresi) #memanggil hasil analisis ragam 
Analysis of Variance Table

Response: Y
          Df     Sum Sq    Mean Sq F value    Pr(>F)    
X          1 2.0857e+10 2.0857e+10  622.51 < 2.2e-16 ***
Residuals 28 9.3813e+08 3.3505e+07                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dari dua cara dalam analisis ragam di atas diketahui bahwa semua komponen keragaman memiliki nilai yang sama. Hal tersebut dibuktikan pada derajat bebas(df) regresi=1 dan df galat(residuals)=28. Sum square atau Jumlah keragaman regresi dan residuals(galat) sama yaitu berturut-turut 2.0857e+10 dan 9.3813e+08. Mean square atau Kuadrat tengah regresi dan residuals(galat) sama yaitu berturut-turut 2.0857e+10 dan 3.3505e+07

3.3.3 Hasil Uji Serempak (uji F)

Hipotesis:
H0 : beta(1)=beta(2)=…=beta(k)=0 H1 : paling tidak terdapat salah satu beta(j) != 0

-hasil cara manual

-hasil cara dengan fungsi built in

> f_hit <- regresi$fhit[1] #menghitung statistik uji f
> f <- summary(regresi)$fstatistic  
> f
   value    numdf    dendf 
622.5072   1.0000  28.0000 
> p_value <- pf(f[1], f[2], f[3], lower=FALSE) #menghitung p value
> p_value
       value 
1.143068e-20 

Tingkat signifikansi : 0.05
Statistik Uji : p-value = 1.143068e-20
Keputusan : Karena p-value(1.143068e-20) < alpha (0.05), maka tolak H0
Kesimpulan : Dengan taraf nyata 5%, dapat disimpulkan bahwa terdapat hubungan diantara dua variabel

3.3.4 Hasil Uji Partial (uji t)

hasil cara manual

hasil cara built in

> regresi

Call:
lm(formula = Y ~ X, data = datagaji)

Coefficients:
(Intercept)            X  
      25792         9450  
> model_sum <- summary(regresi) #membuat model_sum sebagai sebuah objek 
> model_coef <- model_sum $ coefficients #model koefisien 
> beta.duga <- model_coef["X", "Estimate"] #mencari beta duga untuk kecepatan
> std.error <- model_coef["X", "Std. Error"] #mencari standar error untuk kecepatan
> t_hit <- beta.duga/std.error #menghitung statistik uji t
> t_hit
[1] 24.95009
> p_value <- 2*pt(-abs(t_hit)  ,df=nrow(datagaji)-ncol(datagaji)) #menghitung p value
> p_value
[1] 1.143068e-20

Tingkat signifikansi : 0.05
Statistik Uji : p-value = 1.143068e-20
Keputusan : Karena p-value(1.143068e-20) < alpha (0.05), maka tolak H0
Kesimpulan : Dengan taraf nyata 5%, dapat disimpulkan bahwa terdapat hubungan antara kedua variabel

3.3.5 Selang Kepercayaan

Selang kepercayaan tidak melewati 0 maka dapat dinyatakan bahwa tolak H0 (terdapat hubungan antara kedua variabel)

3.3.6 Koefisien Determinasi dan Adjusted Koefisien Determinasi

> summary(regresi) #memanggil koefisien model menggunakan syntax sebagai berikut.

Call:
lm(formula = Y ~ X, data = datagaji)

Residuals:
    Min      1Q  Median      3Q     Max 
-7958.0 -4088.5  -459.9  3372.6 11448.0 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  25792.2     2273.1   11.35 5.51e-12 ***
X             9450.0      378.8   24.95  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5788 on 28 degrees of freedom
Multiple R-squared:  0.957, Adjusted R-squared:  0.9554 
F-statistic: 622.5 on 1 and 28 DF,  p-value: < 2.2e-16

\[ R^2=\frac{JK~Regresi}{JK~Total}=0.957 \] Interpretasi: Koefisien determinasi bernilai 0.957 yang berarti kemampuan variabel bebas dalam menjelaskan varians dari variabel terikatnya sebesar 95.7%

Adjusted koefisien determinasi: \[ adjusted~R^2=1-\frac{JK~Galat/(n-k)}{JK~Total/(n-1)}=0.9554 \]

Interpretasi: Adjusted koefisien determinasi bernilai 0.9554 yang berarti kemampuan variabel prediktor dalam menjelaskan variabel respon sebesar 95.54%

##Asumsi Klasik ### Uji Jarque Berra

H0 : Pengamatan menyebar normal H1 : Pengamatan tidak menyebar normal

> library(tseries)
> sisa<-residuals(regresi)
> jarque.bera.test(sisa)

    Jarque Bera Test

data:  sisa
X-squared = 1.5691, df = 2, p-value = 0.4563

Tingkat signifikansi : 0.05
Statistik Uji : p-value = 0.4563
Keputusan : Karena p-value(0.4563) < alpha(0.05), maka tolak H0
Kesimpulan : Dengan taraf signifikansi 5%, dapat disimpulkan bahwa residual tidak berdistribusi/tidak menyebar normal

3.3.7 Uji Saphiro Wilk

H0 : Pengamatan menyebar normal H1 : Pengamatan tidak menyebar normal

> shapiro.test(sisa)

    Shapiro-Wilk normality test

data:  sisa
W = 0.95234, p-value = 0.1952

Tingkat signifikansi : 0.05
Statistik Uji : p-value = 0.1952 Keputusan : Karena p-value(0.1952) < alpha(0.05), maka tolak H0
Kesimpulan : Dengan taraf signifikansi 5%, dapat disimpulkan bahwa residual tidak berdistribusi/tidak menyebar normal

3.3.8 Uji Breusch Pagan

Hipotesis: H0 : asumsi homogenitas ragam galat terpenuhi H1 : asumsi homogenitas ragam galat tidak terpenuhi

> library(lmtest)
> bptest(regresi)

    studentized Breusch-Pagan test

data:  regresi
BP = 0.39905, df = 1, p-value = 0.5276

Tingkat Signifikansi: 0.05 Statistik Uji: p-value: 0.5276 Keputusan: Karena p-value(0.5276) > alpha(0.05) maka terima H0 Kesimpulan: Dengan taraf nyata 5%, dapat disimpulkan bahwa asumsi homogenitas ragam galat terpenuhi

3.3.9 Uji Durbin-Watson

Hipotesis: H0 : tidak terdapat masalah autokorelasi H1 : terdapat masalah autokorelasi

> library(lmtest)
> dwtest(regresi)

    Durbin-Watson test

data:  regresi
DW = 1.648, p-value = 0.1178
alternative hypothesis: true autocorrelation is greater than 0

Tingkat Signifikansi: 0.05 Statistik Uji: p-value: 0.1178 Keputusan: Karena p-value(0.1178) < alpha(0.05) maka tolak H0 Kesimpulan: Dengan taraf nyata 5%, dapat disimpulkan bahwa terdapat masalah autokorelasi

4 DAFTAR PUSTAKA

Dataset : https://www.kaggle.com/datasets/karthickveerakumar/salary-data-simple-linear-regression Prrabhankaran, Selva.2016.Linear Regression. Diakses pada r-statistic.co Subandriyo, Budi.2020.Bahan Ajar:Analisis Korelasi dan Regresi. Diakses pada pusdiklat.bps.go.id
Mulyono.2019.Analisis Regresi Sederhana. diakses pada bbs.binus,ac,id
Santiyasa, I Wayan.2016.Modul Kuliah:Analisis Ragam.Universitas Udayana