Bagaimana melakukan regresi linier dengan variabel kategori di r
Regresi linier adalah metode yang dapat kita gunakan untuk mengukur hubungan antara satu atau lebih variabel prediktor dan variabel respon .
Seringkali, Anda mungkin ingin menyesuaikan model regresi menggunakan satu atau lebih variabel kategori sebagai variabel prediktor.
Tutorial ini memberikan contoh langkah demi langkah tentang cara melakukan regresi linier dengan variabel kategori di R.
Contoh: Regresi Linier dengan Variabel Kategorikal di R
Misalkan kita memiliki kerangka data berikut di R yang berisi informasi mengenai tiga variabel untuk 12 pemain bola basket berbeda:
- poin yang dicetak
- berjam-jam dihabiskan untuk berlatih
- program pelatihan yang digunakan
#create data frame df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18), hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6), program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)) #view data frame df points hours program 1 7 1 1 2 7 2 1 3 9 2 1 4 10 3 1 5 13 2 2 6 14 6 2 7 12 4 2 8 10 3 2 9 16 4 3 10 19 5 3 11 22 8 3 12 18 6 3
Misalkan kita ingin menyesuaikan model regresi linier berikut:
poin = β 0 + β 1 jam + β 2 program
Dalam contoh ini, jam adalah variabel kontinu tetapi program adalah variabel kategorikal yang dapat mengambil tiga kemungkinan kategori: program 1, program 2, atau program 3.
Untuk menyesuaikan model regresi ini dan memberi tahu R bahwa variabel “program” adalah variabel kategori, kita perlu menggunakan as.factor() untuk mengubahnya menjadi faktor, lalu menyesuaikan model:
#convert 'program' to factor
df$program <- as. factor (df$program)
#fit linear regression model
fit <- lm(points ~ hours + program, data = df)
#view model summary
summary(fit)
Call:
lm(formula = points ~ hours + program, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.5192 -1.0064 -0.3590 0.8269 2.4551
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *
program2 2.2949 1.1369 2.019 0.078234 .
program3 6.8462 1.5499 4.417 0.002235 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05
Dari nilai pada kolom Estimasi , kita dapat menuliskan model regresi yang sesuai:
poin = 6,3013 + 0,9744 (jam) + 2,2949 (program 2) + 6,8462 (program 3)
Berikut cara mengartikan nilai koefisien pada hasil:
- Jam : Untuk setiap jam tambahan yang dihabiskan untuk berlatih, poin yang diperoleh meningkat rata-rata 0,9744, dengan asumsi program tetap konstan.
- Nilai p adalah 0,015, menunjukkan bahwa jam yang dihabiskan untuk berlatih merupakan prediktor skor poin yang signifikan secara statistik pada tingkat α = 0,05.
- jadwal2 : Pemain yang menggunakan jadwal 2 mencetak rata-rata 2,2949 poin lebih banyak dibandingkan pemain yang menggunakan jadwal 1, dengan asumsi jam tetap konstan.
- Nilai p adalah 0,078 yang menunjukkan bahwa tidak ada perbedaan yang signifikan secara statistik antara poin yang dicetak oleh pemain yang menggunakan program 2 dibandingkan dengan pemain yang menggunakan program 1, pada level α = 0,05.
- jadwal3 : Pemain yang menggunakan jadwal 3 mencetak rata-rata 2,2949 poin lebih banyak dibandingkan pemain yang menggunakan jadwal 1, dengan asumsi jam tetap konstan.
- Nilai p sebesar 0,002 menunjukkan bahwa terdapat perbedaan poin yang signifikan secara statistik antara pemain yang menggunakan jadwal 3 dibandingkan dengan pemain yang menggunakan jadwal 1, pada tingkat α = 0,05.
Dengan menggunakan model regresi yang sesuai, kami dapat memprediksi jumlah poin yang dicetak oleh seorang pemain berdasarkan jumlah total jam yang dihabiskan untuk berlatih dan program yang mereka gunakan.
Misalnya, kita dapat menggunakan kode berikut untuk memprediksi poin yang dicetak oleh pemain yang berlatih selama 5 jam dan menggunakan jadwal latihan 3:
#define new player new <- data. frame (hours=c(5), program=as. factor (c(3))) #use the fitted model to predict the points for the new player predict(fit, newdata=new) 1 18.01923
Model tersebut memperkirakan pemain baru ini akan mencetak 18.01923 poin.
Kami dapat mengonfirmasi kebenarannya dengan memasukkan nilai pemain baru ke dalam persamaan regresi yang sesuai:
- poin = 6,3013 + 0,9744 (jam) + 2,2949 (program 2) + 6,8462 (program 3)
- poin = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
- poin = 18.019
Ini cocok dengan nilai yang kami hitung menggunakan fungsi prediksi() di R.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Cara melakukan regresi linier sederhana di R
Cara melakukan regresi linier berganda di R
Cara membuat plot sisa di R