Library:
> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")
> # install.packages("magrittr")
> # install.packages("nortest")
> # install.packages("normtest")
> # install.packages("lmtest")
> # install.packages("car")1 PENDAHULUAN
1.1 Latar Belakang
Kanker adalah penyakit heterogen yang berkarakteristik pertumbuhan dan penyebaran tidak terkontrol sel abnormal. Pada tahun 2017, Terdapat 42,042 kasus kanker pada penduduk Washington dengan 12,631 diantaranya menyebabkan kematian. Dengan estimasi mortalitas sebesar 29% . Pada tahun 2017, kanker juga menjadi penyebab kematian paling umum pada orang dewasa berumur diantara 45-84 tahun. Berdasarkan data nasional, bentuk kanker akan menyerang setidaknya 4 dari 10 penduduk Washington. Tujuan dari analisis adalah melihat hubungan antara latar belakang sosio-ekonomi terhadap kanker. Dengan dugaan awal daerah yang lebih miskin akan memiliki death rate kanker lebih tinggi.
1.2 Regresi
Metode analisis regresi digunakan untuk mencari bagaimana variabel respon dapat diprediksi menggunakan variabel prediktor. Analisis regresi yang menganalisis dua atau lebih variabel yang akan menjelaskan hubungan antara variabel.
a. Variabel respon adalah variabel yang dipengaruhi oleh variabel lain disimbolkan Y
b. Variabel prediktor adalah variabel yang tidak dipengaruhi variabel lain disimbolkan X
Berdasarkan jumlah dari variabel prediktor, ada dua tipe analisis regresi: analisis regresi linear sederhana dengan hanya satu variabel prediktor dan analisis regresi linier berganda dengan beberapa variabel prediktor.
1.3 Regresi Linier Multivariat
Regresi linier multivariat memprediksi perubahan nilai pada variabel tertentu ketika variabel lain berubah.
Model dari regresi liner multivariat: \[
Y_i=\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+...+u_i
\] Dalam formula matriks dapat dituliskan sebagai berikut:
\[
\begin{bmatrix}
y1 \\
y2 \\
.. \\
y3 \\
\end{bmatrix} =
\begin{bmatrix}
1 & x_11 & x_12 & .. & x_1k \\
1 & x_21 & x_22 & .. & x_2k \\
..& .. & .. & .. & .. \\
1 & x_n1 & x_n2 & .. & x_nk \\
\end{bmatrix}
\begin{bmatrix}
\beta_0 \\
\beta_1 \\
.. \\
\beta_k \\
\end{bmatrix} +
\begin{bmatrix}
\epsilon_1 \\
\epsilon_2 \\
.. \\
\epsilon_n \\
\end{bmatrix}
\]
Digunakan Metode Kuadrat Kecil \[ min \space u'u = (Y-X\beta)'(Y-X\beta) \] \[ u'u = Y'Y-2\beta'X'Y+\beta'X'X\beta \] \[ \frac{\partial(u'u)}{\partial\beta}=-2X'Y+2X'X\beta=0 \] \[ X'X\beta=X'Y \] \[ \beta=(X'X)^{-1}X'Y \] Menghitung varians dari \(\beta\) menggunakan \[ Var(\hat{\beta})=Var[\beta+(X'X)^{-1}X'u] \] \[ Var(\hat{\beta})=(X'X)^{-1}X'\sigma^2IX(X'X)^{-1} \] \[ Var(\hat{\beta})=\sigma^2(X'X)^{-1} \]
1.4 Asumsi Klasik
Terdapat beberapa asumsi sebelum melakukan analisis regresi linier berganda:
1. Normalitas
Uji apakah variabel prediktor dan varriabel respon berdistribusi normal
2. Homoskesdastisitas
Menentukan apakah nilai residu dari semua observasi model regresi sama. Semua residu dari tiap observasi memiliki varians yang sama.
3. Non-multikolinieritas
Untuk menguji apakah terdapat hubungan linier antar variabel prediktor. Apabila terdapat hubungan antar variabel prediktor, maka akan sulit untuk menyatakan hubungan antara variabel prediktor dan variabel respon.
4. Non-Autokorelasi
Untuk menguji apakah terdapat hubungan antar variabel prediktor.
1.5 Data
Data didapat dari American Community Survey (census.gov), clinicaltrials.gov dan cancer.gov dari https://data.world/nrippner/ols-regression-challenge dengan mengambil data pada daerah negara bagian Washington.
2 SOURCE CODE
2.1 Library yang Dibutuhkan
> # Library
> library(magrittr)
> library(summarytools)
> library(nortest)
> library(normtest)
> library(lmtest)
> library(car)2.2 Mendefinisikan Data
> #Input Data
> Data <- read.csv("C:/Users/Mamiek/Documents/cancer_reg.csv",header=T)
> #Membentuk Data Frame
> Data <- data.frame(Data$TARGET_deathRate,Data$incidenceRate,Data$medIncome,Data$popEst2015)
> Data <- Data[1:22,]
> colnames(Data) <- c('Y','X1','X2','X3')
> Y <- Data[,1]
> X <- Data[,-1]
> X <- cbind(cons=1,X) %>% as.matrix()Data diambil dari file bernama cancer_reg.csv. Function read.csv digunakan untuk membaca file berekstensi .csv. Argumen yang diisikan dalam function adalah alamat file dan argumen header bernilai T. Argumen header T digunakan sehingga baris pertama pada file dibaca sebagai nama kolom.
2.3 Regresi Menggunakan fungsi
> modelreg <- lm(Y~X1+X2+X3,data=Data)
> summary(modelreg)
Call:
lm(formula = Y ~ X1 + X2 + X3, data = Data)
Residuals:
Min 1Q Median 3Q Max
-35.424 -5.929 -0.628 5.549 30.986
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.688e+02 4.147e+01 4.070 0.000719 ***
X1 1.210e-01 8.796e-02 1.375 0.185883
X2 -1.138e-03 6.068e-04 -1.875 0.077094 .
X3 1.990e-05 2.074e-05 0.959 0.350061
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 16.28 on 18 degrees of freedom
Multiple R-squared: 0.2052, Adjusted R-squared: 0.0727
F-statistic: 1.549 on 3 and 18 DF, p-value: 0.2364Function lm digunakan untuk melakukan regresi linier. Argument yang diisikan dalam function adalah Y~X1+X2+X3 dengan data=Data. Argument ini digunakan untuk menyatakan regresi linier dilakukan terhadap variabel respon Y dan variabel prediktor X1, X2, dan X3 pada variabel Data.
2.4 Asumsi dalam regresi
Uji normalitas
> #Normalitas Galat (uji)
> modelreg %>% residuals() %>% shapiro.test()
Shapiro-Wilk normality test
data: .
W = 0.95985, p-value = 0.4862
> modelreg %>% residuals() %>% nortest::ad.test()
Anderson-Darling normality test
data: .
A = 0.44648, p-value = 0.2557
> modelreg %>% residuals() %>% normtest::jb.norm.test()
Jarque-Bera test for normality
data: .
JB = 0.53224, p-value = 0.706Function shapiro.test(),ad.test() pada library nortest, jb.norm.test() digunakan untuk melakukan uji normalitas menggunakan shapiro-wilk, anderson darling dan jarque bera secara berurutan. Argumen yang digunakan adalah residual dari model regresi yang didapat menggunakan function residuals().
Uji Homoskesdastisitas
> #Homoskedastisitas (uji)
> modelreg %>% bptest()
studentized Breusch-Pagan test
data: .
BP = 6.2182, df = 3, p-value = 0.1015Function bptest() digunakan untuk melakukan uji homoskesdastisitas menggunakan Breusch Pagan. Argumen yang digunakan adalah model regresi pada variabel modelreg.
Uji Non-Multikolinieritas
> #Non-multikolinieritas
> modelreg %>% vif()
X1 X2 X3
1.444956 1.919751 1.971877 Function vif() digunakan untuk melakukan uji non-multikolinieritas menggunakan nilai VIF (Variance Inflation Factor).
Uji Non-Autokorelasi
> #Non-autokorelasi
> modelreg %>% dwtest()
Durbin-Watson test
data: .
DW = 1.743, p-value = 0.2546
alternative hypothesis: true autocorrelation is greater than 0Function dwtest() digunakan untuk melakukan uji Non-Autokorelasi menggunakan uji Durbin-Watson.
2.5 Regresi dengan cara manual
> beta<-solve(t(X)%*%X)%*%(t(X)%*%Y)
> beta
[,1]
cons 1.687601e+02
X1 1.209829e-01
X2 -1.137801e-03
X3 1.989604e-05Menghitung beta menggunakan \[
\beta = (X'X)^{(-1)}(X'Y)
\] Function solve digunakan untuk menghitung invers dari matriks.
Function t digunakan untuk menghitung transpos dari matriks. Operasi %*% digunakan untuk menghitung perkalian antar matriks.
Menghitung Uji Simultan F
> n<-nrow(Data)
> k<-ncol(Data)
> Y_hat<-X%*%beta
> e <-Y-Y_hat
> Ybar <- mean(Y)
> #Vektor JK
> JKTotal<-t(Y-Ybar)%*%(Y-Ybar)
> JKReg<-t(Y_hat-Ybar)%*%(Y_hat-Ybar)
> JKGalat<-t(Y-Y_hat)%*%(Y-Y_hat)
> JK<-c(JKReg, JKGalat, JKTotal)
> #Vektor db
> dbReg<-k-1
> dbTotal<-n-1
> dbGalat<-dbTotal-dbReg
> db<-c(dbReg, dbGalat, dbTotal)
> #Vektor KT
> KT<-JK/db
> #Vektor nama
> su<-c("Regresi","Galat","Total")
> #Penggabungan Tabel analisis ragam
> anreg<-data.frame(su,JK,db,KT)
> names(anreg)<-c("SK","JK","db","KT")
> anreg
SK JK db KT
1 Regresi 1231.706 3 410.5686
2 Galat 4771.565 18 265.0870
3 Total 6003.271 21 285.8700
> #Menghitung F hitung
> F_hit<-anreg$KT[1]/anreg$KT[2]
> F_hit
[1] 1.548807
> pF<-pf(F_hit,anreg$db[1],anreg$db[2],lower.tail=F)
> pF
[1] 0.2363545Menghitung Y duga (\(\hat y\)) menggunakan \[
\hat{y} = X \beta
\] Menghitung sisaan menggunakan \[
e = y - \hat{y}
\] Menghitung Jumlah Kuadrat Total, Regresi, dan JK Galat menggunakan \[
JK_{total}=JK-{Regresi}+JK_{Galat}
\] \[
\sum_{i=1}^{n}{(Y_i-\bar{Y})^2}=\sum_{i=1}^{n}{(\hat{Y_i}-\bar{Y})^2}+\sum_{i=1}^{n}{(Y_i-\hat{Y_i})^2}
\] Untuk Menghitung Fhit \[
F_{hit}=\frac{KT_{Regresi}}{KT_{Galat}} \sim F^{\alpha}_{db1,db2}
\] Function pF digunakan untuk menghitung nilai p dari distribusi F. Argumen yang digunakan adalah Fhit, dbRegresi, dbgalat dengan lower.tail bernilai F. Argument ini digunakan untuk mencari luasan disebelah kanan nilai Fhit. Menghitung R-square
> #Menghitung R-square
> R2<-anreg$JK[1]/anreg$JK[3]
> R2
[1] 0.2051724menggunakan \[ R_2=\frac {JK_{regresi}}{JK_{total}} \]
Uji Parsial T
> VarCov<-anreg$KT[2]*solve(t(X)%*%X)
> VarCov
cons X1 X2 X3
cons 1.719457e+03 -2.695361e+00 -1.185927e-02 5.119370e-04
X1 -2.695361e+00 7.737261e-03 -1.267339e-05 -5.201931e-07
X2 -1.185927e-02 -1.267339e-05 3.681882e-07 -6.989489e-09
X3 5.119370e-04 -5.201931e-07 -6.989489e-09 4.300513e-10
> Se <- VarCov %>% diag() %>% sqrt()
> Se
cons X1 X2 X3
4.146634e+01 8.796170e-02 6.067851e-04 2.073768e-05
> SU <- beta/Se
> SU
[,1]
cons 4.0698110
X1 1.3754039
X2 -1.8751304
X3 0.9594151
> pVal <- c(2*pt(abs(SU[1]),n-k,lower.tail=F),
+ 2*pt(abs(SU[-1]),n-k,lower.tail=F))
> pVal
[1] 0.0007189313 0.1858832057 0.0770938381 0.3500607049
> data.frame(
+ Koefisien = beta %>% rownames(),
+ beta = beta %>% round(4),
+ std.error = Se %>% round(3),
+ Stat.Uji = SU %>% round(3),
+ pValue = pVal %>% round(3),
+ Sig = ifelse(pVal < 0.001, "***",
+ ifelse(pVal < 0.01, "**",
+ ifelse(pVal < 0.05, "*",
+ ifelse(pVal < 0.1, ".",""))))
+ )
Koefisien beta std.error Stat.Uji pValue Sig
cons cons 168.7601 41.466 4.070 0.001 ***
X1 X1 0.1210 0.088 1.375 0.186
X2 X2 -0.0011 0.001 -1.875 0.077 .
X3 X3 0.0000 0.000 0.959 0.350 Menghitung varians dari koefisien menggunakan \[ {\hat{\sigma}}^{2}=KT_{Galat} \] \[ var(\hat{\beta})={\hat{\sigma}}^{2}(X'X)^{-1} \] \[ se(\hat{\beta})={\hat{\sigma}}(X'X)^{-1} \] Nilai Thitung dari uji didapat menggunakan \[ T_{hit} = \frac{\hat{\beta_j}}{se(\hat{\beta_j})} \sim t_{n-k} \] # HASIL DAN PEMBAHASAN
2.6 Asumsi Regresi (Normalitas Sisaan)
Didapatkan nilai :
Uji | Statistik Uji | Nilai p :—————:|:————–:|:———: Shapiro-Wilk| W = 0.95985 | 0.4862 Anderson-Darling| A = 0.44648 | 0.2557 Jarque-Bera| JB = 0.53224 | 0.704
Table: Hasil Uji Normalitas Berdasarkan Data yang digunakan, diperoleh nilai p cukup besar sehingga lebih dari \(\alpha = 0.05\) (p > 0.05) sehingga diputuskan untuk gagal tolak H0. Tidak terbukti ada pelanggaran asumsi normalitas galat pada model.
2.7 Asumsi Regresi (Homoskedastisitas)
Didapatkan nilai uji Breusch Pagan 6.2182 dengan nilai p cukup besar sehingga lebih dari \(\alpha = 0.05\) (p > 0.05) sehingga diputuskan untuk gagal tolak H0. Tidak terbukti ada pelanggaran asumsi homoskedastisitas pada model.
2.8 Asumsi Regresi (Non-Multikolinieritas)
Didapatkan nilai dari ketiga variabel prediktor bernilai kurang dari 10. Tidak terbukti ada multikolinieritas.
2.9 Asumsi Regresi (Non-Autokorelasi)
Didaptkan nilai uji Durbin-Watson 1.743 dengan nilai p cukup besar sehingga lebih dari \(\alpha = 0.05\) (0.2546 > 0.05) sehingga diputuskan untuk gagal tolak H0. Tidak ada cukup bukti untuk keberadaan autokorelasi.
2.10 Asumsi Regresi
Berdasarkan uji yang dilakukan, Data yang digunakan memenuhi keempat asumsi sehingga dapat digunakan Regresi Linier Berganda sebab baik variabel respon dan prediktor memiliki skala data rasio atau kontinu.
2.11 Model Regresi
Didapatkan model regresi berikut: \[
\hat{Y}= 168.8 + 0.121X_1 + 0.001X_2 + 0.000019 X_3
\] Dengan \(\beta_0=168.8\), Ketika Rata-rata kasus kanker perkapita, median pendapatan, dan populasi tiap kota di negara bagian Washington bernilai 0, maka mortalitas penyakit kanker sebesar 168.8
Dengan \(\beta_1=0.121\), Setiap kenaikan rata-rata kasus kanker perkapita sebesar 1 satuan akan meningkatkan mortalitas penyakit kanker sebesar 0.121 satuan. Dimana median pendapatan dan populasi tiap kota di negara bagian Washington dianggap konstan.
Dengan \(\beta_2=0.001\), Setiap kenaikan median pendapatan sebesar 1 satuan akan meningkatkan mortalitas penyakit kanker sebesar 0.001 satuan. Dimana rata-rata kasus kanker perkapita dan populasi tiap kota di negara bagian Washington dianggap konstan.
Dengan \(\beta_2=0.000019\), Setiap kenaikan populasi sebesar 1 satuan akan meningkatkan mortalitas penyakit kanker sebesar 0.000019 satuan. Dimana rata-rata kasus kanker perkapita dan median pendapatan tiap kota di negara bagian Washington dianggap konstan.
2.12 Uji Simultan F
Hipotesis :
H0 : \(\beta_0=\beta_1=\beta_2=\beta_3=0\)
H1 : minimal ada 1 \(\beta_j\neq0\)
Statistik Uji : \(F_{hit}=1.549\) dengan nilai p = 0.2364
Keputusan : Didapatkan nilai p cukup besar sehingga lebih dari \(\alpha=0.05\)
Interpretasi : Pada taraf nyata 5% dapat dikatakan bahwa tidak ada variabel prediktor yang berpengaruh secara signifikan terhadap mortalitas kanker.
#Uji Parsial T
Hipotesis :
H0 : \(\beta_j=0\)
H1 : \(\beta_j\neq0\)
Statistik Uji:
- |\(t_{\beta_0}\)|\(t_{\beta_1}\)|\(t_{\beta_2}\)|\(t_{\beta_3}\)
:—–:|:———–:|:———–:|:———–:|:———–: Uji t |4.07|1.375|-1.875|0.959 Nilai-p|0.000719|0.185883|0.077094|0.350061 Table: Statistik uji T
Interpretasi :
Dengan level signifikansi 5% sudah cukup bukti untuk mengatakan bahwa intersep berpengaruh nyata dalam model.
Dengan level signifikansi 5% sudah cukup bukti untuk mengatakan bahwa rata-rata kasus kanker perkapita, median pendapatan, dan populasi tiap kota di negara bagian Washington tidak memiliki hubungan linier terhadap mortalitas penyakit kanker.
2.13 R-square
Didapatkan nilai \(R_{squared}\) sebesar 0.2052. Kemampuan variabel prediktor dalam menjelaskan keragaman variabel respon sebesar 20.52% sedangkan 79.48% lainnya dijelaskan oleh faktor lain. Hal ini selaras dengan uji simultan bahwa ketiga variabel prediktor tidak berpengaruh secara signifikan terhadap variabel respon.
3 DAFTAR PUSTAKA
Alita, Debby. 2021. “Analysis of Classical assumption Test and multiple linear regression coefficient test for employee structural office reccommendation”. Lampung: Teknokrat Indonesia University.
Rodriguez Del Aquila, M. M.. 2011. “simple linear and multivariate regression model” dalam SERIES: BASIC STATISTIC FOR BUSY CLINICIANS. Spain.