PROJECT PENGANTAR DATA SAINS: SELEKSI MODEL REGRESI PADA MEDICAL COST PERSONAL DATASET

PENGANTAR DATA SAINS





Disusun Oleh:
Kelompok 3

Nama Anggota NIM
Jacky Alinson (3338240008)
Riefan Abdul Hakim (3338240020)
Sofi Cahya Utami (3338240025)
Tadzkiah Fayrooz Ridwan (3338240029)



PROGRAM STUDI STATISTIKA

FAKULTAS TEKNIK

UNIVERSITAS SULTAN AGENG TIRTAYASA

CILEGON

2025


KATA PENGANTAR

Puji syukur kehadirat Allah SWT sehingga laporan ini dapat diselesaikan dengan baik. Laporan ini disusun sebagai bentuk pemenuhan tugas dalam perkuliahan di Program Studi yang penulis tempuh.

Penulis mengucapkan terima kasih kepada Bapak Agung Satrio Wicaksono, S.Mat., M.Si. selaku dosen pengampu mata kuliah Pengantar Data Sains, serta Bapak Aulia Ikhsan, S.Si., M.Si. selaku dosen mata kuliah Analisis Regresi, atas ilmu dan bimbingan yang diberikan selama proses pembelajaran. Juga rekan-rekan kelompok yang telah bekerja sama dengan baik dalam penyusunan laporan ini.

Penulis menyadari bahwa makalah ini jauh dari kata sempurna dan masih terdapat beberapa kekurangan, oleh karena itu penulis sangat mengharapkan saran dan kritik yang membangun dari pembaca untuk penyempurnaan makalah ini.

Cilegon, 11 Desember 2025

Penulis


DAFTAR ISI

DAFTAR ISI

DAFTAR GAMBAR

KATA PENGANTAR

BAB 1 PENDAHULUAN

1.1 Latar Belakang

1.2 Deskripsi Dataset

1.3 Rumusan Masalah

1.4 Tujuan

1.5 Manfaat

BAB 2 TINJAUAN PUSTAKA

2.1 Regresi Linear Berganda

2.2 Asumsi-Asumsi Regresi Linear

 2.2.1 Asumsi Linearitas

 2.2.2 Asumsi Normalitas Galat

 2.2.3 Asumsi Homoskedastisitas

 2.2.4 Asumsi Tidak Ada Autokorelasi

 2.2.5 Asumsi Tidak Ada Multikolinearitas

2.3 Seleksi Model (Model Selection)

 2.3.1 Forward Selection

 2.3.2 Backward Elimination

 2.3.3 Stepwise Selection

2.4 Kriteria Pemilihan Model

 2.4.1 Akaike Information Criterion (AIC)

 2.4.2 Bayesian Information Criterion (BIC)

 2.4.3 Adjusted R-Squared

2.5 Uji Signifikansi Model

 2.5.1 Uji F (Keseluruhan Model)

 2.5.2 Uji t (Signifikansi Parameter)

2.6 Diagnostik Model

 2.6.1 Analisis Residual

 2.6.2 Deteksi Outlier dan Titik Pengaruh

BAB 3 METODE ANALISIS DATA

3.1 Sumber Data

3.2 Variabel Penelitian

3.3 Metode Analisis

3.4 Tahapan Analisis Data

BAB 4 HASIL DAN PEMBAHASAN

4.1 Deskriptif Data

4.2 Pra-Pemrosesan Data

4.3 Eksploratif Data

4.4 Pembentukan Model Regresi

4.5 Pemilihan Model Regresi Terbaik

4.6 Uji Diagnostik

4.7 Pembahasan Akhir

BAB 5 KESIMPULAN

5.1 Kesimpulan

5.2 Saran

DAFTAR PUSTAKA


DAFTAR GAMBAR

Gambar 1. Histogram Distribusi Variabel Charges

Gambar 2. Boxplot Distribusi Variabel BMI

Gambar 3. Scatter Plot Hubungan Antar Variabel (Numerik)

Gambar 4. Empat Plot Diagnostik


BAB 1

PENDAHULUAN

1.1 Latar Belakang

Biaya perawatan kesehatan merupakan salah satu komponen penting dalam sistem asuransi, karena setiap individu memiliki risiko dan kebutuhan medis yang berbeda. Untuk memahami faktor-faktor apa saja yang mempengaruhi besarnya biaya medis, diperlukan data yang mampu menggambarkan karakteristik personal peserta asuransi.

Medical Cost Personal Dataset dari Kaggle menyediakan informasi lengkap mengenai usia, jenis kelamin, indeks massa tubuh (BMI), jumlah tanggungan anak, status merokok, serta wilayah tempat tinggal peserta asuransi. Variabel-variabel tersebut digunakan untuk mempelajari bagaimana karakteristik demografis dan gaya hidup dapat memengaruhi besarnya tagihan medis (charges) yang dibayarkan oleh perusahaan asuransi.

Pemodelan statistik memiliki peran penting dalam menganalisis berbagai fenomena kuantitatif, termasuk dalam memprediksi biaya medis individu. Seleksi model merujuk pada proses memilih model terbaik dari sekumpulan model statistik kandidat berdasarkan suatu dataset.

Alasan utamanya berkaitan dengan risiko overfitting. Sebuah model mungkin bekerja sangat baik pada data yang sangat kompleks hingga mampu menyesuaikan setiap sampel secara sempurna namun gagal melakukan generalisasi ketika diterapkan pada data baru. Oleh karena itu, model yang baik bukan hanya yang mampu menyesuaikan data pelatihan dengan baik, tetapi juga yang mempertahankan kinerja kuat pada data yang belum pernah dilatih sebelumnya. Sebelum sebuah model digunakan secara nyata, kita harus memastikan bahwa kinerjanya tetap stabil ketika diberikan masukan baru.

“Model yang cukup baik” sangat bergantung pada tujuan dan kendala khusus suatu proyek, oleh karena itu kita harus menemukan model yang “cukup baik” untuk kasus-kasus tertentu.

Beberapa ukuran yang umum digunakan dalam seleksi model adalah Adjusted R-squared (\(R^2\) adj), Akaike Information Criterion (AIC), dan Bayesian Information Criterion (BIC). Adjusted \(R^2\) digunakan untuk menilai seberapa baik model menjelaskan keragaman data dengan memperhitungkan jumlah variabel, sehingga lebih tepat dalam membandingkan model yang berbeda kompleksitas. Sementara itu, AIC dan BIC memberikan penalti pada jumlah parameter model sekaligus memberikan “reward” untuk goodness of fit pada data pelatihan. Oleh karena itu, model terbaik adalah model dengan nilai AIC atau BIC paling kecil. Namun demikian, BIC memberikan penalti kompleksitas yang lebih kuat dibandingkan AIC, sehingga BIC cenderung memilih model yang lebih sederhana, bahkan jika model tersebut sedikit lebih buruk dalam hal fit.

Ketiga ukuran tersebut digunakan untuk menyeleksi model baik menggunakan Seleksi Maju (Forward Selection), Penyisihan (Backward Elimination), ataupun Seleksi Bertahap (Stepwise Selection).

1.2 Deskripsi Dataset

Dataset yang digunakan pada proyek ini adalah Medical Cost Personal Dataset, yang dapat diakses secara luas melalui platform Kaggle. Dataset ini cocok digunakan untuk studi regresi karena memiliki struktur data yang sederhana namun tetap kaya interpretasi.

Medical Cost Personal Dataset memuat satu variabel respon yaitu charges, yang merepresentasikan biaya medis yang harus dibayar oleh pasien. Variabel respon tersebut dipengaruhi oleh beberapa variabel bebas yang menggambarkan karakteristik pasien yaitu age, gender, BMI, children, dan smoker. Dataset ini menjelaskan tentang faktor-faktor yang mempengaruhi besarnya biaya kesehatan yang dikeluarkan oleh seseorang.

Medical Cost Personal Dataset terdiri atas kombinasi variabel numerik seperti age, BMI, children, dan charges serta variabel kategorik seperti gender dan smoker. Dataset ini cocok digunakan untuk seleksi model karena jumlah variabel bebas yang tidak terlalu banyak tapi juga tidak terlalu sedikit sehingga memungkinkan untuk membandingkan kombinasi dan pemilihan model menjadi bermakna. Ukuran sampelnya pun cukup besar sehingga memungkinkan analisis statistik yang akurat dan tidak terlalu kompleks.

Alasan dipilihnya Medical Cost Personal Dataset untuk proyek kali ini karena dataset ini memiliki data yang jelas dan minim missing value, memiliki variabel bebas dengan jumlah yang cukup sehingga proses seleksi model menjadi bermakna, serta struktur data yang sederhana sehingga mudah dilakukan pengolahan data namun tetap kaya akan interpretasi.

1.3 Rumusan Masalah

  1. Model manakah yang mampu menjelaskan Medical Cost Personal Dataset secara optimal?
  2. Variabel manakah yang paling berpengaruh terhadap variabel respon (charges)?
  3. Model manakah yang memberikan kinerja prediksi terbaik berdasarkan kriteria statistik seperti AIC, BIC, dan Adjusted \(R^2\) untuk data Medical Cost Personal?

1.4 Tujuan

  1. Memilih model yang Parsimoni, yaitu model yang sederhana namun tetap memiliki kemampuan penjelasan yang optimal pada data Medical Cost Personal.
  2. Mengidentifikasi variabel penjelas yang paling relevan, yaitu variabel yang benar benar berpengaruh signifikan terhadap variabel respon (charges).
  3. Mendapatkan model dengan kinerja prediksi terbaik untuk data Medical Cost Personal, berdasarkan kriteria statistik seperti AIC, BIC, Adjusted \(R^2\), maupun nilai error prediksi.

1.5 Manfaat

  1. Memberikan pemahaman mengenai seleksi model.
  2. Menambah wawasan mengenai pentingya pemilihan variabel dalam analisis regresi.
  3. Menghasilkan model regresi yang akurat dan efisien.

BAB 2

TINJAUAN PUSTAKA

2.1 Regresi Linear Berganda

Regresi linear berganda merupakan metode statistika yang digunakan untuk memodelkan hubungan antara satu variabel respons terhadap sejumlah variabel prediktor. Secara umum, model regresi linear berganda dinyatakan sebagai:

\[Y_i = \beta_0 + \beta_1 X_{i1} + \beta_2 X_{i2} + \dots + \beta_p X_{ip} + \varepsilon_i\]

dengan \(Y_i\) menyatakan nilai variabel respons pada observasi ke-i, \(X_{ij}\) menyatakan nilai variabel prediktor ke-j pada observasi ke-i, \(\beta_j\) merupakan koefisien regresi, serta \(\varepsilon_i\) merupakan galat yang diasumsikan berdistribusi normal \(\varepsilon_i \sim N(0, \sigma^2)\).

Koefisien regresi diestimasi menggunakan metode Ordinary Least Squares (OLS), yaitu dengan meminimalkan jumlah kuadrat residual:

\[Minimize \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2\]

Secara matriks, estimator OLS dinyatakan sebagai:

\[\beta = (X^T X)^{-1} X^T Y\]

Model regresi digunakan untuk memahami pengaruh variabel prediktor serta membuat prediksi terhadap variabel respons.

2.2 Asumsi-Asumsi Regresi Linear

Agar inferensi statistik valid, model regresi harus memenuhi beberapa asumsi dasar berikut.

2.2.1 Asumsi Linearitas

Hubungan antara variabel respons dan prediktor bersifat linear. Diperiksa melalui hubungan antara residual dan fitted values.

2.2.2 Asumsi Normalitas Galat

Residual diasumsikan berdistribusi normal: \[\varepsilon_i \sim N(0, \sigma^2)\]

Diperiksa melalui:

  • Q-Q plot,
  • Uji Shapiro-Wilk, dengan statistik: \[W = \frac{(\sum_{i=1}^{n} a_i y_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}\]

2.2.3 Asumsi Homoskedastisitas

Variansi residual konstan: \[Var(\varepsilon_i) = \sigma^2\]

Diuji menggunakan Breusch-Pagan: \[BP = \frac{1}{2} \sum_{i=1}^{n} \hat{e}_i^2 z_i\] dengan \(z_i\) adalah fitted values dari model regresi pada \(e_i^2\).

2.2.4 Asumsi Tidak Ada Autokorelasi

Residual tidak saling berkorelasi. Uji Durbin–Watson dengan statistik: \[DW = \frac{\sum_{i=2}^{n} (e_i - e_{i-1})^2}{\sum_{i=1}^{n} e_i^2}\]

2.2.5 Asumsi Tidak Ada Multikolinearitas

Prediktor tidak saling berkorelasi tinggi. Diuji menggunakan VIF (Variance Inflation Factor): \[VIF_j = \frac{1}{1 - R_j^2}\]

2.3 Seleksi Model (Model Selection)

Dalam regresi linear, terdapat beberapa pendekatan seleksi model yang umum digunakan, yaitu Forward Selection, Backward Elimination, dan Stepwise Selection. Ketiga metode ini dapat bekerja dengan berbagai kriteria pemilihan model, salah satunya yang paling sering digunakan adalah Akaike Information Criterion (AIC).

2.3.1 Forward Selection

Forward Selection merupakan pendekatan yang membangun model dari kondisi awal yang paling sederhana, yaitu model kosong: \[Y = \beta_0 + \varepsilon\]

Pada setiap langkah, satu variabel prediktor ditambahkan ke model berdasarkan kontribusinya dalam meningkatkan kualitas model, biasanya diukur melalui penurunan nilai AIC atau peningkatan adjusted \(R^2\). Variabel yang dipertimbangkan ditambahkan jika keberadaannya menghasilkan model yang lebih baik dibandingkan model sebelumnya.

Secara umum, prosedurnya adalah:

  1. Mulai dari model kosong.
  2. Tambahkan variabel yang secara individual memberikan peningkatan kualitas model paling besar.
  3. Evaluasi model baru menggunakan kriteria seperti AIC.
  4. Jika penurunan AIC tidak terjadi lagi atau tidak signifikan, proses berhenti.
  5. Model terakhir dianggap terbaik versi forward.

2.3.2 Backward Elimination

Backward Elimination bekerja dengan prinsip yang berlawanan dengan Forward Selection. Metode ini dimulai dari model lengkap: \[Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_p X_p + \varepsilon\]

Pada tiap langkah, satu variabel yang paling tidak signifikan atau memberikan kontribusi paling kecil terhadap model dikeluarkan berdasarkan kriteria tertentu, misalnya:

  • Koefisien tidak signifikan pada uji t,
  • Menaikkan AIC,
  • Nilai adjusted \(R^2\) menurun,
  • Koefisien memiliki nilai VIF tinggi.

Prosedurnya:

  1. Mulai dari model lengkap dengan seluruh prediktor.
  2. Hitung AIC model tersebut.
  3. Hilangkan satu variabel yang, ketika dihapus, menghasilkan penurunan AIC terbesar.
  4. Ulangi hingga tidak ada penghapusan variabel yang dapat memperbaiki nilai AIC.

2.3.3 Stepwise Selection

Stepwise Selection merupakan kombinasi kedua metode sebelumnya variabel dapat masuk maupun keluar model dalam proses yang sama. Metode ini lebih fleksibel dan sering memberikan hasil yang lebih stabil dibanding forward atau backward saja.

Prosedurnya secara umum:

  1. Mulai dari model awal (bisa null model atau full model).
  2. Lakukan langkah forward (menambah variabel yang paling meningkatkan kualitas model).
  3. Setelah penambahan dilakukan, evaluasi ulang model dan lakukan langkah backward (menghapus variabel tidak signifikan yang justru menurunkan kualitas model).
  4. Proses terus berulang hingga tidak ada variabel yang masuk atau keluar.

Kriteria evaluasi yang sering digunakan dalam Stepwise adalah AIC. Sebuah variabel akan tetap berada di model jika: \[AIC_{baru} < AIC_{lama}\] dan dikeluarkan jika kenaikannya signifikan.

Kelebihan Stepwise:

  • Lebih adaptif,
  • Mampu menangkap struktur model yang tidak terlihat oleh forward atau backward secara tunggal,
  • Lebih efisien dalam jumlah prediktor banyak.

2.4 Kriteria Pemilihan Model

Beberapa metrik yang digunakan untuk mengevaluasi model dijelaskan berikut.

2.4.1 Akaike Information Criterion (AIC)

AIC mengukur keseimbangan antara kualitas model dan kompleksitas model. Rumus AIC: \[AIC = 2k - 2\ln(L)\] dengan: \(k\) = jumlah parameter dalam model, \(L\) = nilai likelihood maksimum.

Model terbaik adalah model dengan nilai AIC paling kecil.

2.4.2 Bayesian Information Criterion (BIC)

BIC memberikan penalti lebih besar pada jumlah parameter dibanding AIC: \[BIC = k\ln(n) - 2\ln(L)\] dengan \(n\) jumlah observasi. BIC lebih konservatif dan cenderung memilih model yang lebih sederhana.

2.4.3 Adjusted R-Squared

Berbeda dengan \(R^2\) yang selalu meningkat saat menambah prediktor, adjusted \(R^2\) melakukan penalti sehingga lebih tepat untuk model dengan banyak prediktor: \[R^2_{adj} = 1 - (1 - R^2) \frac{n - 1}{n - p - 1}\] Nilai yang lebih besar menunjukkan model lebih baik.

2.5 Uji Signifikansi Model

Prosedur untuk menilai apakah model regresi yang dibangun benar-benar memiliki hubungan yang bermakna.

2.5.1 Uji F (Keseluruhan Model)

Digunakan untuk menilai apakah minimal satu prediktor berpengaruh signifikan. \[F = \frac{SSR/p}{SSE/(n - p - 1)}\] dengan: SSR = regression sum of squares, SSE = error sum of squares.

2.5.2 Uji t (Signifikansi Parameter)

Digunakan untuk menguji signifikansi masing-masing koefisien regresi: \[t = \frac{\hat{\beta}_j}{SE(\hat{\beta}_j)}\] Jika \(t\) besar maka variabel signifikan.

2.6 Diagnostik Model

Setelah model terbaik diperoleh, perlu dilakukan pemeriksaan diagnostik untuk memastikan kualitas model.

2.6.1 Analisis Residual

Residual harus:

  • Tersebar acak,
  • Tidak menunjukkan pola,
  • Memiliki variansi konstan.

Diperiksa melalui:

  • Residual vs fitted plot,
  • Scale-location plot,
  • Normal Q–Q plot.

2.6.2 Deteksi Outlier dan Titik Pengaruh

Metode umum: Cook’s Distance \[D_i = \frac{e_i^2}{p \cdot MSE} \left[ \frac{h_{ii}}{(1 - h_{ii})^2} \right]\] dengan \(h_{ii}\) adalah nilai leverage. Nilai \(D_i > 1\) umumnya dianggap titik pengaruh.


BAB 3

METODE ANALISIS DATA

3.1 Sumber Data

Data yang digunakan adalah data yang tersedia di situs Kaggle, yaitu situs yang menyediakan berbagai dataset publik untuk penelitian dan analisis data. Dataset yang dipakai berupa data Medical Cost Personal Datasets oleh Miri Choi. Dataset ini terdiri dari 1.338 data observasi dan 7 variabel utama yang memuat informasi mengenai karakteristik individu dan nominal asuransi kesehatan yang harus dibayarkan.

Dataset dapat diakses melalui tautan: https://www.kaggle.com/datasets/mirichoi0218/insurance

Dataset Medical Cost Personal oleh Miri Choi memiliki banyak variabel penting seperti informasi umur, jenis kelamin, Body Mass Index (BMI), jumlah anak, status perokok, wilayah, dan biaya asuransi. Dataset ini memiliki interaksi potensial, khususnya pada interaksi umur dan berat badan. Selain itu, data ini mengandung kombinasi numerik dan kategorik dan biasanya sangat fit untuk regresi linear.

3.2 Variabel Penelitian

Berdasarkan data yang digunakan, terdapat 1.338 observasi dan 7 variabel yang mewakili karakteristik individu dan biaya asuransi kesehatan. Variabel-variabel dan jenis data dalam penelitian ini adalah sebagai berikut:

  • Age: Usia penerima manfaat asuransi.
  • Sex: Jenis kelamin pemegang polis asuransi (perempuan atau laki-laki).
  • BMI: Indeks massa tubuh, memberikan pemahaman tentang berat badan yang relatif tinggi atau rendah dibandingkan dengan tinggi badan.
  • Children: Jumlah anak yang ditanggung oleh asuransi kesehatan / jumlah tanggungan.
  • Smoke: Status merokok.
  • Region: Wilayah tempat tinggal penerima manfaat asuransi di AS (timur laut, tenggara, barat daya, barat laut).
  • Charges: Biaya medis individu yang ditagih oleh asuransi kesehatan.

Berikut struktur dataset Medical Cost Personal yang berisi rincian jumlah observasi, jumlah variabel, nama variabel, tipe data masing-masing variabel yang digunakan dalam penelitian:

data <- read.csv("insurance.csv")
View(data)
str(data)
## 'data.frame':    1338 obs. of  7 variables:
##  $ age     : int  19 18 28 33 32 31 46 37 37 60 ...
##  $ sex     : chr  "female" "male" "male" "male" ...
##  $ bmi     : num  27.9 33.8 33 22.7 28.9 ...
##  $ children: int  0 1 3 0 0 0 1 3 2 0 ...
##  $ smoker  : chr  "yes" "no" "no" "no" ...
##  $ region  : chr  "southwest" "southeast" "southeast" "northwest" ...
##  $ charges : num  16885 1726 4449 21984 3867 ...

Variabel “charges” digunakan sebagai variabel dependen (Y), sedangkan variabel lainnya, digunakan sebagai variabel independen (X). Hal ini bertujuan untuk menganalisis dan memodelkan pengaruh karakteristik individu terhadap besarnya biaya asuransi kesehatan yang harus dibayarkan.

3.3 Metode Analisis

Metode analisis data yang digunakan dalam penelitian ini adalah seleksi model regresi dengan menggunakan pengukuran AIC (Akaike Information Criterion). Pengukuran AIC digunakan untuk memilih prediktor pada model regresi dan mengukur baik kesesuaian model dan kesederhanaan model dalam satu statistik. Skor AIC yang lebih rendah maka semakin baik.

Hubungan penggunaan AIC dengan data Medical Cost Personal terletak pada banyaknya variabel bebas yang berpotensi mempengaruhi biaya asuransi kesehatan (charges). Apabila semua variabel dimasukan langsung ke dalam model, kemungkinan model akan terlalu kompeks (overfitting) sehingga kurang efisien. Oleh karena itu, AIC digunakan untuk membandingkan berbagai kombinasi model regresi yang terbentuk dari variabel-variabel tersebut.

Selain itu, metode yang digunakan dalam seleksi model ini mencakup metode forward, backward, dan stepwise selection. Dari ketiga metode ini, setiap model dibandingkan berdasarkan nilai AIC yang diperoleh. Model AIC terendah dipilih sebagai model terbaik untuk merepresentasikan hubungan antara karakteristik individu dan biaya asuransi kesehatan.

3.4 Tahapan Analisis Data

Import Data

Tahap pertama dalam analisis data pada perangkat lunak R adalah dengan memanggil package yang diperlukan dengan menggunakan fungsi library(). Beberapa package yang digunakan dalam analisis meliputi: tidyverse, MASS, car dan readr.

library (tidyverse)
library (MASS)
library (car)
library (readr)

Data diimpor dari file insurance.csv yang telah diunduh dari platform Kaggle dengan menggunakan fungsi read.csv(). Kemudian, data yang telah diimpor, dilakukan pemeriksaan struktur menggunakan fungsi str() dan fungsi summary() untuk menampilkan ringkasan data.

# 1. Import data
data <- read.csv("C:/Users/HP/Downloads/insurance/insurance.csv")
View(data)
str(data)
summary(data)

3.4.1 Pra-Pemroresan Data

Tahap pra-pemrosesan bertujuan untuk menyesuaikan tipe data dan melakukan pemeriksaan data hilang (missing value). Melalui fungsi mutate(), variabel smoker dan region diubah menjadi tipe data factor dari yang sebelumnya merupakan variabel kategorik.

# 2. Pra-pemrosesan
data <- data %>%
  mutate(
    smoker = factor(smoker, levels = c("no","yes")),
    region = factor(region)
  )
colSums(is.na(data))

Pada variabel smoker, level diatur menjadi “no” dan “yes”, sedangkan variabel region dikonversi tanpa pengaturan level tertentu agar wilayah manapun dapat dibandingkan. Hasil pemeriksaan data hilang (missing values) ditunjukkan ketika setiap variabel memiliki nilai 0, maka tidak terdapat data yang hilang. Dengan demikian, data siap digunakan untuk tahap eksplorasi dan pemodelan lebih lanjut.

3.4.2 Analisis Eksploratif Data

Tahap ini, digunakan visualisasi untuk melihat pola distribusi data, serta kemungkinan adanya outlier yang dapat mempengaruhi hasil analisis. Visualisasi yang ditampilkan berupa histogram, boxplot, dan scatter plot.

# 3. Eksplorasi awal
hist(data$charges, main = "Distribusi Charges",
     xlab = "Charges", breaks = 50)
boxplot(data$bmi, main = "Boxplot BMI", ylab = "BMI")
pairs(~ charges + age + bmi + children, data = data, main = "Scatter Plot Basic Variables")

Histogram digunakan untuk melihat pola sebaran variabel Charges dari seluruh observasi. Boxplot digunakan untuk melihat ringkasan statistik terutama dari variabel BMI. Scatter plot digunakan untuk melihat hubungan antar variabel yang memiliki tipe data numerik seperti charges, age, BMI, dan children.

3.4.3 Pembentukkan Model Regresi

Tahap ini dibentuk dengan dua model regresi sebagai kandidat untuk menjelaskan hubungan antara variabel independen dengan variabel charges. Model ini, dibentuk dengan menggunakan fungsi lm().

# 4. Model kandidat
model1 <- lm(charges ~ age + bmi + children + smoker + region, data = data)
summary(model1)
AIC(model1)

Model pertama dibentuk tanpa adanya interaksi antara variabel bebas. Model ini bertujuan untuk melihat pengaruh masing-masing variabel terhadap biaya asuransi kesehatan. Fungsi summary(model1) yaitu fungsi yang digunakan untuk melihat ringkasan data yang dihasilkan dari model 1, meliputi koefisien regresi, nilai signifikansi variabel, nilai R-squared dan nilai statistik lainnya. AIC(model1) adalah fungsi untuk nilai AIC dari model 1 dalam proses seleksi model terbaik.

model2 <- lm(charges ~ age * bmi + children + smoker + region, data = data)
summary(model2)
AIC(model2)

Model kedua dibentuk dengan adanya interaksi antara variabel age dan BMI. Model ini bertujuan untuk menguji apakah usia berpengaruh terhadap biaya asuransi yang bergantung pada nilai BMI, atau sebaliknya. Fungsi summary(model2) yaitu fungsi yang digunakan untuk melihat ringkasan statistik dari data yang dihasilkan dari model 2. AIC(model2) adalah fungsi untuk nilai AIC dari model 2 dalam proses seleksi model terbaik.

3.4.4 Seleksi Model

Dalam penelitian ini digunakan tiga metode seleksi mode yaitu, forward selection, backward selection, dan stepwise selection. Masing-masing metode seleksi dilakukan dengan menggunakan pengukuran AIC (Akaike Information Criterion).

Forward Selection

# 5. Model selection AIC
null_model <- lm(charges ~ 1, data = data)
forward_model <- step(null_model,
                      scope = list(lower = ~1,
                                   upper = ~ age * bmi + children + smoker + region),
                      direction = "forward",
                      trace = TRUE)
summary(forward_model)
AIC(forward_model)

Metode forward selection dimulai dari tahap pembentukkan model yang sederhana, yaitu null model yang hanya berisi intercept model. Selanjutnya, proses forward dilakukan dengan menambahkan satu per satu variabel ke dalam model berdasarkan hasil penurunan nilai AIC yang paling rendah. Proses ini berhenti ketika variabel tambahan tidak lagi dapat menurunkan nilai AIC yang dibandingkan pada model sebelumnya. Hasil akhir metode forward dapat ditampilkan dengan menggunakan fungsi summary() untuk menampilkan hasil model terbaik, dan AIC() yaitu nilai AIC dari model yang terpilih.

Backward Selection

backward_model <- step(model1, direction = "backward",
                       trace = TRUE)
summary(backward_model)
AIC(backward_model)

Metode backward selection dimulai dengan menggunakan model tanpa interaksi yang berisi seluruh variabel bebas (model 1). Proses backward awalnya dilakukan dengan memasukan seluruh variabel ke dalam model, kemudian variabel dihapus satu per satu jika model yang diseleksi tidak dapat menurunkan nilai AIC. Proses ini berhenti ketika variabel pada model tidak menghasilkan nilai AIC yang lebih rendah dari model sebelumnya. Hasil akhir metode backward dapat ditampilkan dengan menggunakan fungsi summary() untuk menampilkan hasil model terbaik, dan AIC() yaitu nilai AIC dari model yang terpilih.

Stepwise Selection

stepwise_model <- step(model1, direction = "both",
                       trace = TRUE)
summary(stepwise_model)
AIC(stepwise_model)

Metode stepwise selection adalah penggabungan dari metode forward dan backward selection. Tahapan pada proses stepwise yaitu dua arah, dalam prosesnya dapat menambah ataupun menghapus variabel dari setiap modelnya. Proses ini berawal dari model kosong pada metode forward, kemudian model dijalankan secara forward step. Setelah didapatkan hasil AIC terendahnya, selanjutnya model dievaluasi secara backward step. Apabila variabel yang lama nilai AIC nya meningkat setelah variabel baru masuk, maka variabel dieliminasi, namun jika variabel yang baru dimasukan semakin memperkecil nilai AIC, maka proses berlanjut. Proses ini berhenti sampai tidak ada lagi variabel yang bisa masuk dan tidak ada lagi variabel yang perlu dihapus. Hasil akhir metode backward dapat ditampilkan dengan menggunakan fungsi summary() untuk menampilkan hasil model terbaik, dan AIC() yaitu nilai AIC dari model yang terpilih.

3.4.5 Bandingkan Model

Setelah model-model kandidat dibentuk dan diseleksi, tahap selanjutnya dilakukan perbandingan berdasarkan nilai AIC yang diperoleh dari ketiga metode seleksi model yang digunakan. Pada tahap ini, seluruh model tersebut dikumpulkan ke dalam satu daftar, kemudian dilakukan perhitungan untuk menentukan nilai AIC dari setiap model dengan menggunakan fungsi sapply(). Model terbaik dari hasil perbandingan tersebut adalah model dengan nilai AIC terendah, model inilah yang digunakan untuk merepresentasikan analisis regresi lebih lanjut.

# 6. Bandingkan model
models <- list(
  "Full" = model1,
  "Full + Interaction" = model2,
  "Forward" = forward_model,
  "Backward" = backward_model,
  "Stepwise" = stepwise_model
)
aic_values <- sapply(models, AIC)
print(aic_values)
best_name <- names(which.min(aic_values))
best_model <- models[[best_name]]
cat("Model terbaik menurut AIC:", best_name, "\n")
summary(best_model)

3.4.6 Uji Diagnostik Model

Uji diagnostik model penting untuk memastikan model regresi linear memenuhi asumsi-asumsi dasar agar hasil analisis baik dan dapat diinterprestasikan. Uji diagnostik model berupa pemeriksaan grafis untuk memvalidasi model memiliki sebaran yang linear, normalitas residual, homoskedastisitas, dan tidak terdapat outlier.

# 7. Diagnosa model
par(mfrow = c(2,2))
plot(best_model)

Selain itu, dilakukan pemeriksaan apakah data tersebut multikolinearitas dengan menggunakan uji Variance Inflation Factor (VIF) untuk mengetahui hubungan linier antar variabel bebas. Apabila nilai VIF < 10 maka, tidak terdapat multikolinearitas yang serius, semakin nilai VIF mendekati 1, maka variabel bebas tidak saling berkorelasi.

vif_values <- vif(best_model)
print(vif_values)
par(mfrow = c(1,1))

Apabila data telah menemukan model terbaik dan memenuhi asumsi-asumsi tersebut, artinya data layak digunakan untuk analisis regresi lebih lanjut.


BAB 4

HASIL DAN PEMBAHASAN

4.1 Deskriptif Data

Data yang digunakan dalam penelitian ini terdiri dari 1.338 observasi dengan 7 variabel: age, BMI, children, smoker, region, dan charges.

library (tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tibble' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.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 (MASS)
## 
## Attaching package: 'MASS'
## 
## The following object is masked from 'package:dplyr':
## 
##     select
library (car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
## 
## Attaching package: 'car'
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following object is masked from 'package:purrr':
## 
##     some
library (readr)

data <- read.csv("C:/Users/HP/Downloads/insurance/insurance.csv")
str(data)
## 'data.frame':    1338 obs. of  7 variables:
##  $ age     : int  19 18 28 33 32 31 46 37 37 60 ...
##  $ sex     : chr  "female" "male" "male" "male" ...
##  $ bmi     : num  27.9 33.8 33 22.7 28.9 ...
##  $ children: int  0 1 3 0 0 0 1 3 2 0 ...
##  $ smoker  : chr  "yes" "no" "no" "no" ...
##  $ region  : chr  "southwest" "southeast" "southeast" "northwest" ...
##  $ charges : num  16885 1726 4449 21984 3867 ...

Setelah pengecekan, data tersebut berhasil terimpor utuh sebanyak 1.338 baris dan 7 kolom. Pada variabel smoker, dan region terdeteksi sebagai chr (character/teks). Variabel ini akan diubah pada tahap pra-pemrosesan data.

4.2 Pra-Pemrosesan Data

Berdasarkan hasil pengolahan data awal, tidak ditemukan adanya missing value (data hilang) pada dataset, sehingga seluruh 1.338 data dapat digunakan. Variabel kategorik smoker dan region akan dikonversi menjadi tipe faktor untuk keperluan analisis.

data <- data %>%
  mutate(
    smoker = factor(smoker, levels = c("no","yes")),
    region = factor(region)
  )
colSums(is.na(data))
##      age      sex      bmi children   smoker   region  charges 
##        0        0        0        0        0        0        0

Berdasarkan output tersebut data siap dibentuk model regresi. Angka 0 pada semua kolom dalam output colSums(is.na(data)) menunjukkan bahwa data ini bersih.

4.3 Eksploratif Data

Eksplorasi visual dilakukan untuk melihat pola distribusi:

4.3.1 Distribusi charges dengan Histogram

hist(data$charges, main = "Distribusi Charges", xlab = "Charges",   breaks = 50)

Gambar 1. Histogram Distribusi Variabel Charges

Histogram menunjukkan:

  • Distribusi yang sangat menceng ke kanan (right-skewed) menunjukkan bahwa sebagian besar individu memiliki biaya asuransi yang relatif rendah.
  • Terdapat batang-batang kecil yang terpisah jauh di ujung kanan yang adalah pencilan yang mungkin disebabkan oleh penyakit serius menurut data pasien [umur (age), perokok (smoker), obesitas (BMI)].

4.3.2 Distribusi BMI dengan Boxplot

boxplot(data$bmi, main = "Boxplot BMI", ylab = "BMI")

Gambar 2. Boxplot Distribusi Variabel BMI

Boxplot menunjukkan:

  • Garis tebal di tengah kotak berada tepat di sekitar angka 30 yang dimana BMI diatas 30 dikategorikan obesitas, Ini menunjukkan bahwa rata-rata pasien dalam data ini memiliki berat badan berlebih setidaknya 50% dari data populasi.
  • Titik-titik lingkaran kecil yang berada di atas garis kumis atas (upper whisker) adalah data pencilan yang artinya terdapat sejumlah kecil individu dengan BMI ekstrem yang sangat tinggi (di atas 47) yang mungkin akan memiliki korelasi dengan biaya pengobatan yang lebih mahal.

4.3.3 Hubungan Antar Variabel (Numerik) dengan Scatter Plot

pairs(~ charges + age + bmi + children, data = data, main =         "Scatter Plot Basic Variables")

Gambar 3. Scatter Plot Hubungan Antar Variabel (Numerik)

Scatter Plot Menunjukan:

  • Age vs. Charges: Terlihat adanya pola linear positif yang kuat. Semakin bertambah usia (age), biaya asuransi (charges) cenderung meningkat. Namun, terdapat pola yang unik berupa terbentuknya tiga garis paralel yang terpisah.
  • BMI vs. Charges: Plot menunjukkan dua pola sebaran data yang berbeda:
    • Pola 1: Sekumpulan data yang mendatar/flat, menunjukkan bahwa bagi sebagian orang, kenaikan BMI tidak terlalu mempengaruhi kenaikan biaya secara drastis.
    • Pola 2: Sekumpulan data yang menanjak tajam ke kanan atas, menunjukkan bahwa bagi kelompok tertentu, kenaikan BMI menyebabkan lonjakan biaya yang sangat tinggi.
  • Children vs. Charges: Karena variabel children bersifat diskrit (bilangan bulat 0, 1, 2, ), plot berbentuk garis-garis vertikal. Tidak terlihat pola linear yang jelas atau drastis, yang menunjukkan bahwa jumlah anak mungkin memiliki pengaruh yang lebih kecil dibandingkan usia atau BMI.
  • Age vs. BMI: Titik-titik menyebar secara acak memenuhi area plot tanpa membentuk pola garis tertentu yanga artinya tidak ada korelasi antara usia dan berat badan (BMI).
  • Age vs. Children: Sebaran data terlihat acak. data tidak menunjukkan hubungan linear yang kuat.
  • BMI vs. Children: Pola terlihat acak dan datar. Tidak ada korelasi antara jumlah anak dengan indeks massa tubuh seseorang.

4.4 Pembentukan Model Regresi

Membuat dengan dua model regresi sebagai kandidat untuk menjelaskan hubungan antara variabel independen dengan variabel charges.

4.4.1 Model 1

model1 <- lm(charges ~ age + bmi + children + smoker + region, data = data)
summary(model1)
## 
## Call:
## lm(formula = charges ~ age + bmi + children + smoker + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.2  -2835.4   -979.7   1361.9  29935.5 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11990.27     978.76 -12.250  < 2e-16 ***
## age                256.97      11.89  21.610  < 2e-16 ***
## bmi                338.66      28.56  11.858  < 2e-16 ***
## children           474.57     137.74   3.445 0.000588 ***
## smokeryes        23836.30     411.86  57.875  < 2e-16 ***
## regionnorthwest   -352.18     476.12  -0.740 0.459618    
## regionsoutheast  -1034.36     478.54  -2.162 0.030834 *  
## regionsouthwest   -959.37     477.78  -2.008 0.044846 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6060 on 1330 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7496 
## F-statistic: 572.7 on 7 and 1330 DF,  p-value: < 2.2e-16
AIC(model1)
## [1] 27113.66

4.4.2 Model 2 dengan Interaksi Age × BMI

model2 <- lm(charges ~ age * bmi + children + smoker + region, data = data)
summary(model2)
## 
## Call:
## lm(formula = charges ~ age * bmi + children + smoker + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11366.2  -2832.8   -978.1   1371.9  29935.9 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -1.177e+04  2.492e+03  -4.722 2.58e-06 ***
## age              2.511e+02  6.114e+01   4.107 4.24e-05 ***
## bmi              3.313e+02  8.020e+01   4.131 3.83e-05 ***
## children         4.744e+02  1.378e+02   3.443 0.000594 ***
## smokeryes        2.384e+04  4.121e+02  57.843  < 2e-16 ***
## regionnorthwest -3.511e+02  4.764e+02  -0.737 0.461341    
## regionsoutheast -1.033e+03  4.791e+02  -2.156 0.031299 *  
## regionsouthwest -9.602e+02  4.780e+02  -2.009 0.044777 *  
## age:bmi          1.898e-01  1.942e+00   0.098 0.922159    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6062 on 1329 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7494 
## F-statistic: 500.7 on 8 and 1329 DF,  p-value: < 2.2e-16
AIC(model2)
## [1] 27115.65

4.4.3 Perbandingan Model

  • Koefisien Determinasi (\(R^2\)): Kedua model menjelaskan sekitar 0,7509 atau 75.1% variabilitas charges
  • AIC: Model 1 memiliki AIC yang sedikit lebih rendah dan model 2 penambahan interaksi tidak memberikan penurunan AIC yang signifikan dalam kebaikan model \(R^2\).

4.5 Pemilihan Model Regresi Terbaik

null_model <- lm(charges ~ 1, data = data)
forward_model <- step(null_model,
                      scope = list(lower = ~1,
                                   upper = ~ age * bmi + children + smoker + region),
                      direction = "forward",
                      trace = TRUE)
## Start:  AIC=25160.18
## charges ~ 1
## 
##            Df  Sum of Sq        RSS   AIC
## + smoker    1 1.2152e+11 7.4554e+10 23868
## + age       1 1.7530e+10 1.7854e+11 25037
## + bmi       1 7.7134e+09 1.8836e+11 25109
## + children  1 9.0660e+08 1.9517e+11 25156
## + region    3 1.3008e+09 1.9477e+11 25157
## <none>                   1.9607e+11 25160
## 
## Step:  AIC=23868.38
## charges ~ smoker
## 
##            Df  Sum of Sq        RSS   AIC
## + age       1 1.9928e+10 5.4626e+10 23454
## + bmi       1 7.4856e+09 6.7069e+10 23729
## + children  1 7.5272e+08 7.3802e+10 23857
## <none>                   7.4554e+10 23868
## + region    3 1.0752e+08 7.4447e+10 23873
## 
## Step:  AIC=23454.24
## charges ~ smoker + age
## 
##            Df  Sum of Sq        RSS   AIC
## + bmi       1 5112896646 4.9513e+10 23325
## + children  1  459283727 5.4167e+10 23445
## <none>                   5.4626e+10 23454
## + region    3  138426748 5.4488e+10 23457
## 
## Step:  AIC=23324.76
## charges ~ smoker + age + bmi
## 
##            Df Sum of Sq        RSS   AIC
## + children  1 434769398 4.9078e+10 23315
## + region    3 232012208 4.9281e+10 23325
## <none>                  4.9513e+10 23325
## + age:bmi   1    982073 4.9512e+10 23327
## 
## Step:  AIC=23314.96
## charges ~ smoker + age + bmi + children
## 
##           Df Sum of Sq        RSS   AIC
## + region   3 233200844 4.8845e+10 23315
## <none>                 4.9078e+10 23315
## + age:bmi  1    504213 4.9078e+10 23317
## 
## Step:  AIC=23314.58
## charges ~ smoker + age + bmi + children + region
## 
##           Df Sum of Sq        RSS   AIC
## <none>                 4.8845e+10 23315
## + age:bmi  1    351056 4.8845e+10 23317
summary(forward_model)
## 
## Call:
## lm(formula = charges ~ smoker + age + bmi + children + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.2  -2835.4   -979.7   1361.9  29935.5 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11990.27     978.76 -12.250  < 2e-16 ***
## smokeryes        23836.30     411.86  57.875  < 2e-16 ***
## age                256.97      11.89  21.610  < 2e-16 ***
## bmi                338.66      28.56  11.858  < 2e-16 ***
## children           474.57     137.74   3.445 0.000588 ***
## regionnorthwest   -352.18     476.12  -0.740 0.459618    
## regionsoutheast  -1034.36     478.54  -2.162 0.030834 *  
## regionsouthwest   -959.37     477.78  -2.008 0.044846 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6060 on 1330 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7496 
## F-statistic: 572.7 on 7 and 1330 DF,  p-value: < 2.2e-16
AIC(forward_model)
## [1] 27113.66

Proses berhenti karena penambahan variabel terakhir lain tidak menurunkan AIC lebih jauh. Model yang terpilih adalah Model Aditif Penuh (charges ~ age + bmi + children + smoker + region) dengan AIC sebesar 27113,66.

backward_model <- step(model1, direction = "backward", trace = TRUE)
## Start:  AIC=23314.58
## charges ~ age + bmi + children + smoker + region
## 
##            Df  Sum of Sq        RSS   AIC
## <none>                   4.8845e+10 23315
## - region    3 2.3320e+08 4.9078e+10 23315
## - children  1 4.3596e+08 4.9281e+10 23325
## - bmi       1 5.1645e+09 5.4010e+10 23447
## - age       1 1.7151e+10 6.5996e+10 23715
## - smoker    1 1.2301e+11 1.7186e+11 24996
summary(backward_model)
## 
## Call:
## lm(formula = charges ~ age + bmi + children + smoker + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.2  -2835.4   -979.7   1361.9  29935.5 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11990.27     978.76 -12.250  < 2e-16 ***
## age                256.97      11.89  21.610  < 2e-16 ***
## bmi                338.66      28.56  11.858  < 2e-16 ***
## children           474.57     137.74   3.445 0.000588 ***
## smokeryes        23836.30     411.86  57.875  < 2e-16 ***
## regionnorthwest   -352.18     476.12  -0.740 0.459618    
## regionsoutheast  -1034.36     478.54  -2.162 0.030834 *  
## regionsouthwest   -959.37     477.78  -2.008 0.044846 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6060 on 1330 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7496 
## F-statistic: 572.7 on 7 and 1330 DF,  p-value: < 2.2e-16
AIC(backward_model)
## [1] 27113.66

Menggunakan metode backward model juga akan memilih Model Aditif Penuh (charges ~ age + bmi + children + smoker + region) dengan AIC sebesar 27113,66.

stepwise_model <- step(model1, direction = "both", trace = TRUE)
## Start:  AIC=23314.58
## charges ~ age + bmi + children + smoker + region
## 
##            Df  Sum of Sq        RSS   AIC
## <none>                   4.8845e+10 23315
## - region    3 2.3320e+08 4.9078e+10 23315
## - children  1 4.3596e+08 4.9281e+10 23325
## - bmi       1 5.1645e+09 5.4010e+10 23447
## - age       1 1.7151e+10 6.5996e+10 23715
## - smoker    1 1.2301e+11 1.7186e+11 24996
summary(stepwise_model)
## 
## Call:
## lm(formula = charges ~ age + bmi + children + smoker + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.2  -2835.4   -979.7   1361.9  29935.5 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11990.27     978.76 -12.250  < 2e-16 ***
## age                256.97      11.89  21.610  < 2e-16 ***
## bmi                338.66      28.56  11.858  < 2e-16 ***
## children           474.57     137.74   3.445 0.000588 ***
## smokeryes        23836.30     411.86  57.875  < 2e-16 ***
## regionnorthwest   -352.18     476.12  -0.740 0.459618    
## regionsoutheast  -1034.36     478.54  -2.162 0.030834 *  
## regionsouthwest   -959.37     477.78  -2.008 0.044846 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6060 on 1330 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7496 
## F-statistic: 572.7 on 7 and 1330 DF,  p-value: < 2.2e-16
AIC(stepwise_model)
## [1] 27113.66

Metode ini juga menghasilkan model yang sama dengan AIC terendah Model Aditif Penuh.

# Bandingkan model
models <- list(
  "Full" = model1,
  "Full + Interaction" = model2,
  "Forward" = forward_model,
  "Backward" = backward_model,
  "Stepwise" = stepwise_model
)
aic_values <- sapply(models, AIC)
print(aic_values)
##               Full Full + Interaction            Forward           Backward 
##           27113.66           27115.65           27113.66           27113.66 
##           Stepwise 
##           27113.66
best_name <- names(which.min(aic_values))
best_model <- models[[best_name]]
cat("Model terbaik menurut AIC:", best_name, "\n")
## Model terbaik menurut AIC: Full
summary(best_model)
## 
## Call:
## lm(formula = charges ~ age + bmi + children + smoker + region, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.2  -2835.4   -979.7   1361.9  29935.5 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11990.27     978.76 -12.250  < 2e-16 ***
## age                256.97      11.89  21.610  < 2e-16 ***
## bmi                338.66      28.56  11.858  < 2e-16 ***
## children           474.57     137.74   3.445 0.000588 ***
## smokeryes        23836.30     411.86  57.875  < 2e-16 ***
## regionnorthwest   -352.18     476.12  -0.740 0.459618    
## regionsoutheast  -1034.36     478.54  -2.162 0.030834 *  
## regionsouthwest   -959.37     477.78  -2.008 0.044846 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6060 on 1330 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7496 
## F-statistic: 572.7 on 7 and 1330 DF,  p-value: < 2.2e-16

Karena semua metode menghasilkan model yang sama dengan AIC terendah (dibandingkan Model 2), Model Aditif Penuh (charges ~ age + bmi + children + smoker + region) adalah model yang dipilih untuk analisis lebih lanjut dengan interpretasi sebagai berikut.

\[Y = \beta_0 + \beta_1 Age + \beta_2 Children + \beta_3 Smoker + \beta_4 BMI + \beta_5 Region + \varepsilon\]

4.6 Uji Diagnostik

par(mfrow = c(2,2))
plot(best_model)

Gambar 4. Empat Plot Diagnostik

Diagnosa Plot:

  • Residuals vs Fitted (Linearitas & Homoskedastisitas): Plot menunjukkan pola yang jelas berbentuk “corong” (kerucut) dan bukan pita horizontal acak. Hal ini mengindikasikan adanya masalah Heteroskedastisitas (varians residual tidak konstan) dan Non-Linearitas. Meskipun \(R^2\) tinggi, model ini dapat ditingkatkan lagi, biasanya dengan transformasi logaritmik pada variabel dependen (charges).
  • Normal Q-Q (Normalitas Residual): Titik-titik menyimpang jauh dari garis lurus, terutama di kedua ekor, menegaskan bahwa residual tidak terdistribusi normal.
  • Scale-Location (Homoskedastisitas): Sama seperti plot pertama, pola non-horizontal mengkonfirmasi adanya masalah Heteroskedastisitas.
  • Residuals vs Leverage (Pengaruh Pencilan): Plot ini membantu mengidentifikasi pencilan atau titik data yang memiliki pengaruh besar (Leverage Tinggi). Beberapa titik data menunjukkan Leverage Tinggi dan Residual Besar, yang merupakan titik-titik berpengaruh yang mungkin menarik garis regresi menjauh dari data lainnya.
vif_values <- vif(best_model)
print(vif_values)
##              GVIF Df GVIF^(1/(2*Df))
## age      1.016188  1        1.008061
## bmi      1.104197  1        1.050808
## children 1.003714  1        1.001855
## smoker   1.006369  1        1.003179
## region   1.098870  3        1.015838

Hasil uji VIF menunjukkan bahwa seluruh variabel bebas memiliki nilai VIF di bawah 5, bahkan mendekati 1. Hal ini mengonfirmasi bahwa tidak terdapat multikolinearitas antar variabel dalam model, sehingga koefisien regresi yang dihasilkan dapat diinterpretasikan secara valid dan andal.

4.7 Pembahasan Akhir

Berdasarkan hasil analisis, model aditif penuh (charges ~ age + bmi + children + smoker + region) terpilih sebagai model terbaik karena menghasilkan AIC terendah (27.113) di antara semua model tanpa interaksi dan memiliki \(R^2\) yang tinggi yaitu 0,7509. Ditemukan juga bahwa faktor variabel bebas yang ada memiliki pengaruh signifikan terhadap biaya premi asuransi kesehatan (charges). Model regresi berganda yang dibangun berhasil membuktikan hipotesis bahwa perokok dengan BMI tinggi (obesitas) menanggung beban biaya kesehatan tertinggi.


BAB 5

KESIMPULAN

5.1 Kesimpulan

Berdasarkan pengkajian dan hasil analisis pada model regresi linier berganda terhadap dataset Medical Cost Personal yang didapat pada situs Kaggle ditarik beberapa kesimpulan utama mengenai faktor-faktor yang mempengaruhi biaya premi pasien (charges):

  1. Model Regresi Linear Aditif Penuh (charges ~ age + bmi + children + smoker + region) terpilih sebagai model yang paling baik. Model ini mampu menjelaskan 75.09% variabilitas biaya premi (\(R^2=0,7509\)), menunjukkan kinerja prediksi yang kuat.
  2. Variabel status perokok (smoker) adalah prediktor tunggal yang paling signifikan dan memiliki dampak terbesar terhadap biaya. Menjadi perokok diasosiasikan dengan peningkatan biaya premi rata-rata sebesar 23836,30 satuan.
  3. Variabel numerik usia (age) dan Indeks Massa Tubuh (bmi) juga berpengaruh positif dan signifikan terhadap biaya. Kenaikan usia dan BMI secara mandiri meningkatkan beban biaya asuransi.
  4. Jumlah tanggungan anak (children) juga memiliki kontribusi positif yang signifikan.
  5. Uji multikolinearitas (VIF) menunjukkan bahwa model ini bebas dari masalah multikolinearitas antar variabel bebas \(VIF \le 1,11\) yang menjamin stabilitas dan keandalan koefisien regresi yang dihasilkan.
  6. Meskipun model kuat, uji diagnostik menunjukkan adanya pelanggaran asumsi OLS berupa Heteroskedastisitas (varians error tidak konstan) dan Non-Normalitas Residual, yang merupakan karakteristik umum dari data biaya yang menceng (skewed).

5.2 Saran

Berdasarkan hasil analisis, beberapa saran yang dapat dijadikan evaluasi untuk pengembangan sistem manajemen asuransi maupun penelitian lebih lanjut, yaitu:

  1. Menggunakan data yang memiliki jumlah variabel lebih banyak agar dapat menghasilkan model yang akurat dan representatif.
  2. Mengembangkan penelitian yang sudah ada dengan menggunakan metode pemodelan lain untuk melihat korelasi yang lebih kompleks antar variabel.
  3. Memanfaatkan hasil penelitian sebagai acuan dalam pengambilan keputusan dan evaluasi yang berkaitan dengan asuransi kesehatan.

DAFTAR PUSTAKA

Azizah (2021) Hapsari & Rahmawati (2019) Herlambang (2020) Kusuma (2022) Nugroho (2021) Prasetyo (2020) Yuliana (2019)

Azizah, N. (2021). Evaluasi model regresi menggunakan MSE, RMSE, MAE, dan r-square pada data ekonomi regional. Jurnal Matematika Integratif, 17(2), 133–148.
Hapsari, D., & Rahmawati, Y. (2019). Pemeriksaan asumsi-asumsi klasik pada regresi linear dengan pemodelan menggunakan r. Jurnal Sains Dan Matematika, 27(1), 23–34.
Herlambang, A. (2020). Analisis statistik dengan r: Pendekatan praktis untuk pemula. Deepublish.
Kusuma, P. (2022). Pemilihan model terbaik pada regresi linear menggunakan metode adjusted r-square, AIC, dan BIC. Jurnal Statistika Dan Komputasi, 8(3), 201–214.
Nugroho, L. (2021). Deteksi multikolinearitas pada analisis regresi menggunakan variance inflation factor. Jurnal Aplikasi Statistika, 6(2), 87–97.
Prasetyo, M. (2020). Statistical modeling with r: Teori dan implementasi. Andi Publisher.
Yuliana, D. (2019). Teknik validasi model menggunakan data training dan testing dalam analisis regresi. Jurnal Teknologi Informasi Dan Sains, 4(1), 50–60.