Intermezzo

This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

plot(cars)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

Pendahuluan

Dalam analisis data, pemodelan statistik merupakan tools yang sangat penting untuk memahami hubungan antara variabel. Terdapat dua pendekatan utama berdasarkan tipe variabel yang ingin diprediksi dan diantaranya sebagai berikut.

1. Regresi Numerik

Regresi numerik biasa digunakan ketika variabel dependen (variabel y) berupa data kontinyu atau numerik. Tujuan dari regresi numerik adalah untuk memodelkan dan memprediksi nilai suatu variabel berdasarkan satu atau lebih variabel independen. Contoh yang paling mendasar dari regresi numerik adalah Simple Linear Regression, di mana terdapat asumsi adanya hubungan linear antara variabel independen (variabel x) dan variabel dependen (variabel y). Pendekatan dalam simple linear regression bisa dilakukan melalui sebagai berikut.

Metode OLS (Ordinary Least Squares)

Metode OLS dilakukan dengan cara mencari garis terbaik dengan meminimalkan jumlah kuadrat selisih antara nilai aktual dan prediksi. Tujuan dari metode OLS adalah mencari garis lurus yang paling cocok dengan data. Cara kerja dari metode OLS adalah menemukan parameter (kemiringan dan intercept) dengan meminimalkan jumlah kuadrat selisih antara nilai data asli dan nilai yang diprediksi oleh model. Inti pemahaman dari metode OLS adalah dengan mengurangi “error” (selisih antara data yang diobservasi dan prediksi), model ini akan menjadi lebih akurat dalam memprediksi nilai kontinyu.

Metode MLE (Maximum Likelihood Estimation)

Metode MLE dilakukan dengan cara mengestimasi parameter model dengan cara memaksimalkan fungsi likelihood sehingga model yang diperoleh paling mungkin menghasilkan data yang ada. Tujuan dari metode MLE adalah menentukan parameter model yang membuat data yang ada memiliki probabilitas kemunculan (likelihood) terbesar. Cara kerja dari metode MLE adalah dengan mengasumsikan adanya distribusi probabilitas tertentu (sering kali distribusi normal untuk error) dan memilih parameter yang memaksimalkan fungsi likelihood. Inti pemahaman dari metode MLE adalah model tidak hanya mempertimbangkan jarak error seperti pada OLS, tetapi juga memperhitungkan kemungkinan terjadinya data tersebut menurut model statistik yang diambil.

2. Regresi Kategorik

Regresi kategorik diterapkan ketika variabel dependen bersifat diskrit atau kategorik, misalnya “ya/tidak” atau “sukses/gagal”. Salah satu metode yang umum digunakan adalah Logistic Regression, yang bertujuan memodelkan probabilitas terjadinya suatu kejadian. Model ini mengubah kombinasi linear variabel independen ke dalam bentuk probabilitas dengan menggunakan fungsi logistik (sigmoid). Cara kerja dari regresi kategorik adalah dengan memodelkan probabilitas suatu kejadian dengan menggunakan fungsi logistik (sigmoid) yang menghasilkan nilai antara 0 dan 1. Inti pemahaman dari metode regresi kategorik adalah mengubah prediksi linear menjadi probabilitas yang bisa diinterpretasikan sebagai peluang terjadinya suatu kategori (misalnya, peluang seseorang membeli produk atau tidak).

Pendekatan yang berbeda ini memungkinkan seorang data analis (penganalisa data) untuk memilih metode yang paling sesuai dengan jenis data dan tujuan penelitian, baik itu untuk prediksi nilai kontinu maupun klasifikasi kategori. Pembahasan lebih lanjut mengenai implementasi kedua pendekatan tersebut, misalnya melalui penggunaan software R, akan memberikan gambaran yang lebih praktis tentang bagaimana model-model tersebut dibangun dan diinterpretasikan.

Numerical Regression

Sebelum kita membahas regresi numerik, mari kita bahas regresi terlebih dahulu. Regresi adalah metode dalam pemodelan data yang digunakan untuk memahami hubungan antara dua jenis variabel:

Variabel Hasil (𝑦)

Variabel Hasil (𝑦) adalah variabel yang ingin kita pelajari atau prediksi, juga dikenal sebagai variabel dependen.

Variabel Penjelas (𝑥)

Variabel Penjelas (𝑥) adalah variabel yang digunakan untuk menjelaskan atau memprediksi variabel hasil, juga dikenal sebagai variabel independen.

Ada dua tujuan utama dalam pemodelan ini:

Pemodelan untuk Penjelasan

Di sini, kita ingin memahami dan menjelaskan hubungan antara variabel hasil (𝑦) dan variabel penjelas (𝑥). Kita mencari tahu seberapa signifikan hubungan tersebut dan apakah ada korelasi diantara dua variabel tersebut.

Pemodelan untuk Prediksi

Dalam hal ini, fokus kita adalah memprediksi nilai dari variabel hasil (𝑦) berdasarkan informasi dari variabel penjelas (𝑥). Kita tidak terlalu peduli dengan bagaimana semua variabel berinteraksi, tetapi lebih kepada seberapa akurat kita dapat memprediksi 𝑦.

Biasanya, contoh numerical regresi yang paling mendasar adalah regresi linear. Regresi linear digunakan ketika variabel hasil (𝑦) bersifat numerik dan variabel penjelas (𝑥) bisa berupa angka atau kategori. Dalam regresi linear, diasumsikan bahwa hubungan antara 𝑦 dan 𝑥 adalah linear, yang berarti dapat digambarkan dengan garis lurus. Namun, bentuk garis ini dapat bervariasi tergantung pada jenis variabel penjelas yang digunakan.

Dengan memahami dasar-dasar regresi ini, kita dapat menggunakan teknik ini untuk menganalisis data dan membuat keputusan berdasarkan informasi yang ada.

Example: Simple Linear Regression

a. Method OLS

Metode OLS mencari garis terbaik yang meminimalkan jumlah kuadrat error (selisih antara nilai observasi dan prediksi). Di R, fungsi lm() adalah fungsi standar untuk melakukan regresi linear.

# Membuat data simulasi
set.seed(123)
x <- 1:100
y <- 2 + 3*x + rnorm(100, mean = 0, sd = 20)  # y = 2 + 3*x + noise
data <- data.frame(x = x, y = y)

# Mengestimasi model menggunakan OLS
model_ols <- lm(y ~ x, data = data)
summary(model_ols)
## 
## Call:
## lm(formula = y ~ x, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -49.071 -11.047  -0.692  12.970  41.897 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.27192    3.68575   0.345    0.731    
## x            3.05022    0.06336  48.138   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 18.29 on 98 degrees of freedom
## Multiple R-squared:  0.9594, Adjusted R-squared:  0.959 
## F-statistic:  2317 on 1 and 98 DF,  p-value: < 2.2e-16

Penjelasan:

Data Simulasi

Kita membuat variabel x sebagai variabel independen dan y sebagai variabel dependen yang dipengaruhi oleh x secara linear (dengan tambahan noise).

Fungsi lm()

Fungsi lm() mengestimasi model regresi linear dengan meminimalkan jumlah kuadrat error.

summary()

Fungsi summary() memberikan informasi tentang koefisien, nilai p, R-squared, dan statistik penting lainnya, yang membantu kita mengevaluasi model.

Berikut interpretasi output syntax yang dihasilkan.

Coefficients (Koefisien)

Intercept

Nilai pada titik potong sumbu-y (nilai prediksi y ketika x = 0).

Slope (x)

Menunjukkan seberapa besar perubahan y untuk setiap kenaikan satu unit pada x.

Contoh Interpretasi: Jika intercept = 2 dan slope = 3, artinya ketika x = 0, nilai y adalah 2, dan setiap peningkatan 1 unit pada x diharapkan meningkatkan nilai y sebesar 3 unit.

Standard Error (Error Standar)

Mengukur ketidakpastian dari estimasi koefisien. Nilai error standar yang lebih kecil menunjukkan estimasi yang lebih presisi.

t-value dan p-value:

t-value

Rasio koefisien terhadap error standarnya.

p-value

Menunjukkan signifikansi statistik dari masing-masing koefisien. Nilai p-value yang kecil (umumnya < 0.05) mengindikasikan bahwa koefisien tersebut signifikan secara statistik, artinya hubungan antara x dan y cukup kuat.

R-squared (Koefisien Determinasi)

Menjelaskan proporsi variasi data y yang dapat dijelaskan oleh variabel x. Nilai yang mendekati 1 menunjukkan model yang baik dalam menjelaskan variabilitas data.

F-statistic

Menguji signifikansi keseluruhan model. Nilai yang tinggi dengan p-value yang rendah menunjukkan bahwa model secara kolektif memberikan penjelasan yang signifikan terhadap variabel dependen.

b. Method MLE

Dalam konteks simple linear regression, jika asumsi error adalah normal, estimasi OLS sebenarnya sama dengan estimasi MLE. Namun, kita juga bisa secara eksplisit menggunakan MLE untuk mendapatkan parameter model dengan memaksimalkan fungsi likelihood.

# Mendefinisikan fungsi log-likelihood
log_likelihood <- function(params, x, y) {
  beta0 <- params[1]
  beta1 <- params[2]
  sigma <- params[3]
  
  # Pastikan sigma positif
  if(sigma <= 0) return(Inf)
  
  # Prediksi nilai y
  y_pred <- beta0 + beta1 * x
  
  # Menghitung negative log-likelihood (karena akan diminimalkan)
  -sum(dnorm(y, mean = y_pred, sd = sigma, log = TRUE))
}

# Nilai awal parameter
init_params <- c(beta0 = 0, beta1 = 0, sigma = 1)

# Estimasi parameter menggunakan optim()
result <- optim(init_params, log_likelihood, x = data$x, y = data$y)
result$par
##      beta0      beta1      sigma 
## -14.682962   3.288671  18.048837

Penjelasan:

Fungsi log_likelihood

Kita mendefinisikan fungsi log-likelihood dari model, di mana parameter yang dicari adalah intercept (beta0), slope (beta1), dan standar deviasi error (sigma).

Fungsi optim()

Fungsi optim() digunakan untuk meminimalkan negative log-likelihood, sehingga mendapatkan parameter dengan likelihood maksimum.

Catatan

Jika asumsi error adalah normal, hasil estimasi dari optim() seharusnya mendekati hasil yang didapat dari fungsi lm().

Berikut interpretasi output syntax yang dihasilkan.

beta0 (Intercept)

Sama seperti pada OLS, menunjukkan nilai awal y ketika x = 0

beta1 (Slope)

Menunjukkan pengaruh perubahan pada x terhadap perubahan nilai y.

sigma (Standar Deviasi Error)

Mengukur sebaran error dari model. Estimasi ini menggambarkan ketidakpastian prediksi y di sekitar garis regresi.

Catatan: Pada regresi linear dengan asumsi error normal, hasil estimasi MLE biasanya akan mendekati hasil dari metode OLS karena kedua metode ini secara matematis saling berhubungan.

Categorical Regression

Example: Logistic Regression

Logistic regression digunakan ketika variabel dependen bersifat kategorik (misalnya, 0/1, ya/tidak). Fungsi glm() di R, dengan argumen family = binomial, digunakan untuk mengestimasi model ini.

# Membuat data simulasi untuk logistic regression
set.seed(123)
x <- runif(100, min = 0, max = 10)

# Membuat probabilitas menggunakan fungsi logistik: P(y=1) = 1/(1+exp(-(-5 + 0.8*x)))
prob <- 1/(1 + exp(-(-5 + 0.8 * x)))
y <- rbinom(100, size = 1, prob = prob)
data_logit <- data.frame(x = x, y = y)

# Mengestimasi model logistic regression
model_logit <- glm(y ~ x, data = data_logit, family = binomial)
summary(model_logit)
## 
## Call:
## glm(formula = y ~ x, family = binomial, data = data_logit)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -4.9769     0.9491  -5.244 1.57e-07 ***
## x             0.7882     0.1489   5.294 1.19e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 131.791  on 99  degrees of freedom
## Residual deviance:  75.477  on 98  degrees of freedom
## AIC: 79.477
## 
## Number of Fisher Scoring iterations: 5

Penjelasan:

Data Simulasi

Variabel x dibuat secara acak dan variabel y adalah hasil dari percobaan binomial dengan probabilitas yang ditentukan oleh fungsi logistik.

Fungsi glm()

Dengan argumen family = binomial, fungsi glm() secara otomatis mengestimasi model logistic regression menggunakan metode MLE.

Interpretasi Output

Hasil dari summary(model_logit) memberikan koefisien, error standar, nilai z, dan p-value, yang membantu mengevaluasi pengaruh x terhadap probabilitas outcome.

Berikut interpretasi output syntax yang dihasilkan.

Coefficients (Koefisien)

Intercept

Log odds dasar (nilai logit ketika x = 0).

Koefisien variabel x

Menunjukkan perubahan log odds dari outcome (misalnya, peluang terjadinya peristiwa y = 1) untuk setiap kenaikan 1 unit pada x.

Standard Error

Memberikan ukuran ketidakpastian estimasi koefisien.

z-value dan p-value

z-value

Rasio koefisien terhadap error standarnya, namun dalam konteks distribusi normal.

p-value

Nilai kecil (biasanya < 0.05) menunjukkan bahwa koefisien tersebut signifikan secara statistik, yang artinya variabel x memiliki pengaruh yang berarti terhadap probabilitas outcome.

Deviance dan AIC (Akaike Information Criterion)

Deviance

Ukuran dari ketidakcocokan model; semakin kecil nilainya, semakin baik model menjelaskan data.

AIC

Digunakan untuk membandingkan model; nilai yang lebih rendah menunjukkan model yang lebih baik.

Interpretasi Khusus untuk Logistic Regression

• Koefisien di logistic regression tidak langsung menunjukkan perubahan probabilitas, melainkan perubahan pada log odds.

• Untuk mendapatkan interpretasi dalam bentuk odds ratio, Anda bisa menghitung OR=exp(koefisien).

Contoh: Jika koefisien x adalah 0.8, maka odds ratio adalah exp(0.8)≈2.23, yang berarti setiap peningkatan satu unit pada x meningkatkan odds terjadinya peristiwa (misalnya, y = 1) sekitar 2,23 kali lipat.

Output dari kedua analisis—baik regresi numerik maupun regresi kategorik—memberikan informasi penting tentang hubungan antar variabel:

Pada simple linear regression

Output membantu menentukan seberapa kuat dan signifikan hubungan linear antara variabel independen dan dependen, serta seberapa baik model dapat menjelaskan variasi data.

Pada logistic regression

Output memberikan gambaran mengenai pengaruh variabel prediktor terhadap peluang terjadinya suatu peristiwa, dengan interpretasi koefisien dalam bentuk log odds yang dapat dikonversi ke odds ratio.

Interpretasi hasil ini sangat penting untuk memastikan bahwa model yang dibangun tidak hanya memenuhi asumsi statistik tetapi juga dapat diandalkan dalam membuat prediksi dan pengambilan keputusan berbasis data.

Penutup

Berikut adalah penjelasan dari hasil yang telah didapatkan untuk setiap regresi numerik dan regresi kategorik.

Simple Linear Regression (Numerik)

Metode OLS

Menggunakan fungsi lm() untuk meminimalkan error kuadrat dan mendapatkan parameter terbaik.

Metode MLE

Dapat diimplementasikan dengan mendefinisikan fungsi likelihood dan menggunakan optim() untuk mendapatkan parameter yang memaksimalkan likelihood.

Logistic Regression (Kategorik)

Menggunakan fungsi glm() dengan family = binomial untuk memodelkan probabilitas kejadian (misalnya, peluang 0 atau 1) melalui fungsi logistik

Sebagai penutup, pemahaman mendalam tentang regresi numerik dan kategorik—termasuk penerapan simple linear regression dengan metode OLS dan MLE serta logistic regression—memberikan fondasi yang kuat bagi para analis dan peneliti. Dengan menerapkan metode-metode tersebut melalui software R, kita tidak hanya dapat mengungkap hubungan antar variabel tetapi juga meningkatkan akurasi prediksi, sehingga mendukung pengambilan keputusan yang lebih tepat dan berbasis data.

Session info

sessionInfo()
## R version 4.4.2 (2024-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26100)
## 
## Matrix products: default
## 
## 
## locale:
## [1] LC_COLLATE=English_Indonesia.utf8  LC_CTYPE=English_Indonesia.utf8   
## [3] LC_MONETARY=English_Indonesia.utf8 LC_NUMERIC=C                      
## [5] LC_TIME=English_Indonesia.utf8    
## 
## time zone: Asia/Jakarta
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.37     R6_2.6.1          fastmap_1.2.0     xfun_0.51        
##  [5] cachem_1.1.0      knitr_1.49        htmltools_0.5.8.1 rmarkdown_2.29   
##  [9] lifecycle_1.0.4   cli_3.6.4         sass_0.4.9        jquerylib_0.1.4  
## [13] compiler_4.4.2    rstudioapi_0.17.1 tools_4.4.2       evaluate_1.0.3   
## [17] bslib_0.9.0       yaml_2.3.10       rlang_1.1.5       jsonlite_1.9.0