Pengenalan singkat tentang regresi poisson untuk data jumlah
Regresi merupakan suatu metode statistik yang dapat digunakan untuk mengetahui hubungan antara satu atau lebih variabel prediktor dan suatu variabel respon .
Regresi Poisson adalah jenis regresi khusus yang variabel responsnya adalah “jumlah data”. Contoh berikut menggambarkan kasus dimana regresi Poisson dapat digunakan:
Contoh 1: Regresi Poisson dapat digunakan untuk mengetahui jumlah mahasiswa yang lulus dari suatu program perguruan tinggi tertentu berdasarkan IPK saat mengikuti program tersebut dan jenis kelaminnya. Dalam hal ini, “jumlah mahasiswa yang lulus” adalah variabel respon, “IPK saat masuk program” adalah variabel prediktor kontinu, dan “gender” adalah variabel prediktor kategoris.
Contoh 2: Regresi Poisson dapat digunakan untuk menguji jumlah kecelakaan lalu lintas pada suatu persimpangan tertentu berdasarkan kondisi cuaca (“cerah”, “berawan”, “hujan”) dan apakah terjadi peristiwa khusus atau tidak di kota tersebut (“Ya atau tidak”). Dalam hal ini, “jumlah kecelakaan di jalan raya” merupakan variabel respon, sedangkan “kondisi cuaca” dan “peristiwa khusus” keduanya merupakan variabel prediktor kategoris.
Contoh 3: Regresi Poisson dapat digunakan untuk memeriksa jumlah orang di depan Anda yang mengantri di sebuah toko berdasarkan waktu, hari dalam seminggu, dan apakah penjualan sedang berlangsung atau tidak (“Ya atau tidak) . “). Dalam hal ini, “jumlah orang yang mengantre di depan Anda” adalah variabel respons, “waktu dalam sehari” dan “hari dalam seminggu” merupakan variabel prediktor kontinu, dan “penjualan sedang berlangsung” adalah variabel prediktor kategoris.
Contoh 4: Regresi Poisson dapat digunakan untuk menguji jumlah orang yang menyelesaikan triatlon berdasarkan kondisi cuaca (“cerah”, “berawan”, “hujan”) dan tingkat kesulitan lintasan (“mudah”, “hujan”). sedang”, “sulit”). Dalam hal ini, “jumlah orang yang menyelesaikan” adalah variabel respons, sedangkan “kondisi cuaca” dan “kesulitan lintasan” keduanya merupakan variabel prediktor kategoris.
Melakukan regresi Poisson akan memungkinkan Anda melihat variabel prediktor mana (jika ada) yang memiliki pengaruh signifikan secara statistik terhadap variabel respons.
Untuk variabel prediktor kontinu, Anda akan dapat menafsirkan bagaimana kenaikan atau penurunan satu unit pada variabel tersebut dikaitkan dengan persentase perubahan angka variabel respons (misalnya, “setiap kenaikan satu unit, poin tambahan IPK dikaitkan dengan peningkatan sebesar 12,5% pada variabel respon).
Untuk variabel prediktor kategoris, Anda akan dapat menafsirkan perubahan persentase dalam hitungan satu kelompok (misalnya, jumlah orang yang menyelesaikan triatlon pada hari cerah) dibandingkan dengan kelompok lain (misalnya, jumlah orang yang menyelesaikan triatlon pada hari cerah) triathlon dalam cuaca hujan).
Asumsi regresi Poisson
Sebelum kita dapat melakukan regresi Poisson, kita harus memastikan bahwa asumsi berikut terpenuhi agar hasil regresi Poisson kita valid:
Asumsi 1: Variabel respon adalah data jumlah. Dalam regresi linier tradisional, variabel respon adalah data kontinu. Namun, untuk menggunakan regresi Poisson, variabel respons kita harus terdiri dari data jumlah yang mencakup bilangan bulat 0 atau lebih besar (misalnya 0, 1, 2, 14, 34, 49, 200, dst.). Variabel respons kami tidak boleh berisi nilai negatif.
Hipotesis 2: observasi bersifat independen. Setiap observasi dalam kumpulan data harus independen satu sama lain. Artinya observasi yang satu tidak boleh memberikan informasi mengenai observasi yang lain.
Hipotesis 3: Distribusi akun mengikuti distribusi Poisson. Akibatnya, jumlah yang diamati dan yang diharapkan harus sama. Cara sederhana untuk mengujinya adalah dengan memplot jumlah yang diharapkan dan yang diamati dan melihat apakah keduanya serupa.
Asumsi 4: Rata-rata dan varians model adalah sama. Hal ini dihasilkan dari asumsi bahwa distribusi hitungan mengikuti distribusi Poisson. Untuk distribusi Poisson, variansnya mempunyai nilai yang sama dengan mean. Jika asumsi ini terpenuhi, maka terjadi ekidispersion . Namun asumsi ini sering kali dilanggar karena penyebaran yang berlebihan merupakan permasalahan yang umum terjadi.
Contoh: Regresi Poisson di R
Kami sekarang akan meninjau contoh bagaimana melakukan regresi Poisson di R.
Latar belakang
Misalkan kita ingin mengetahui berapa banyak beasiswa yang diterima pemain bisbol sekolah menengah atas di suatu daerah berdasarkan divisi sekolahnya (“A”, “B” atau “C”) dan nilai sekolahnya. ujian masuk universitas (diukur dari 0 hingga 100). ).
Kode berikut membuat kumpulan data yang akan kita kerjakan, yang mencakup data 100 pemain bisbol:
#make this example reproducible set.seed(1) #create dataset data <- data.frame(offers = c(rep(0, 50), rep(1, 30), rep(2, 10), rep(3, 7), rep(4, 3)), division = sample(c("A", "B", "C"), 100, replace = TRUE), exam = c(runif(50, 60, 80), runif(30, 65, 95), runif(20, 75, 95)))
Memahami datanya
Sebelum benar-benar menyesuaikan model regresi Poisson ke kumpulan data ini, kita dapat lebih memahami data dengan memvisualisasikan beberapa baris pertama kumpulan data dan menggunakan pustaka dplyr untuk menjalankan statistik ringkasan:
#view dimensions of dataset dim(data) #[1] 100 3 #view first six lines of dataset head(data) # offers division exam #1 0 A 73.09448 #2 0 B 67.06395 #3 0 B 65.40520 #4 0 C 79.85368 #5 0 A 72.66987 #6 0 C 64.26416 #view summary of each variable in dataset summary(data) # offers division exam # Min. :0.00 To:27 Min. :60.26 # 1st Qu.:0.00 B:38 1st Qu.:69.86 # Median: 0.50 C:35 Median: 75.08 # Mean:0.83 Mean:76.43 # 3rd Qu.:1.00 3rd Qu.:82.87 # Max. :4.00 Max. :93.87 #view mean exam score by number of offers library(dplyr) data %>% group_by (offers) %>% summarize (mean_exam = mean(exam)) # A tibble: 5 x 2 # offers mean_exam # #1 0 70.0 #2 1 80.8 #3 2 86.8 #4 3 83.9 #5 4 87.9
Dari hasil di atas, kita dapat mengamati hal berikut:
- Ada 100 baris dan 3 kolom dalam kumpulan data
- Jumlah minimal penawaran yang diterima pemain adalah nol, maksimal empat, dan rata-rata 0,83.
- Pada dataset ini terdapat 27 pemain dari divisi “A”, 38 pemain dari divisi “B”, dan 35 pemain dari divisi “C”.
- Nilai ujian minimal 60,26, nilai maksimal 93,87, dan rata-rata 76,43.
- Secara umum, pemain yang menerima lebih banyak tawaran beasiswa cenderung memiliki nilai ujian yang lebih tinggi (misalnya, rata-rata nilai ujian untuk pemain yang tidak menerima tawaran adalah 70,0 dan rata-rata skor ulasan untuk pemain yang menerima 4 tawaran adalah 87,9).
Kita juga dapat membuat histogram untuk memvisualisasikan jumlah penawaran yang diterima pemain berdasarkan divisi:
#load ggplot2 package library(ggplot2) #create histogram ggplot(data, aes(offers, fill = division)) + geom_histogram(binwidth=.5, position="dodge")
Kita dapat melihat bahwa sebagian besar pemain tidak menerima atau hanya menerima satu tawaran. Ini adalah tipikal kumpulan data yang mengikuti distribusi Poisson : sebagian besar nilai responsnya adalah nol.
Menyesuaikan model regresi Poisson
Selanjutnya, kita dapat menyesuaikan model menggunakan fungsi glm() dan menentukan bahwa kita ingin menggunakan family=”fish” untuk model tersebut:
#fit the model model <- glm(offers ~ division + exam, family = "fish" , data = data) #view model output summary(model) #Call: #glm(formula = offers ~ division + exam, family = "fish", data = data) # #Deviance Residuals: # Min 1Q Median 3Q Max #-1.2562 -0.8467 -0.5657 0.3846 2.5033 # #Coefficients: #Estimate Std. Error z value Pr(>|z|) #(Intercept) -7.90602 1.13597 -6.960 3.41e-12 *** #divisionB 0.17566 0.27257 0.644 0.519 #divisionC -0.05251 0.27819 -0.189 0.850 #exam 0.09548 0.01322 7.221 5.15e-13 *** #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #(Dispersion parameter for fish family taken to be 1) # # Null deviance: 138,069 on 99 degrees of freedom #Residual deviance: 79,247 on 96 degrees of freedom #AIC: 204.12 # #Number of Fisher Scoring iterations: 5
Dari hasilnya kita dapat mengamati hal-hal berikut:
- Koefisien regresi Poisson, kesalahan estimasi standar, skor-z, dan nilai-p yang sesuai semuanya disediakan.
- Koefisien tinjauan adalah 0,09548 , yang menunjukkan bahwa jumlah log yang diharapkan untuk jumlah penawaran untuk peningkatan satu unit dalam tinjauan adalah 0,09548 . Cara yang lebih sederhana untuk menafsirkannya adalah dengan mengambil nilai eksponensial, yaitu e 0.09548 = 1.10 . Artinya, terdapat peningkatan sebesar 10% dalam jumlah penawaran yang diterima untuk setiap poin tambahan yang diperoleh pada ujian masuk.
- Koefisien untuk Divisi B adalah 0,1756 , yang menunjukkan bahwa jumlah penawaran yang diharapkan untuk seorang pemain di Divisi B adalah 0,1756 lebih tinggi dibandingkan pemain di Divisi A. Cara yang lebih sederhana untuk menafsirkan hal ini adalah dengan mengambil nilai eksponensial, yaitu e 0,1756 = 1.19 . Artinya pemain di divisi B menerima tawaran 19% lebih banyak dibandingkan pemain di divisi A. Perhatikan bahwa perbedaan ini tidak signifikan secara statistik (p = 0,519).
- Koefisien untuk Divisi C adalah -0,05251 , yang menunjukkan bahwa jumlah log yang diharapkan untuk jumlah penawaran untuk pemain di Divisi C adalah 0,05251 lebih rendah dibandingkan pemain di Divisi A. Cara yang lebih sederhana untuk menafsirkan hal ini adalah dengan mengambil nilai eksponensial , yaitu e 0,05251 = 0,94 . Artinya pemain di divisi C menerima tawaran 6% lebih sedikit dibandingkan pemain di divisi A. Perhatikan bahwa perbedaan ini tidak signifikan secara statistik (p = 850).
Informasi tentang penyimpangan model juga disediakan. Kami terutama tertarik pada penyimpangan sisa , yang mempunyai nilai 79.247 dari 96 derajat kebebasan. Dengan menggunakan angka-angka ini, kita dapat melakukan uji kesesuaian chi-kuadrat untuk melihat apakah model cocok dengan data. Kode berikut mengilustrasikan cara melakukan pengujian ini:
pchisq(79.24679, 96, lower.tail = FALSE) #[1] 0.8922676
Nilai p untuk pengujian ini adalah 0,89 , jauh di atas tingkat signifikansi 0,05. Kita dapat menyimpulkan bahwa data tersebut cukup sesuai dengan model.
Lihat hasil
Kita juga dapat membuat bagan yang menunjukkan perkiraan jumlah tawaran beasiswa yang diterima berdasarkan hasil divisi dan ujian masuk dengan menggunakan kode berikut:
#find predicted number of offers using the fitted Poisson regression model data$phat <- predict(model, type="response") #create plot that shows number of offers based on division and exam score ggplot(data, aes(x = exam, y = phat, color = division)) + geom_point(aes(y = offers), alpha = .7, position = position_jitter(h = .2)) + geom_line() + labs(x = "Entrance Exam Score", y = "Expected number of scholarship offers")
Bagan tersebut menunjukkan jumlah tertinggi tawaran beasiswa yang diharapkan untuk pemain yang mendapat nilai tinggi pada ujian masuk. Selain itu, kita dapat melihat bahwa pemain di Divisi B (garis hijau) seharusnya menerima lebih banyak tawaran secara umum dibandingkan pemain di Divisi A atau Divisi C.
Laporkan hasil
Terakhir, kami dapat melaporkan hasil regresi dengan cara yang merangkum temuan kami:
Regresi Poisson dijalankan untuk memprediksi jumlah tawaran beasiswa yang diterima pemain bisbol berdasarkan nilai ujian divisi dan masuk. Untuk setiap poin tambahan yang diperoleh pada ujian masuk, jumlah penawaran yang diterima meningkat sebesar 10% ( p < 0,0001) . Pembagian tersebut ternyata tidak signifikan secara statistik.
Sumber daya tambahan
Pengantar Regresi Linier Sederhana
Pengantar Regresi Linier Berganda
Pengantar Regresi Polinomial