Apakah ada tes untuk menentukan apakah penyebaran berlebihan GLM signifikan?

44

Saya membuat Poisson GLM di R. Untuk memeriksa penyebaran berlebih, saya melihat rasio penyimpangan residual terhadap derajat kebebasan yang disediakan oleh summary(model.name).

Apakah ada nilai cutoff atau tes untuk rasio ini dianggap "signifikan?" Saya tahu bahwa jika itu> 1 maka data tersebut disebarkan secara berlebihan, tetapi jika saya memiliki rasio yang relatif dekat dengan 1 [misalnya, satu rasio 1,7 (residual deviance = 25,48, df = 15) dan lainnya 1,3 (rd = 324, df = 253)], apakah saya masih harus beralih ke quasipoisson / binomial negatif? Saya menemukan di sini tes ini untuk signifikansi: 1-pchisq (penyimpangan residual, df), tetapi saya hanya pernah melihatnya sekali, yang membuat saya gugup. Saya juga membaca (saya tidak dapat menemukan sumbernya) bahwa rasio <1,5 pada umumnya aman. Pendapat?

kto
sumber

Jawaban:

45

Dalam paket R AER Anda akan menemukan fungsinya dispersiontest, yang mengimplementasikan Test for Overdispersion oleh Cameron & Trivedi (1990).

Ini mengikuti ide sederhana: Dalam model Poisson, rerata adalah dan variansnya adalah juga. Mereka sama. Tes ini hanya menguji asumsi ini sebagai hipotesis nol terhadap alternatif di mana mana konstanta berarti dispersi rendah dan berarti overdispersi. Fungsi Adalah beberapa fungsi monoton (sering linier atau kuadrat; yang pertama adalah default). Tes yang dihasilkan setara dengan pengujian vs dan statistik uji yang digunakan adalah statistik yang asymptotically normal di bawah nol.V a r ( Y ) = μ V a r ( Y ) = μ + c f ( μ ) c < 0 c > 0 f ( . ) H 0 : c = 0 H 1 : c 0E(Y)=μVar(Y)=μVar(Y)=μ+cf(μ)c<0c>0f(.)H0:c=0H1:c0t

Contoh:

R> library(AER)
R> data(RecreationDemand)
R> rd <- glm(trips ~ ., data = RecreationDemand, family = poisson)
R> dispersiontest(rd,trafo=1)

Overdispersion test

data:  rd
z = 2.4116, p-value = 0.007941
alternative hypothesis: true dispersion is greater than 0
sample estimates:
dispersion 
    5.5658 

Di sini kita melihat dengan jelas bahwa ada bukti overdispersi (c diperkirakan sekitar 5,57) yang berbicara cukup kuat terhadap asumsi equidispersi (yaitu c = 0).

Perhatikan bahwa jika Anda tidak menggunakan trafo=1, itu akan benar-benar melakukan tes vs dengan yang tentu saja memiliki hasil yang sama dengan tes lainnya terlepas dari statistik uji yang digeser oleh satu. Alasan untuk ini, bagaimanapun, adalah bahwa yang terakhir sesuai dengan parametrization umum dalam model kuasi-Poisson. H0:c=1H1:c1c=c+1

Momo
sumber
1
Saya harus menggunakan glm(trips ~ 1, data = data, family = poisson)( 1bukan .untuk data saya), tapi bagus, terima kasih
Phil
12

Alternatifnya adalah odTestdari psclperpustakaan yang membandingkan rasio log-likelihood dari regresi Binomial Negatif dengan pembatasan regresi Poisson . Hasil berikut diperoleh:μ=Var

>library(pscl)

>odTest(NegBinModel) 

Likelihood ratio test of H0: Poisson, as restricted NB model:
n.b., the distribution of the test-statistic under H0 is non-standard
e.g., see help(odTest) for details/references

Critical value of test statistic at the alpha= 0.05 level: 2.7055 
Chi-Square Test Statistic =  52863.4998 p-value = < 2.2e-16

Di sini nol pembatasan Poisson ditolak demi regresi binomial negatif saya NegBinModel. Mengapa? Karena statistik uji 52863.4998melebihi 2.7055dengan a p-value of < 2.2e-16.

Keuntungannya AER dispersiontestadalah objek yang dikembalikan dari kelas "htest" lebih mudah untuk memformat (misalnya mengkonversi ke LaTeX) daripada 'odTest` tanpa kelas.

Luke Singham
sumber
5

Alternatif lain adalah menggunakan P__dispfungsi dari msmepaket. The P__dispfungsi dapat digunakan untuk menghitung Pearson pada statistik dan Pearson dispersi setelah pas model dengan atau .χ2glmglm.nb

Mischief_Monkey
sumber
2

Namun pilihan lain adalah menggunakan uji rasio kemungkinan untuk menunjukkan bahwa kuasipoisson GLM dengan overdispersi secara signifikan lebih baik daripada GLM poisson biasa tanpa overdispersi:

fit = glm(count ~ treatment,family="poisson",data=data) 
fit.overdisp = glm(count ~ treatment,family="quasipoisson",data=data) 
summary(fit.overdisp)$dispersion # dispersion coefficient
pchisq(summary(fit.overdisp)$dispersion * fit$df.residual, fit$df.residual, lower = F) # significance for overdispersion
Tom Wenseleers
sumber