Anda di halaman 1dari 45

Materi 2: ANALISIS REGRESI MENGGUNAKAN R

Catatan:
Kode R yang digunakan dalam analisis regresi disadur (diterjemahkan secara bebas) dari situs:
https://www.machinelearningplus.com/machine-learning/complete-introduction-linear-regression-r/

A. Pengantar Regresi Linier


Tujuan dari regresi linier adalah menemukan persamaan matematika untuk variabel respon Y sebagai fungsi dari
satu atau beberapa variabel (X). Model regresi yang dihasilkan dapat digunakan untuk memprediksi Y ketika
nilai X diketahui.

Persamaan matematika ini dapat digeneralisasikan sebagai berikut:

Y=β1+β2X+ϵ

dimana, β1 adalah intercept dan β2 adalah slope.

1
• Di dalam konteks analisis regresi, residual adalah perbedaan antara nilai yang diamati dan nilai prediksi atau
estimated value dari persamaan regresi. Sedangkan galat adalah perbedaan antara nilai yang diamati dalam
sampel dan nilai sebenarnya dalam populasi (yang sebenarnya tidak diketahui).
• Galat atau error adalah konsep teoritis yang tidak bisa diamati tetapi hanya bisa diduga, tetapi residual adalah
nilai nyata yang dihitung untuk setiap pengamatan setiap kali regresi dijalankan.
• Residual bukanlah galat sejati (bukan true error) tetapi merupakan dugaan dari galat berdasarkan nilai
pengamatan atau data.
Perbedaan ini penting untuk dipahami dalam analisis regresi yang mengenal istilah galat regresi dan residual regresi
dan keduanya mengarah kepada konsep studentized residuals, yaitu nilai yang dihasilkan dengan membagi suatu nilai
statistik dengan simpangan bakunya (standard deviation).
2
B. Contoh Analisis
• Untuk analisis ini, digunakan dataset ‘cars’ yang ada di dalam R secara default, dengan perintah ‘cars’ pada
konsol R. Data “cars” terdiri dari 50 observasi (baris) dan 2 variabel (kolom), yaitu dist (distance) dan
speed.

• Variabel dist adalah jarak yang diperlukan oleh sebuah kendaraan untuk berhenti ketika dilakukan
pengereman dalam kecepetan tertentu (semakin kencang lajunya maka jarak berhentinya semakin jauh).

• Variabel speed adalah kecepatan kendaraan pada saat dilakukan pengereman. Untuk mengetahui 6 data
pertama, ketik: head(cars) pada konsol R.

Silakan eksekusi kode R yang dikirim bersama file ini:


“CONTOH REGRESI machinelearningplus_com.R”

head(cars

3
Tujuan analisis ini: menetapkan persamaan regresi untuk dist (jarak kendaraan berhenti) sebagai fungsi dari speed
(kecepatan dalam satuan mph -miles per hour) =➔ untuk memprediksi berapa jauh dist (jarak mobil berhenti dalam
satuan feet) ketika mobil melaju dengan kecepatan tertentu dan direm secara mendadak. Mode l regresi linier ini
menggunakan variabel respon sebagai dist dan prediktor sebagai speed.

Tahapan-tahapan dalam Analisis Regresi

B1. Analisis Visual (Grafis)


Gunakan plot berikut untuk membantu memvisualisasikan pola data:
• Scatter Plot: untuk memvisualisasikan hubungan linier antara prediktor dan respons

• Box Plot: untuk memeriksa apakah ada pencilan (outlier) dalam data.
• Density Plot: untuk memeriksa bagaimana distribusi variabel prediktor. Idealnya, sebaran data yang baik lebih
mendekati distribusi normal (kurva berbentuk lonceng), tanpa miring ke kiri atau kanan lebih disukai.

1. Menggunakan Scatter Plot untuk Memvisualisasikan Hubungan prediktor (x) dengan respon (y)

scatter.smooth(x=cars$speed, y=cars$dist, main="Dist ~ Speed") # scatterplot

4
DISTANCE VS SPEED SCATTERPLOT

Scatter Plot di atas menunjukkan adanya hubungan linier dan positif antara 'dist' dan 'speed'. Ini pertanda bagus
karena salah satu asumsi dasar dari regresi linier adalah: hubungan antara variabel respon (Y) dan prediktor (X)
adalah linier dan aditif.

5
2. Menggunakan Box Plot untuk memeriksa apakah ada outlier (pencilan)

Pencilan adalah setiap titik data yang terletak di luar kisaran 1,5 antarkuartil (IQR).
IQR dihitung sebagai jarak antara nilai persentil ke-25 dan ke-75 dari variabel.

par(mfrow=c(1, 2)) # membagi plot dalam dua kolom

boxplot(cars$speed, main="Speed", sub=paste("Outlier rows: ", boxplot.stats(cars$speed)$out)) # membuat box plot


'speed'

boxplot(cars$dist, main="Distance", sub=paste("Outlier rows: ", boxplot.stats(cars$dist)$out)) # membuat box plot


'distance'

# Perhatikan: pada variabel ‘Distance” ada satu pencilan.

6
BOXPLOT SPEED DAN DISTANCE

7
3. Menggunakan Density Plot untuk Memeriksa Apakah Variabel Mendekati Normal

library(e1071) # mengaktifkan paket ‘e1071’ untuk menggunakan fungsi skewness


par(mfrow=c(1, 2)) # membagi plot dalam dua kolom

plot(density(cars$speed), main="Density Plot: Speed", ylab="Frequency", sub=paste("Skewness:", round(e1071::skewness(cars$speed),


2))) # density plot untuk variabel 'speed'

polygon(density(cars$speed), col="green")

plot(density(cars$dist), main="Density Plot: Distance", ylab="Frequency", sub=paste("Skewness:", round(e1071::skewness(cars$dist),


2))) # density plot untuk variabel 'dist'

polygon(density(cars$dist), col="red")

8
Density Plot: Speed Density Plot: Distance

0.06

0.015
0.010
Frequency

Frequency
0.04

0.005
0.02

0.000
0.00
0 5 10 15 20 25 30 0 50 100 150

N = 50 Bandwidth = 2.15 N = 50 Bandwidth = 9.214


Skewness: -0.11 Skewness: 0.76

DENSITY PLOT FOR SPEED AND DISTANCE

9
4. Membedakan antara data pencilan (outliers), data ekstrim, dan data influensial (berpengaruh besar)

Kasus 1

Seluruh data mengikuti tren, tidak ada pencilan dan tidak ada data ekstrim.

10
Kasus 2
Titik data berwarna merah tidak mengikuti tren umum data (pencilan).

Kiri ada pencilan; Kanan tanpa pencilan

11
Perhatikan: Statistik Dengan Pencilan Tanpa Pencilan
Intercept (konstanta) 2.93 1.73
Slope 5.04 5.12
R2 91.01% 97.32%
R2-adjusted 90.53% 97.17%
Nilai-P dari intercept 0.157 0.140
Nilai-P dari slope 0.000 0.000

12
Kasus 3

Meskipun terpisah jauh, titik data berwarna merah mengikuti tren sehingga titik tersebut bukan pencilan tetapi termasuk
data ekstrim. Pertanyannya, apakah titik merah ini merupakan data influensial (influential point, titik data yang sangat
berpengaruh)?

13
Jika titik merah ada dalam data: Jika titik merah tidak ada dalam data:

Berdasarkan hasil analisis di atas disimpulkan bahwa koefisien kemiringan dan hasil uji
hipotesis tidak terpengaruh oleh masuknya titik data merah. Oleh karena itu, titik data
dianggap tidak berpengaruh. Singkatnya, titik data merah bukan titik influensial dan juga
bukan pencilan, tetapi memiliki leverage yang tinggi.

Kasus4
14
Titik data merah pasti merupakan pencilan dan memiliki leverage tinggi! Titik data merah tidak mengikuti tren umum
dari data lainnya dan juga memiliki nilai x yang ekstrim dan berpengaruh.

15
16
Jika titik data merah disertakan dalam analisis:

titik data merah tidak disertakan dalam analisis:

17
Terlihat bahwa prediksi respons dan koefisien kemiringan secara jelas dipengaruhi oleh keberadaan titik data merah.
Sementara titik data tidak mempengaruhi signifikansi uji hipotesis, hasil statistik-t berubah secara dramatis. Dalam hal
ini, titik data merah dianggap sebagai leverage tinggi dan pencilan, dan juga berpengaruh.

B2. Analisis Korelasi


Analisis korelasi mempelajari kekuatan hubungan antara dua variabel kontinu dengan menghitung koefisien
korelasi antara variabel yang diperiksa. Korelasi merupakan ukuran statistik yang menunjukkan tingkat
ketergantungan linear antara dua variabel.
Untuk menghitung korelasi, kedua variabel harus berpasangan, seperti dalam contoh variabel speed dan dist.
Nilai korelasi berkisar antara -1 hingga +1.

18
Jika satu variabel secara konsisten meningkat dengan meningkatnya nilai yang lain, maka mereka memiliki korelasi
positif yang kuat (nilai mendekati +1). Demikian pula, jika salah satu menurun secara konsisten ketika yang lain
meningkat, mereka memiliki korelasi negatif yang kuat (nilai mendekati -1).

Nilai yang mendekati 0 menunjukkan hubungan yang lemah antara v ariabel. Korelasi yang rendah (-0,2 <x <0,2)
mungkin menunjukkan bahwa banyak variasi dari variabel respon (Y) tidak dapat dijelaskan oleh prediktor (X).

Jika diperhatikan dataset mobil pada konsol R, setiap nilai speed meningkat maka respon dist juga meningkat.
Artinya, ada hubungan positif yang kuat antara kedua variabel (korelasi mendekati 1). Tetapi harus diingat bahwa
korelasi tidak selalu menyiratkan hubungan sebab-akibat. Dengan kata lain, jika dua variabel memiliki korelasi
tinggi, belum tentu satu variabel 'menyebabkan' nilai variabel lain meningkat. Korelasi hanyalah bantuan untuk
memahami hubungan. Gunakan logika dan fakta yang relevan untuk membuat penilaian adanya h ubungan yang
sesungguhnya.

Untuk menghitung korelasi dalam R digunakan fungsi cor () dengan dua variabel numerik sebagai argumen sbb:

cor(cars$speed, cars$dist) # menghitung korelasi antara speed and distance


#> [1] 0.8068949

Hasil analisis di atas memberikan nilai = 0.81, menunjukkan bahwa data dist berhubungan sangat baik atau berkorelasi
sangat baik dengan data speed.

19
C. Membangun Model Regresi
Setelah kita memeriksa hubungan linier secara visual menggunakan plot dan melalui pemeriksaan korelasinya maka
tahap selanjutnya adalah membangun model regresi dari variabel yang dianalisis.

Fungsi dalam R yang digunakan adalah: lm() .Fungsi ini mempunyai dua argumen:
1. Formula (object of class)
2. Data (data.frame)

Gunakan kode berikut untuk menuliskan rumusnya:

linearMod <- lm(dist ~ speed, data=cars) # membangun model regresi dengan data bernama ‘cars’
print(linearMod)

#> Call:
#> lm(formula = dist ~ speed, data = cars)
#>
#> Coefficients:
#> (Intercept) speed
#> -17.579 3.932

Perhatikan pada output ‘Coefficients’ (disebut juga: beta coefficients) yang mempunyai dua komponen:
20
Intercept: -17.579
speed: 3.932.

Dengan demikian maka model yang diperoleh adalah:

dist = Intercept + (β ∗ speed)
dist = −17.579 + 3.932∗speed
C1. Diagnostik Regresi Linear
Setelah model dihasilkan berbentuk rumus maka dapat digunakan untuk memprediksi. Tahap selanjutnya adalah
memastikan bahwa model tersebut secara statistik nyata (signifikan).

Tahapan pengujian adalah sbb:

1. Membuat ringkasan statistik:

summary(linearMod) # membuat ringkasan model

21
2. Memeriksa apakah nilai-p signifikan:

Hasil yang diperoleh dari analisis di atas adalah sbb:

Koefisien Dugaan SE Nilai-t Nilai-p

Intercept - 6.7584 -2.601 0.0123 *


17.5791
Speed 3.9324 0.4155 9.464 1.49 x 10-12***

Hasil analisis menunjukkan bahwa intercept adalah nyata karena nilai-p kurang dari 0.05 (*) dan variabel x
(Speed) adalah sangat nyata karena nilai-p kurang dari 0.01 (**)

Catatan:
Nilai-p sangat penting diperhatikan karena semakin rendah nilai-p menunjukkan bahwa suatu variabel semakin
signifikan.

3. Hipotesis Null dan Hipotesis Alternatif

22
Setiap kali ada nilai-p, selalu ada Hipotesis Null dan Alternatif yang terkait.
Jadi apa hipotesis nol dalam kasus ini?

H0: koefisien beta yang terkait dengan variabel sama dengan nol.
H1: koefisien tidak sama dengan nol. (ada hubungan antara variabel independen dan variabel dependen).

Dalam kesimpulan di atas maka H0 ditolak dan H1 diterima. Artinya: benar bahwa variabel kecepatan berpengaruh
secara signifikan terhadap jarak berhentinya mobil setelah pengereman dan jarak berhentinya mobil ( dist) dapat
diprediksi dengan rumus:

dist = −17.579 + 3.932∗speed


4. Apa itu Nilai-t dan Nilai-P?
Nilai-t yang lebih besar menunjukkan bahwa kecil kemungkinannya nilai koefisien tidak sama dengan nol. Jadi,
semakin tinggi nilai t, semakin baik.
Pr (> | t |) atau Nilai-p adalah peluang untuk mendapatkan nilai-t sama atau lebih tinggi dari nilai yang diamati ketika Ho
benar (bahwa koefisien β sama dengan nol atau tidak ada hubungan antara prediktor dan respon).
Jika Pr (> | t |) atau nilai-p rendah artinya koefisiennya signifikan (sangat berbeda dari nol). Jika Pr (> | t |) tinggi,
koefisiennya tidak signifikan.
Ketika nilai-p kurang dari tingkat signifikansi yang ditetapkan (misalnya <0,05), maka kita dapat dengan aman menolak
Ho bahwa koefisien prediktor adalah nol.

23
Dalam data di atas, kedua nilai-p yang dihasilkan jauh di bawah ambang batas 0,05 sehingga kita menolak hipotesis nol
dan menyimpulkan bahwa model ini secara statistik signifikan.
Catatan:
Model harus signifikan secara statistik sebelum dapat digunakan untuk memprediksi variabel dependen. Jika tidak,
kepercayaan pada nilai prediksi dari model itu berkurang dan dapat ditafsirkan sebagai peristiwa kebetulan.

5. Squared dan Adj R-Squared


Harus diingat bahwa informasi aktual dalam data adalah variasi total yang dikandungnya.
R-Squared adalah proporsi variasi dalam variabel dependen (respons) yang terkandung dalam sebuah model.

24
PERHITUNGAN NILAI R2

𝑅𝑆𝑆
𝑅2 = 1 −
𝑇𝑆𝑆
RSS = Residual Sum of Squares

25
𝑛

𝑅𝑆𝑆 = ∑(𝑦𝑖 − 𝑦̂)2


𝑖

26
TSS = Total Sum of Squared

𝑇𝑆𝑆 = (𝑦𝑖 − 𝑦̅)2

y-hat = fitted value for observation i and


y-bar = mean of Y.

6. Apa itu adjusted R2 ?


Saat kita menambahkan lebih banyak variabel X ke dalam model maka nilai R 2 model baru yang lebih besar akan
selalu lebih besar daripada subset yang lebih kecil. Setiap variabel baru apa pun yang kita tambahkan hanya dapat
menambahkan (jika tidak signifikan) ke variasi yang sudah dijelaskan.

Di sinilah, nilai R 2 yang disesuaikan (adjusted R 2 ) perlu digunakan. Tidak seperti R 2, nilai adj-R2 mungkin tidak
selalu meningkat. Oleh karena itu ketika membandingkan model tersarang ( nested), penggunaan adj-R2 lebih baik
daripada R 2.

2 𝑀𝑆𝐸
𝑅𝑎𝑑𝑗 =1−
𝑀𝑆𝑇
MSE= mean squared error
27
𝑅𝑆𝑆
𝑀𝑆𝐸 =
(𝑛 − 𝑞)

MST = mean squared total


𝑇𝑆𝑆
𝑀𝑆𝑇 =
(𝑛 − 1)

n = jumlah pengamatan
q = jumlah koefisien di dalam model

2
(1 − 𝑅2 )(𝑛 − 1)
𝑅𝑎𝑑𝑗 =1−
𝑛−𝑞

7. Standard Error dan F-Statistic


Standard errors dan F-statistic merupakan ukuran goodness of fit.

𝑆𝑆𝐸
𝑆𝑡𝑑. 𝐸𝑟𝑟𝑜𝑟 = √𝑀𝑆𝐸 = √
(𝑛 − 𝑞 )
28
𝑀𝑆𝑅
𝐹_𝑆𝑡𝑎𝑡𝑖𝑠𝑡𝑖𝑡𝑖𝑐 =
𝑀𝑆𝐸

n = jumlah pengamatan
q = jumlah koefisien
MSR = mean square regression dihitung sbb:

∑𝑛 ̅)
𝑖 (𝑦𝑖 − 𝑦 𝑆𝑆𝑇−𝑆𝑆𝐸
𝑀𝑆𝑅 = =
(𝑞−1) 𝑞−1

Semakin tinggi nilai F-statistic semakin bagus.

8. Apa itu AIC (Akaike’s Information Criterion) dan BIC (Bayesian Information Criterion) ?

AIC dan BIC merupakan ukuran atau kriteria dari goodness of fit dari model regresi linear. Kedua kriteria ini dapat juga
digunakan sebagai instrumen dalam pemilihan model regresi.
Kedua kriteria tersebut dihitung sbb:

AIC = (−2) × ln(L) + (2×k)


29
k = jumlah parameter model

BIC = (−2) × ln(L) + k × ln(n)


n = ukuran sampel

Dalam R, kode yang digunakan adalah sbb (kita gunakan data dari analisis di atas):
For model comparison, the model with the lowest AIC and BIC score is preferred.

AIC(linearMod)
#=> 419.1569
BIC(linearMod)
#=> BIC => 424.8929

Catatan:
Untuk membandingkan model, semakin rendah nilai AIC dan BIC semakin bagus.
Untuk memeriksa model mana yang terbaik dapat digunakan instrumen atau kriteria berikut:

Statistik Kriteria

R-Squared Semakin tinggi semakin bagus

Adj R-Squared Semakin tinggi semakin bagus


30
Statistik Kriteria

F-Statistic Semakin tinggi semakin bagus

Semakin mendekati Nol semakin


Std. Error
bagus

Harus > 1.96 untuk nilai-p kurang dari


t-statistic
0.05

AIC Semakin rendah semakin bagus

BIC Semakin rendah semakin bagus

Harus mendekati nilai prediktor yang


Mallows cp
ada dalam model

MAPE (Mean
absolute percentage Semakin rendah semakin bagus
error)

MSE (Mean squared


error)

Min_Max Accuracy
Semakin tinggi rendah semakin bagus
=> mean(min(actual,

31
Statistik Kriteria

predicted)/max(actual,
predicted))

9. Memprediksi Model Linear


Di atas kita telah mempelajari proses membangun model regresi linier menggunakan seluruh dataset. Jika kita
menggunakan cara tersebut, kita tidak bisa mengetahui bagaimana model akan tampil dengan data baru. Oleh karena
itu, cara yang lebih bagus adalah dengan membagi dataset menjadi sampel 80:20 (training: test), kemudian,
membangun model pada sampel 80% dan kemudian menggunakan model yang dibangun untuk memprediksi
variabel dependen pada data uji.

Dengan cara ini kita akan memiliki model yang memperkirakan nilai untuk data 20% (tes) serta aktual (dari dataset
asli). Dengan menghitung ukuran akurasi (seperti akurasi min_max) dan tingkat kesalahan (MAPE atau MSE), kita
dapat mengetahui akurasi dari prediksi model.

Tahapan-tahapannya adalah sbb:

Tahap 1: Membuat training and test data


Digunakan fungsi sample() dan set.seed() agar sampel dapat digunakan ulang.

32
# Create Training and Test data -
set.seed(100) # setting seed to reproduce results of random sampling
trainingRowIndex <- sample(1:nrow(cars), 0.8*nrow(cars)) # row indices for training data
trainingData <- cars[trainingRowIndex, ] # model training data
testData <- cars[-trainingRowIndex, ] # test data

Hasil Test Data:


No. speed dist
3 7 4
5 8 16
17 13 34
24 15 20
28 16 40
32 18 42
39 20 32
45 23 54
46 24 70
50 25 85

33
Tahap 2: Fit the model on training data and predict dist on test data

# Build the model on training data


lmMod <- lm(dist ~ speed, data=trainingData) # build the model
distPred <- predict(lmMod, testData) # predict distance

Tahap 3: Review diagnostic measures.

summary (lmMod) # model summary

Residuals:
Min 1Q Median 3Q Max
-24.726 -11.242 -2.564 10.436 40.565

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -20.1796 7.8254 -2.579 0.0139 *
speed 4.2582 0.4947 8.608 0.000000000185 ***
34
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 15.49 on 38 degrees of freedom


Multiple R-squared: 0.661, Adjusted R-squared: 0.6521
F-statistic: 74.11 on 1 and 38 DF, p-value: 0.0000000001848

AIC (lmMod) # Calculate akaike information criterion


[1] 336.6933

Dari ringkasan diperoleh nilai-p dari model and nilai-p prediktor lebih rendah dari significance level (digunakan
alfa = 0.05). Artinya model yang kita hasilkan adalah signifikan.

Demikain juga, kita memperoleh nilai R-Sq dan Adj R-Sq yang setara dengan model yang dibangun berdasarkan
keseluruhan data.

Hasil dari Seluruh Data

Koefisien Dugaan SE Nilai-t Nilai-p

35
Intercept - 6.7584 -2.601 0.0123 *
17.5791
Speed 3.9324 0.4155 9.464 1.49 x 10-
12
***

Residual standard error: 15.38 on 48 degrees of freedom


Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12

Hasil dari sampel 80:20


Koefisien Dugaan SE Nilai-t Nilai-p

Intercept - 7.8254 -2.579 0.0139 *


20.1796
Speed 4.2582 0.4947 8.608 1.85 x 10-
12
***

Residual standard error: 15.49 on 38 degrees of freedom


Multiple R-squared: 0.661, Adjusted R-squared: 0.6521
F-statistic: 74.11 on 1 and 38 DF, p-value: 1.848e-10

Tahap 4: Menghitung akurasi prediksi dan error

36
Korelasi sederhana antara nilai aktual dan nilai prediksi dapat digunakan untuk mengukur akurasinya. Akurasi
korelasi yang lebih tinggi menyiratkan bahwa nilai aktual dan prediksi memiliki arah yang setera, yaitu ketika nilai
aktual meningkat maka nilai prediksi juga meningkat dan sebaliknya.

actuals_preds <- data.frame(cbind(actuals=testData$dist, predicteds=distPred)) # make actuals_predicteds dataframe.


correlation_accuracy <- cor(actuals_preds) # 82.7%
head(actuals_preds)
#> actuals predicteds
#> 1 2 -5.392776
#> 4 22 7.555787
#> 8 26 20.504349
#> 20 26 37.769100
#> 26 54 42.085287
#> 31 50 50.717663

No. actuals predicteds


3 4 9.627845
5 16 13.886057
17 34 35.177120
24 20 43.693545
28 40 47.951757
37
32 42 56.468182
39 32 64.984607
45 54 77.759245
46 70 82.017457
50 85 86.275670

10. Menghitung Nilai Min Max Accuracy dan MAPE:

MinMaxAccuracy=mean(min(actuals,predicteds)max(actuals,predicteds))
MeanAbsolutePercentageError (MAPE)=mean(abs(predicteds−actuals)actuals)

# Min-Max Accuracy Calculation


min_max_accuracy <- mean(apply(actuals_preds, 1, min) / apply(actuals_preds, 1, max))
# => 73.11%, min_max accuracy

# MAPE Calculation
mape <- mean(abs((actuals_preds$predicteds - actuals_preds$actuals))/actuals_preds$actuals)
# => 49.60 %, mean absolute percentage deviation

Sebagai alternatif, kita dapat juga menghitung semua metrik kesalahan dalam sekali jalan menggunakan fungsi
regr.eval () dalam paket DMwR. Sebelumnya harus menginstal paket bernama 'DMwR' jika menggunakannya
untuk pertama kali.
38
DMwR::regr.eval(actuals_preds$actuals, actuals_preds$predicteds)
#=> mae mse rmse mape
#=> 12.5069370 267.0002421 16.3401420 0.4959096

11. Validasi k- Fold Cross


Misalkan, kita memperoleh model yang memprediksi dengan memuaskan pada split 20% (data uji). Apakah ini cukup
untuk percaya bahwa model akan berkinerja sama baiknya sepanjang waktu?
Ada kemungkinan bahwa beberapa titik data tidak mewakili populasi di mana model dibangun. Misalnya, dalam dataset
mobil digunakan jalan aspal untuk data training 80% sementara jalan berlumpur digunakan untuk sisa 20% data uji.
Jika model dibuat dalam pengaturan seperti itu maka kita tidak dapat mengharapkan model untuk memprediksi dist
dalam dataset uji dengan akurasi yang sama. Sebabnya, model tersebut mempunyai kondisi pengaturan yang berbeda.
Kesimpulannya, penting untuk menguji kinerja model sebanyak mungkin sebelum model tersebut diterapkan atau
dipublikasikan.
Salah satu cara untuk melakukan pengujian ketat ini dengan memeriksa apakah persamaan model berkinerja sama
baiknya, ketika dicoba pada potongan data yang berbeda.

Untuk inilah digunakan validasi k-Fold cross dengan prosedur sbb:


1. Data dibagi menjadi bagian sampel acak ‘k’ yang eksklusif.
39
2. Kemudian secara iteratif membangun model k, menyimpan salah satu dari himpunan bagian sebagai data uji
setiap kali. Di setiap iterasi, kita membuat model pada data (bagian-1) yang tersisa dan menghitung rata-rata
kesalahan kuadrat dari prediksi pada subset k.
3. Akhirnya, rata-rata kesalahan kuadrat rata-rata ini (untuk bagian ‘k)) dihitung.

Dalam prosedur ini kita perlu memeriksa dua hal dari prediksi k-fold:
1. Jika masing-masing akurasi prediksi model k-fold tidak terlalu bervariasi untuk satu sampel tertentu, dan
2. Jika model k-fold tidak terlalu bervariasi dalam kemiringan dan levelnya. Dengan kata lain, model harus sejajar
dan sedekat mungkin satu sama lain.

Perhatikan plot validasi silang k-fold berikut ini:

library(DAAG)
cvResults <- suppressWarnings(CVlm(data =cars, form.lm=dist ~ speed, m=5, dots=FALSE, seed=29,
legend.pos="topleft", printit=FALSE, main="Small symbols are predicted values while bigger ones are actuals.")); #
performs the CV
attr(cvResults, 'ms')
# => 251.2783 mean squared error

40
No speed dist Predicted cvpred
1 4 2 -1.84946 -5.055642
2 4 10 -1.84946 -2.227577
3 7 4 9.947766 7.46615
4 7 22 9.947766 12.045042
5 8 16 13.880175 14.500881
6 9 10 17.812584 18.926262
7 10 18 21.744993 22.365043
8 10 26 21.744993 22.393741
9 10 34 21.744993 22.393741
10 11 17 25.677401 25.678608
11 11 28 25.677401 26.340171
12 12 14 29.60981 30.286601
13 12 20 29.60981 30.502169
14 12 24 29.60981 30.502169
15 12 28 29.60981 29.248093
16 13 26 33.542219 34.233031
17 13 34 33.542219 32.509735
18 13 34 33.542219 32.509735
19 13 46 33.542219 32.509735
20 14 26 37.474628 38.639296

41
21 14 36 37.474628 37.638402
22 14 60 37.474628 38.639296
23 14 80 37.474628 36.683666
24 15 20 41.407036 42.125891
25 15 26 41.407036 39.569924
26 15 54 41.407036 39.569924
27 16 32 45.339445 45.611598
28 16 40 45.339445 45.031528
29 17 32 49.271854 50.018752
30 17 40 49.271854 49.598196
31 17 50 49.271854 49.598196
32 18 42 53.204263 53.965182
33 18 56 53.204263 54.913549
34 18 76 53.204263 53.965182
35 18 84 53.204263 49.891754
36 19 36 57.136672 57.55332
37 19 46 57.136672 53.332365
38 19 68 57.136672 57.571392
39 20 32 61.06908 63.050675
40 20 48 61.06908 63.050675
41 20 52 61.06908 63.050675

42
42 20 56 61.06908 61.727251
43 20 64 61.06908 63.050675
44 22 66 68.933898 63.654195
45 23 54 72.866307 73.517784
46 24 70 76.798715 78.422974
47 24 92 76.798715 77.504381
48 24 93 76.798715 70.535416
49 24 120 76.798715 70.535416
50 25 85 80.731124 81.490979

43
CROSS VALIDATION PLOT IN R

Dalam plot di di atas, apakah garis putus-putus itu paralel? Apakah simbol yang berukuran kecil dan besar tidak terlalu
tersebar untuk satu warna tertentu?

44
D. Bagaimana Selanjutnya?
Kita telah membahas konsep dasar tentang regresi linier. Selain itu, kita perlu memahami bahwa regresi linier
menggunakan asumsi dasar tertentu yang harus diperhatikan, terutama ketika menggunakan banyak variabel
independen (Xs). Setelah memahami konsep ini kita dapat menggunakan model regresi yang lebih canggih untuk
menetapkan model regresi apa yang paling cocok dengan data yang kita miliki.

45

Anda mungkin juga menyukai