Bagaimana glmnet menangani penyebaran berlebihan?

9

Saya punya pertanyaan tentang cara memodelkan teks pada jumlah data, khususnya bagaimana saya bisa menggunakan lassoteknik ini untuk mengurangi fitur.

Katakanlah saya punya N artikel online dan jumlah tayangan laman untuk setiap artikel. Saya telah mengekstrak 1 gram dan 2 gram untuk setiap artikel dan saya ingin menjalankan regresi lebih dari 1,2 gram. Karena fitur (1,2-gram) jauh lebih banyak daripada jumlah pengamatan, laso akan menjadi metode yang bagus untuk mengurangi jumlah fitur. Juga, saya telah menemukan glmnetsangat berguna untuk menjalankan analisis laso.

Namun, jumlah jumlah tampilan halaman terlalu banyak tersebar (varians> rata-rata), tetapi glmnettidak menawarkan quasipoisson(secara eksplisit) atau negative binomialtetapi poissonuntuk data jumlah. Solusi yang saya pikirkan adalah log transformmenghitung data (metode yang umum digunakan di kalangan ilmuwan sosial) dan membuat variabel respons secara kasar mengikuti distribusi normal. Karena itu, saya mungkin bisa memodelkan data dengan keluarga gaussian menggunakan glmnet.

Jadi pertanyaan saya adalah: apakah pantas untuk melakukannya? Atau, haruskah saya menggunakan poisson untuk menangani glmnetkasus ? Atau, apakah ada paket R lain yang menangani situasi ini?glmnetquasipoisson

Terima kasih banyak!

Sonya S.
sumber

Jawaban:

14

Jawaban singkat

Penyebaran berlebih tidak menjadi masalah ketika memperkirakan vektor koefisien regresi untuk mean bersyarat dalam model kuasi / poisson! Anda akan baik-baik saja jika Anda lupa tentang overdispersi di sini, gunakan glmnet dengan keluarga poisson dan hanya fokus pada apakah kesalahan prediksi validasi silang Anda rendah.

Kualifikasi berikut di bawah ini.


Poisson, Quasi-Poisson dan fungsi estimasi:

yμxβ

θVar(y)=θμθθθββ^ identik untuk model quasi dan poisson!

Biarkan saya ilustrasikan dengan sebuah contoh (perhatikan bahwa orang perlu menggulir untuk melihat seluruh kode dan output):

> library(MASS)
> data(quine) 
> modp <- glm(Days~Age+Sex+Eth+Lrn, data=quine, family="poisson")
> modqp <- glm(Days~Age+Sex+Eth+Lrn, data=quine, family="quasipoisson")
> summary(modp)

Call:
glm(formula = Days ~ Age + Sex + Eth + Lrn, family = "poisson", 
    data = quine)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-6.808  -3.065  -1.119   1.819   9.909  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  2.71538    0.06468  41.980  < 2e-16 ***
AgeF1       -0.33390    0.07009  -4.764 1.90e-06 ***
AgeF2        0.25783    0.06242   4.131 3.62e-05 ***
AgeF3        0.42769    0.06769   6.319 2.64e-10 ***
SexM         0.16160    0.04253   3.799 0.000145 ***
EthN        -0.53360    0.04188 -12.740  < 2e-16 ***
LrnSL        0.34894    0.05204   6.705 2.02e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 2073.5  on 145  degrees of freedom
Residual deviance: 1696.7  on 139  degrees of freedom
AIC: 2299.2

Number of Fisher Scoring iterations: 5

> summary(modqp)

Call:
glm(formula = Days ~ Age + Sex + Eth + Lrn, family = "quasipoisson", 
    data = quine)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-6.808  -3.065  -1.119   1.819   9.909  

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.7154     0.2347  11.569  < 2e-16 ***
AgeF1        -0.3339     0.2543  -1.313 0.191413    
AgeF2         0.2578     0.2265   1.138 0.256938    
AgeF3         0.4277     0.2456   1.741 0.083831 .  
SexM          0.1616     0.1543   1.047 0.296914    
EthN         -0.5336     0.1520  -3.511 0.000602 ***
LrnSL         0.3489     0.1888   1.848 0.066760 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasipoisson family taken to be 13.16691)

    Null deviance: 2073.5  on 145  degrees of freedom
Residual deviance: 1696.7  on 139  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 5

Seperti yang dapat Anda lihat meskipun kami memiliki penyebaran berlebihan 12,21 dalam kumpulan data ini (pada deviance(modp)/modp$df.residual) koefisien regresi (estimasi titik) tidak berubah sama sekali. Tetapi perhatikan bagaimana kesalahan standar berubah.

Pertanyaan tentang efek overdispersi dalam model poisson dihukum

θβ

g(μ)=xβ+f(β)

βθμ

glmnetf(β)=0

> library(glmnet)
> y <- quine[,5]
> x <- model.matrix(~Age+Sex+Eth+Lrn,quine)
> modl <- glmnet(y=y,x=x, lambda=c(0.05,0.02,0.01,0.005), family="poisson")
> coefficients(modl)
8 x 4 sparse Matrix of class "dgCMatrix"
                    s0         s1         s2         s3
(Intercept)  2.7320435  2.7221245  2.7188884  2.7172098
(Intercept)  .          .          .          .        
AgeF1       -0.3325689 -0.3335226 -0.3339580 -0.3340520
AgeF2        0.2496120  0.2544253  0.2559408  0.2567880
AgeF3        0.4079635  0.4197509  0.4236024  0.4255759
SexM         0.1530040  0.1581563  0.1598595  0.1607162
EthN        -0.5275619 -0.5311830 -0.5323936 -0.5329969
LrnSL        0.3336885  0.3428815  0.3459650  0.3474745

Jadi apa yang dilakukan OD untuk menghukum model regresi? Seperti yang Anda ketahui, masih ada beberapa perdebatan tentang cara yang tepat untuk menghitung kesalahan standar untuk model yang dihukum (lihat misalnya, di sini ) dan glmnettidak menghasilkan apa pun, mungkin karena alasan itu. Sangat mungkin bahwa OD akan mempengaruhi bagian inferensi dari model, seperti halnya dalam kasus yang tidak dihukum tetapi kecuali jika beberapa konsensus tentang kesimpulan dalam kasus ini tercapai, kita tidak akan tahu.

Sebagai tambahan, seseorang dapat meninggalkan semua kekacauan ini jika seseorang mau mengadopsi pandangan Bayesian di mana model yang dihukum hanya model standar dengan prior tertentu.

Momo
sumber
@Mono, terima kasih atas penjelasan Anda yang sangat mendetail! Inilah pemahaman saya, dan tolong perbaiki saya jika saya salah: poissondan quasipoissonregresi memperkirakan koefisien dengan cara yang sama dan apa yang berbeda adalah bagaimana mereka memperkirakan kesalahan standar dan dengan demikian signifikansi. Namun, untuk metode laso, cara menghitung kesalahan standar belum mencapai konsensus, dan karenanya penggunaan saat ini sebagian besar terletak pada pemilihan variabel daripada inferensi. Dengan demikian, tidak masalah jika kita menggunakan glmnetdengan poisson atau quasipoisson, tetapi apa yang dilakukan adalah kesalahan lintas-validasi harus diminimalkan.
Sonya S.
@Mono, catatan lain, saya berlari summary(modqp)sendiri dan melihatnya memiliki estimasi koefisien yang persis sama. Saya yakin jawaban Anda akan bermanfaat bagi lebih banyak orang dalam masalah ini karena saya belum menemukannya, jadi saya sarankan Anda menambahkan output ringkasan (modqp) untuk contoh ilustrasi yang lebih baik. Sekali lagi, terima kasih banyak!
Sonya S.
1
@Sonya Yours adalah ringkasan yang bagus. Kuncinya adalah ketika memperkirakan parameter untuk rata-rata bersyarat, fungsi estimasi (katakanlah fungsi skor) untuk poisson dan quasipoisson adalah sama! Oleh karena itu tidak masalah untuk parameter-parameter ini apakah ada hukuman atau tidak asalkan hukumannya sama. Saya membuatnya lebih jelas di atas. Terima kasih juga untuk pointer tentang ringkasan (modq), tetapi itu sudah ada, itu hanya akan "kotak" pada layar normal, jadi kita harus gulir ke bawah.
Momo
Saya masih bertanya-tanya apakah mungkin bahwa lebih sedikit variabel menyusut di Poisson daripada jika ada spesifikasi kuasi-Poisson, yang lebih benar, dan kemungkinan akan mengarah pada akurasi prediksi yang lebih baik daripada model Poisson karena model pengambilan sampelnya lebih tepat.
Brash Equilibrium
Pada catatan itu, bisa juga bahwa lebih banyak variabel menyusut di Poisson daripada yang harus menyusut dalam kasus UNDER-dispersi (seperti ketika Anda menggunakan model Poisson yang kuat untuk memperkirakan rasio risiko relatif untuk data 0/1).
Brash Equilibrium