Mari kita mencoba memahami materi ini dengan beberapa pertanyaan
Regresi adalah metode yang digunakan untuk memahami dan memodelkan hubungan antara satu atau lebih variabel independen (variabel prediktor) dan satu variabel dependen (variabel respons).
“Eh buset nanya udah kek pertanyaan ayang selingkuh apa nggak,, klao bisa nanya yang penting penting aja dah kwkkwk..”
“oke ini cukup ber bobot”
Contohnya adalah ketika kita ingin memodelkan apakah semakin
tinggi duid jajan semaakin tinggi pula
kasih sayang?
Nah ini contoh aja sih ya kwkwk yang jomblo harap bersabar.
Regresi ini jenisnya ada beberapa dan digunakan ketika variable nya berbeda,,
Pada materi ini kita akan fokus di 3 jenis yaitu
Regresi Liniar Sederhana,
Regresi Liniar Berganda dan
Regresi Logistik
Dalam regresi linear sederhana, terdapat satu variabel independen dan satu variabel dependen. Model regresi linear sederhana diwakili oleh persamaan garis lurus (linear), seperti
y=mx+c
y=mx+c, di mana y adalah variabel dependen, x adalah variabel independen, m adalah koefisien kemiringan, dan c adalah intercept.
Contohnya adalah :
Misalkan kita bekerja di sebuah perusahaan dan ingin memahami hubungan antara biaya iklan yang dihabiskan dalam suatu periode dengan jumlah penjualan produk Anda.
Kita ingin melihat hubungan antara budget film MCU mempengaruhi dan mengakibatkan box_office secara positif dan kuat
Ingin memprediksi Qty penjualan dari kenaikan harga. Apakah semakin tinggi harganya maka akan semakin sedikit yang beli?
Regresi linear berganda adalah jenis analisis regresi yang melibatkan lebih dari satu variabel independen untuk memprediksi variabel dependen. Dalam regresi linear berganda, kita mencoba memodelkan hubungan antara satu variabel dependen dengan dua atau lebih variabel independen. Model regresi linear berganda umumnya diwakili oleh persamaan berikut:
y=b0+b1x1+b2x2+…+bnxn+𝜀
y=b0 +b1 x1 +b2 x2 +…+bn xn +ε
Contohnya :
Sebuah perusahaan minuman ingin memahami faktor-faktor apa yang mempengaruhi penjualan produk mereka di pasar tertentu. Mereka memiliki data penjualan (variabel dependen), harga produk, promosi iklan, dan cuaca (variabel independen).
Perusahaan menggunakan regresi linear berganda untuk memodelkan hubungan antara penjualan produk dengan harga, promosi iklan, dan cuaca.
Seorang peneliti ingin memahami faktor-faktor yang mempengaruhi tekanan darah seseorang. Dia memiliki data tekanan darah (variabel dependen), tingkat aktivitas fisik, pola makan, dan usia (variabel independen).
Peneliti menggunakan regresi linear berganda untuk memodelkan hubungan antara tekanan darah dengan tingkat aktivitas fisik, pola makan, dan usia.
Penting : Regresi linear sederhana vs berganda di bedakan dari jumalh variablenya.
Regresi logistik adalah metode statistik yang digunakan untuk memodelkan hubungan antara satu atau lebih variabel independen (prediktor) dengan variabel dependen biner (dichotomous), yang memiliki dua kategori atau hasil. Tujuannya adalah untuk memprediksi probabilitas kejadian suatu kejadian tertentu (biasanya diwakili oleh kategori 1) berdasarkan nilai-nilai variabel independen. Regresi logistik adalah alat yang umum digunakan dalam analisis data di berbagai bidang, termasuk ilmu sosial, kedokteran, epidemiologi, dan bisnis.
Contoh penerapan regresi logistik termasuk prediksi probabilitas seseorang mengembangkan penyakit tertentu berdasarkan faktor-faktor risiko seperti usia, jenis kelamin, dan riwayat merokok; atau memprediksi probabilitas pelanggan membeli produk tertentu berdasarkan karakteristik demografis mereka dan perilaku pembelian sebelumnya. (stroke prediction)
Regresi non-linear adalah jenis analisis regresi di mana hubungan antara variabel independen dan variabel dependen tidak dapat dijelaskan dengan persamaan garis lurus. Sebaliknya, hubungan tersebut dijelaskan dengan fungsi matematika yang lebih kompleks, seperti polinomial, eksponensial, logaritmik, sigmoid, atau fungsi lainnya yang tidak linear.
Contoh: Prediksi Pertumbuhan Pengguna Aplikasi Seluler
Deskripsi Kasus: Sebuah perusahaan pengembang aplikasi seluler ingin memprediksi pertumbuhan pengguna aplikasi mereka seiring dengan waktu. Mereka memiliki data historis tentang jumlah pengguna aktif harian (variabel dependen) selama beberapa bulan.
Model Regresi Non-linear: Perusahaan menggunakan regresi non-linear untuk memodelkan pertumbuhan pengguna aplikasi. Mereka memilih model pertumbuhan logistik yang umum digunakan dalam kasus seperti ini.
Interpretasi: Dengan menggunakan model regresi non-linear logistik, perusahaan dapat memprediksi pertumbuhan pengguna aplikasi mereka seiring waktu. Mereka dapat memperkirakan puncak pertumbuhan (L), laju pertumbuhan (k), dan titik tengah pertumbuhan (t0). Informasi ini dapat membantu perusahaan untuk mengatur strategi pemasaran, alokasi sumber daya, dan pengambilan keputusan bisnis lainnya.
ini tidak akan di bahas kembalike topik sayang kuh, kita akan bahas 3 jenis Regresi saja
Regresi time series adalah teknik analisis yang digunakan untuk memodelkan hubungan antara satu atau lebih variabel dengan waktu (variabel independen) dan variabel yang diamati sepanjang periode waktu tertentu (variabel dependen). Tujuannya adalah untuk memahami dan memprediksi perilaku atau tren dari data time series berdasarkan informasi waktu sebelumnya.
Ini akan di bahas dalam materi time series analysis.
Regresi Ridge dan Lasso adalah dua metode regularisasi yang digunakan dalam regresi linear untuk mengatasi masalah overfitting dan meningkatkan kinerja model dengan mengontrol kompleksitasnya.
ini tidak akan di bahas kembalike topik sayang kuh, kita akan bahas 3 jenis Regresi saja
Asumsi Regresi adalah paramater yang harus kita lalui untuk mengukur sebaikmana Regresi kita dan apakah model kita sudah cukup memuaskan?
jalur ini harus di pastikan memnuhi asumsi agar model kita??
Yesss, Model kita baik. sebaik akhlak Rasul.
Parameter Goodness of fit dari model berupa:
R-Squared adalah ukuran statistik yang menggambarkan seberapa baik model regresi linear cocok dengan data yang diamati.
Nilai R-Squared berkisar antara 0 hingga 1, di mana semakin tinggi nilainya, semakin baik modelnya.
R-Squared mengukur seberapa besar variasi dalam variabel dependen yang dapat dijelaskan oleh variabel independen dalam model. Dengan kata lain, R-Squared menunjukkan persentase variasi dalam variabel dependen yang dapat dijelaskan oleh model regresi. Misalnya, jika R-Squared adalah 0,5, ini berarti 50% dari variasi dalam variabel dependen dapat dijelaskan oleh model.
Namun, penting untuk diingat bahwa R-Squared tidak menunjukkan sebab dan akibat, dan nilainya bisa meningkat hanya karena menambahkan variabel independen, bahkan jika variabel tersebut tidak memiliki hubungan kausal dengan variabel dependen.
P-value adalah ukuran yang digunakan untuk menentukan signifikansi statistik dari koefisien dalam model regresi atau efek variabel independen terhadap variabel dependen.
Nilai P-value menunjukkan probabilitas bahwa koefisien nol atau tidak ada efek.
Secara umum, jika P-value kurang dari nilai alpha yang telah ditetapkan (biasanya 0,05), maka koefisien dianggap signifikan secara statistik dan kita dapat menolak hipotesis nol (hipotesis bahwa koefisien adalah nol).
Jika P-value lebih besar dari nilai alpha, maka koefisien dianggap tidak signifikan secara statistik, yang berarti kita gagal menolak hipotesis nol.
Dalam konteks goodness of fit, P-value juga dapat digunakan untuk menilai signifikansi keseluruhan model. Sebuah P-value yang kecil menunjukkan bahwa model secara keseluruhan signifikan secara statistik.
Mean Squared Error (MSE) adalah ukuran statistik yang mengukur rata-rata dari kuadrat perbedaan antara nilai yang diprediksi oleh model regresi dan nilai yang diamati dari variabel dependen.
MSE digunakan untuk mengevaluasi seberapa baik model regresi memperkirakan nilai yang sebenarnya. Semakin kecil nilai MSE, semakin baik modelnya.
Dalam beberapa kasus, akar kuadrat dari MSE (Root Mean Squared Error, RMSE) sering digunakan sebagai ukuran yang lebih intuitif karena memiliki unit yang sama dengan variabel dependen.
Cara liatnya bisa dengan
summary(nama model regresi).
Mengecek apakah erornya berdistribusi normal?
Uji hipotesisnya adalah :
H0 : residual berdistribusi normal.
H1 : residual tidak berdistribusi normal
Jika P value < 0.05 tolak H0 (uji dengan shapiro atau kolmogorov) kapan menggunakan salah satu dari kedua uji ini? tergantung dari jumlah n atau sample uji, <50 gunakan shapiro dan >50 gunakan kolmogorov sudah saya bahas di sini
Asumsi Ini harus normal ya, kenapa?
Asumsi distribusi normal dari residual penting karena memungkinkan kita untuk melakukan inferensi statistik yang akurat, seperti menghitung interval kepercayaan dan melakukan pengujian hipotesis. Ketika residual berdistribusi normal, kita dapat yakin bahwa estimasi koefisien dan statistik inferensial lainnya beroperasi dengan benar.
cek linearity dengan plot dengan sintaksmelihat plot residual dan fitted values dari model
plot(model,1)
Uji hipotesis:
H0 : Tidak linear
H1 : Linear
Jika P value < 0.05, tolak H0
Uji korelasi menggunakan cor.test() untuk variabel
prediktor
Asumsinya atau hasil dari Uji korelasi harus baik, meskipun idealnya kita ingin hubungan antara variabel dalam model regresi bersifat linear, adanya sedikit ketidaklinieran tidak selalu membuat model tersebut buruk. Penting untuk mempertimbangkan konteks analisis, tujuan, dan keterbatasan data ketika mengevaluasi linearitas dalam model regresi.
Apa maksud dari homoscedasticity? Artinya error tidak memiliki pola. Sedangkan jika heteroscedasticity artinya error-nya berpola. Kalau terdapat heteroscedasticity, kemungkinan ada outlier yang harus dibuang.
Uji hipotesis:
H0 : model homoscedasticity
H1 : model heteroscedasticity
Jika P value < 0.05, tolak H0
Uji statistiknya dengan function bptest() dari
library(lmtest).
Bptest(model)
Kenapa uji ini harus di lakukan? Masih bingung euy,,
Oke gan.. Jadi gini bayang kan jika residualny amemiliki pola, artinya baraible erornya punya pola linearitas. Nah kan artinya residual kita malah jadi prediktor yang baru kan? Lalu apa gunanya model kita sebelumnya? nah kebayang ngga? That’s why Eror atau Residual harus homosedasicity.
Nah, uji yang ini baru bisa akan kita lakukan jika kita melakukan
multiple linear regression, yakni saat variabel
prediktornya lebih dari satu. Kita tidak mau kalau variabel prediktor di
model kita itu saling berpengaruh (dependen) oh iya bahas tentang
Dependen dan Independen variable sudah pernah saya tulis Di
sini.
Untuk melakukannya, kita perlu mengujinya menggunakan nilai vif.
Cek dengan fungsi vif() dari library(car)
untuk mengetahui variabel-variabel mana yang tidak bisa ditoleransi
menjadi sebuah prediktor.
vif(model)
Nilai vif yang baik harus < 10 ketika vif
> 10 maka harus ada variable yang di eliminasi atau di
lakukan feature engineering (membuat variabel baru dari
variabel-variabel yang ada).
Sebentarrrrrr
Ini saya bingung say,, maksud dari Multicolinearitas bagaimana??
Argghhhhhhh
Nah maksud dari Multicolinearitas adalah variable variable saling bertannga korelasi. Contoh variable A berkorelsi dengan B, B dengan C, A dengan C. nah bingungkan? Makanya Model juga jadi bingung mau ngebaca gimana ini prediksi. Kwkwkkwk
Masih gak ngarti juga? klik di sini untuk study casenya ya saya sudah tulis materinya secara terpisah.
**Jika model linear yang kita buat ternyata lolos semua `uji asumsi`, maka model tersebut cukup baik. Kita tinggal menimbang angka-angka parameter goodness of fit dari model untuk menentukan apakah model ini sudah cukup baik dalam membuat prediksi.**
Study case ini akan kita ambil contoh dari kehidupan sehari hari. data set di ambil dari sini
Package yang di gunakan adalah :
library(readxl)
library(readr)
library(stats)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ purrr 1.0.2
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(MASS)
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
library(ggplot2)
library(corrplot)
## corrplot 0.92 loaded
library(lmtest)
library(broom)
library(MLmetrics)
##
## Attaching package: 'MLmetrics'
##
## The following object is masked from 'package:base':
##
## Recall
Laporan Analisis Regresi Linear Sederhana: Pengaruh Jumlah Jam Belajar Terhadap Nilai Ujian
Regresi linear sederhana adalah teknik statistik yang digunakan untuk memahami hubungan antara satu variabel independen dengan satu variabel dependen. Dalam laporan ini, kami akan menganalisis apakah ada hubungan antara jumlah jam belajar dengan nilai ujian mahasiswa. Variabel independen dalam analisis ini adalah jumlah jam belajar (X), sedangkan variabel dependen adalah nilai ujian (Y).
#membuat contoh data set
set.seed(123)
Jambelajar= round(runif(50, min = 5, max = 20))
Nilai = round(Jambelajar*2+rnorm(50, mean = 0, sd = 1))
data_regresi = data.frame(Jambelajar, Nilai)
str(data_regresi)
## 'data.frame': 50 obs. of 2 variables:
## $ Jambelajar: num 9 17 11 18 19 6 13 18 13 12 ...
## $ Nilai : num 16 35 22 35 39 12 26 37 27 25 ...
Model_regsed = lm(Nilai~Jambelajar, data = data_regresi)
summary(Model_regsed)
##
## Call:
## lm(formula = Nilai ~ Jambelajar, data = data_regresi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.23982 -0.18238 -0.03558 0.76018 2.06654
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.24526 0.42499 -0.577 0.567
## Jambelajar 2.02553 0.03158 64.146 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.969 on 48 degrees of freedom
## Multiple R-squared: 0.9885, Adjusted R-squared: 0.9882
## F-statistic: 4115 on 1 and 48 DF, p-value: < 2.2e-16
dari hasil summary di atas menunjukan bahwa B0 =
Intercept, dan B1=jambelajar artinya dapat kita bentuk
model persamaan sebagai berikut :
**Nilai = 0.37+1.97*Jambelajar**
ggplot(data_regresi, aes(x = Jambelajar, y= Nilai))+
geom_point()+
geom_smooth(method = "lm", se = FALSE, color = "red")+
labs(x = "Jam Belajar", y = "Nilai")+
theme_minimal()+
theme(plot.background = element_rect(fill = "lightblue") )+
theme(plot.title = element_text(hjust = 0.5))+
ggtitle("Scatter Plot with Linear Regression Line")
## `geom_smooth()` using formula = 'y ~ x'
dari plot di atas ngeri kali regresinya kek benar. mari kita buktikan.
apakah model kita sudah bagus???
summary(Model_regsed)
##
## Call:
## lm(formula = Nilai ~ Jambelajar, data = data_regresi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.23982 -0.18238 -0.03558 0.76018 2.06654
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.24526 0.42499 -0.577 0.567
## Jambelajar 2.02553 0.03158 64.146 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.969 on 48 degrees of freedom
## Multiple R-squared: 0.9885, Adjusted R-squared: 0.9882
## F-statistic: 4115 on 1 and 48 DF, p-value: < 2.2e-16
0.989 ini adalah angka yang fantastis, sangat ngeri regresinya sangat kuat.
2.2 artinya > 0.05, maka bisa kita asumsikan bahwa model kita cukup signifikan.
MSE(Model_regsed$fitted.values, data_regresi$Nilai)
## [1] 0.901325
Nilainya cukup fantastis, mendekati angka 0, sehingga bisa di pastikan data kita akurat.
hist(Model_regsed$residuals)
Sekarang saya lakukan uji kenormalan dengan uji shapiro.test():
shapiro.test(Model_regsed$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model_regsed$residuals
## W = 0.95064, p-value = 0.03625
Residual dari model regresi linear berdistribusi normal. nilai p value > 0.05.
kenapa pakai Shapiro?? yes benar karna sampelnya hanya 50. kalau lebih dari 50 maka? ya menggunakan kolmogorof.
# pakai ini kalau sample > 50
ks.test(Model_regsed$residuals, "pnorm", mean = mean(Model_regsed$residuals), sd =sd(Model_regsed$residuals))
## Warning in ks.test.default(Model_regsed$residuals, "pnorm", mean =
## mean(Model_regsed$residuals), : ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: Model_regsed$residuals
## D = 0.18198, p-value = 0.0729
## alternative hypothesis: two-sided
itu ada warningnya,, kwkkwk tidak untuk Kolmogorov kwkwkkw
plot(Model_regsed)
Plot 1 di atas terlihat bentuk dari liniearitasnya.
kita gunakan uji korelasi untuk cek.
cor.test(data_regresi$Jambelajar, data_regresi$Nilai)
##
## Pearson's product-moment correlation
##
## data: data_regresi$Jambelajar and data_regresi$Nilai
## t = 64.146, df = 48, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9897802 0.9967318
## sample estimates:
## cor
## 0.9942179
hipotesis 1 di terima, artinya uji liniarity lolos uji.. yeyyyyy
Apa maksud dari homoscedasticity? Artinya error tidak memiliki pola. Sedangkan jika heteroscedasticity artinya error-nya berpola. Kalau terdapat heteroscedasticity, kemungkinan ada outlier yang harus dibuang.
Plot error dan nilai aktualnya:
plot(Model_regsed$residuals, data_regresi$Nilai)
Uji statistiknya dengan function bptest() dari library(lmtest).
bptest(Model_regsed)
##
## studentized Breusch-Pagan test
##
## data: Model_regsed
## BP = 0.19338, df = 1, p-value = 0.6601
H0 di terima : Kesimpulan:
Lolos uji homoscedasticity!
#multico = vif(Model_regsed)
eror tuh nah loh, gimna dah itu, karena ini menggunakan Regresi linier sederhana, maka uji multikolinearits ga perlu di uji gaes.. why? ya kan hanya ada 1 varaible dependen dan Independen. jadi VIP di gunakan ketika data lebih dari 3 variable yak..
Karena smua uji berhasil di lewati dengan baik, maka model kita siap di gunakangaes.. akowkaowkaow
Contoh study case adalah tentang :
Laporan Analisis Regresi Linear Berganda: Pengaruh Jumlah Jam Belajar dan Jumlah Persiapan Ujian Terhadap Nilai Ujian
Data di buat hanya sebagai contoh saja.
set.seed(57)
# Membuat contoh variable random
Jumlah_jam_belajar = round(runif(50, min = 10, max = 40))
Jumlah_persiapan_ujian = round(runif(50, min = 5, max = 20))
Nilai_ujian = 50 + 1.5* Jumlah_jam_belajar + 2*Jumlah_persiapan_ujian + rnorm(50, mean = 0, sd = 5)
# Menggabungkan data
regresi_berganda = data.frame(Jumlah_jam_belajar, Jumlah_persiapan_ujian, Nilai_ujian)
str(regresi_berganda)
## 'data.frame': 50 obs. of 3 variables:
## $ Jumlah_jam_belajar : num 17 25 11 15 32 30 39 21 27 20 ...
## $ Jumlah_persiapan_ujian: num 10 16 13 6 13 16 20 6 18 9 ...
## $ Nilai_ujian : num 100.5 120.4 92.4 91.7 132.3 ...
head(regresi_berganda, 5)
## Jumlah_jam_belajar Jumlah_persiapan_ujian Nilai_ujian
## 1 17 10 100.52802
## 2 25 16 120.38593
## 3 11 13 92.36010
## 4 15 6 91.66238
## 5 32 13 132.26191
Model_reggan = lm(Nilai_ujian ~ Jumlah_jam_belajar+Jumlah_persiapan_ujian, data = regresi_berganda)
summary(Model_reggan)
##
## Call:
## lm(formula = Nilai_ujian ~ Jumlah_jam_belajar + Jumlah_persiapan_ujian,
## data = regresi_berganda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.0652 -3.8078 0.2333 3.1430 11.1449
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49.02666 2.71244 18.07 <2e-16 ***
## Jumlah_jam_belajar 1.55951 0.07219 21.60 <2e-16 ***
## Jumlah_persiapan_ujian 1.98753 0.14995 13.26 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.921 on 47 degrees of freedom
## Multiple R-squared: 0.9302, Adjusted R-squared: 0.9273
## F-statistic: 313.3 on 2 and 47 DF, p-value: < 2.2e-16
ggplot(data = regresi_berganda, aes(x = Jumlah_jam_belajar, y = Nilai_ujian))+
geom_point(aes(color = Jumlah_persiapan_ujian), size = 3, alpha = 0.7)+
geom_smooth(method = "lm", formula = y ~ x, se = FALSE, color = "lightgreen")+
labs(title = "Regresi Linear Berganda", x = "Variable belajar", y = "Nilai")+
annotate("text", x = max(regresi_berganda$Jumlah_jam_belajar), y = min(regresi_berganda$Nilai_ujian), label = "Nilai Ujian = 49.02 + 1.56 * jam belajar + 1.99 * persiapan", hjust = 1, vjust =0)
Persamaan Regresinya adalah : Nilai Ujian
= 49.02 + 1.56 * jam belajar + 1.99 * persiapan
apakah model kita sudah bagus???
Multiple R-squared: 0.9302, nilainya gege brokkk
P-value > 0.05, heu heu heu cukup signifikan.
MSE(Model_reggan$fitted.values, regresi_berganda$Nilai_ujian)
## [1] 22.76646
angkanya agak besar ya gan jdi model kita so so gitu kyaknya..
hist(Model_reggan$residuals)
shapiro.test(Model_reggan$residuals)
##
## Shapiro-Wilk normality test
##
## data: Model_reggan$residuals
## W = 0.98106, p-value = 0.5976
Residual berdistribusi normal.
plot(Model_reggan,1)
dari plot di atas sebenarnya sudah terlihat bahwa plot residual
menunjukkan pola acak yang homogen sepanjang garis horizontal, itu
menunjukkan bahwa asumsi linearity terpenuhi. Namun, jika terdapat pola
atau struktur dalam plot residual, itu menunjukkan ketidaklinearan dalam
hubungan.
kita juga bisa menguji dengan uji korelasi antara
corrplot(cor(regresi_berganda, method = "pearson"), method = "circle", type = "full", bg = "lightblue")
terlihat bahwa corelasinya cukup buruk sehingga uji linearity bisa di asumsikan lulus uji.
Apa maksud dari homoscedasticity? Artinya error tidak memiliki pola. Sedangkan jika heteroscedasticity artinya error-nya berpola. Kalau terdapat heteroscedasticity, kemungkinan ada outlier yang harus dibuang.
Plot error dan nilai aktualnya:
plot(Model_reggan$residuals, regresi_berganda$Nilai_ujian)
statistiknya dengan function bptest() dari library(lmtest).
bptest(Model_reggan)
##
## studentized Breusch-Pagan test
##
## data: Model_reggan
## BP = 1.4442, df = 2, p-value = 0.4857
H0 di terima : Kesimpulan:
Lolos uji homoscedasticity!
vif(Model_reggan)
## Jumlah_jam_belajar Jumlah_persiapan_ujian
## 1.000807 1.000807
Nilai vif yang baik harus < 10 ketika vif
> 10 maka harus ada variable yang di eliminasi atau di
lakukan feature engineering (membuat variabel baru dari
variabel-variabel yang ada).
Karena nilai vif nya < 10 maka Multico aman.
Model cukp baik
Laporan Analisis Regresi Logistik: Prediksi Kategori Kelulusan Berdasarkan Jumlah Jam Belajar dan Jumlah Persiapan Ujian
set.seed(123)
Jmlh_jam_bljr = round(runif(100, min = 10, max = 40))
Jmlh_prsn_bljr = round(runif(100, min = 5, max = 20))
Prob_kelulusan = plogis(-5+0.1*Jmlh_jam_bljr+0.2*Jmlh_prsn_bljr)
kategori = ifelse(runif(100) < Prob_kelulusan, "lulus", "Tidak lulus")
regresi_logistik = data.frame(Jmlh_jam_bljr, Jmlh_prsn_bljr, kategori)
regresi_logistik$kategori = ifelse(regresi_logistik$kategori == "lulus", 1, 0)
str(regresi_logistik)
## 'data.frame': 100 obs. of 3 variables:
## $ Jmlh_jam_bljr : num 19 34 22 36 38 11 26 37 27 24 ...
## $ Jmlh_prsn_bljr: num 14 10 12 19 12 18 19 14 11 7 ...
## $ kategori : num 1 0 0 1 1 0 1 1 1 1 ...
Model_reglog = glm(kategori ~ Jmlh_jam_bljr+Jmlh_prsn_bljr, family = binomial, data = regresi_logistik)
summary(Model_reglog)
##
## Call:
## glm(formula = kategori ~ Jmlh_jam_bljr + Jmlh_prsn_bljr, family = binomial,
## data = regresi_logistik)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.91846 1.34775 -4.391 1.13e-05 ***
## Jmlh_jam_bljr 0.11743 0.03063 3.834 0.000126 ***
## Jmlh_prsn_bljr 0.24596 0.06784 3.625 0.000288 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 138.47 on 99 degrees of freedom
## Residual deviance: 109.18 on 97 degrees of freedom
## AIC: 115.18
##
## Number of Fisher Scoring iterations: 4