“Engel modeli” gerçekten tek bir model midir? Ya da sadece iki ayrı, sıralı model?


25

yNormal bir tahminciden sayım verilerini öngören bir engel modeli göz önünde bulundurun x:

set.seed(1839)
# simulate poisson with many zeros
x <- rnorm(100)
e <- rnorm(100)
y <- rpois(100, exp(-1.5 + x + e))

# how many zeroes?
table(y == 0)

FALSE  TRUE 
   31    69 

Bu durumda, 69 sıfır ve 31 pozitif sayım ile sayım verilerim var. Bu, veri üretme prosedürünün tanımıyla bir Poisson işlemi olduğu için boşa harcıyorum, çünkü sorumu engel modelleri hakkında.

Diyelim ki bu aşırı sıfırları bir engel modeli ile ele almak istiyorum. Onlar hakkında okuduğumda, engel modelleri aslında gerçek modeller değil gibi görünüyordu - sırayla sadece iki farklı analiz yapıyorlar. İlk olarak, değerin sıfıra karşı pozitif olup olmadığını öngören lojistik bir regresyon. İkincisi, sadece sıfır olmayan durumları içeren sıfır kesikli bir Poisson regresyonu . Bu ikinci adım benim için yanlış hissettirdi, çünkü (a) verinin çoğu sıfır olduğundan ve (b) temelde kendi başına bir "model" olmadığı için (b) güç sorunlarına yol açabilecek olan tamamen iyi verileri atmaktır. , ancak sıralı olarak iki farklı modeli çalıştırıyor.

Bu yüzden sadece lojistik ve sıfır kesikli Poisson regresyonunu ayrı ayrı çalıştırmak yerine "engel bir model" denedim. Bana aynı cevaplar verdiler (kısaltmanın iyiliği için çıktıyı kısaltıyorum):

> # hurdle output
> summary(pscl::hurdle(y ~ x))

Count model coefficients (truncated poisson with log link):
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -0.5182     0.3597  -1.441   0.1497  
x             0.7180     0.2834   2.533   0.0113 *

Zero hurdle model coefficients (binomial with logit link):
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -0.7772     0.2400  -3.238 0.001204 ** 
x             1.1173     0.2945   3.794 0.000148 ***

> # separate models output
> summary(VGAM::vglm(y[y > 0] ~ x[y > 0], family = pospoisson()))

Coefficients: 
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -0.5182     0.3597  -1.441   0.1497  
x[y > 0]      0.7180     0.2834   2.533   0.0113 *

> summary(glm(I(y == 0) ~ x, family = binomial))

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   0.7772     0.2400   3.238 0.001204 ** 
x            -1.1173     0.2945  -3.794 0.000148 ***
---

Bu bana çok açık geliyor çünkü modelin birçok farklı matematiksel gösterimi, pozitif sayım durumlarının tahmininde bir gözlemin sıfır olma olasılığını da içeriyor, ancak yukarıda koştuğum modeller birbirini tamamen görmezden geliyor. Örneğin, bu, Kategori ve Sürekli Sınırlı Bağımlı Değişkenler için Smithson & Merkle'ın Genelleştirilmiş Doğrusal Modellerinin Bölüm 5, sayfa 128'den alınmıştır :

... İkinci olarak, bu olasılık herhangi bir değeri (sıfır ve pozitif tamsayı) kabul biri eşit olmalıdır. Denklem (5.33) 'te bu garanti edilmez. Bu konuyla başa çıkmak için Poisson olasılığını Bernoulli başarı olasılığı ile çarpıyoruz .      Bu sorunlar yukarıdaki engelleme modelini olarak ifade etmemizi gerektirir. burada , ,yπ

(5.34)P(Y=y|x,z,β,γ)={1π^for y=0π^×exp(λ^)λ^y/y!1exp(λ^)for y=1,2,
λ^=exp(xβ)π^=logit1(zγ)xPoisson modelinin eş değişkenleri, , lojistik regresyon modelinin eş değişkenleridir ve ve ilgili regresyon katsayılarıdır ... . zβ^γ^

İki modeli birbirinden tamamen ayırarak - bu, engelli modellerin yaptığı gibi gözüküyor - nın pozitif sayım durumlarının öngörülmesine nasıl dahil edildiğini anlamıyorum . Ancak , sadece iki farklı modeli çalıştırarak işlevi nasıl çoğaltabildiğime bağlı olarak, kesikli Poisson'da nasıl bir rol oynadığını göremiyorum hiç de gerileme.π^hurdlelogit1(zγ^)

Engel modellerini doğru anlıyor muyum? İkisinin sadece iki sıralı modeli yönetiyor gibi görünüyorlar: Birincisi, bir lojistik; İkincisi, bir Poisson, olduğu durumları tamamen görmezden geliyor . Birisi ile olan kafamdaki karışıklığı giderirse memnun olurum .y=0π^


Eğer engelli modellerin ne olduğu doğru değilse, daha genel olarak bir "engelli" modelin tanımı nedir? İki farklı senaryo düşünün:

  • Rekabet gücü puanlarına bakarak seçim yarışlarının rekabet edebilirliğinin modellenmesini hayal edin (1 - (kazananların oy oranı - koşucuların oy oranı). Bu [0, 1), çünkü bağ yok (ör. 1). Bir engelleme modeli burada mantıklı geliyor, çünkü seçimden biri a (a) seçilemedi. ve (b) değilse, rekabetçiliği ne öngördü? Böylece önce 0'a (0, 1) analiz etmek için lojistik bir regresyon yaparız. Sonra (0, 1) vakalarını analiz etmek için beta regresyon yapıyoruz.

  • Tipik bir psikolojik çalışma düşünün. Yanıtlar [7, 7], geleneksel bir Likert ölçeği gibi, 7'de büyük bir tavan etkisi ile [1, 7] şeklindedir. Biri 7'ye göre [1, 7) 'nin lojistik olarak gerilemesi ve ardından tüm durumlarda bir Tobit gerilemesi olabilir. gözlemlenen cevaplar <7'dir.

İki sıralı modelle tahmin etsem bile , bu durumların her ikisine de "engel" modelleri denemek güvenli olur mu (ilk önce lojistik ve sonra beta, ikinci ve lojistik, sonra da Tobit)?


5
Engelli modellerin iki ayrı (ikili + sıfır-kesilmiş) modelin çalıştırılmasına eşdeğer olduğuna inanıyorum . Çalışmasının teknik nedeni, ilk modelin tahmin etmek için yalnızca sıfır / sıfır olmayan kullanmasıdır ; ikinci model , tahmin etmek için sıfır olmayan bir yanıtta şartlar . πλ
Ben Bolker,

Öyleyse , olan her için olur ? π^1iy>0
Mark White,

3
Hayır. Koşullu model teriminden çıkar, yani ...π^P(Y=y|Y>0)=exp(λ^)etc.
Ben Bolker

Ah teşekkürler. Bu yüzden, Smithson ve Merkle'den gelen denklemin uygulandığından farklı bir model tanımladığını pscl::hurdledüşünüyorum, ancak burada Denklem 5'te de aynı görünüyor: cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf Veya belki ben hala benim için tıklayın yapacak basit bir şey eksik?
Mark White,

4
Aynı model. Mike ve Ed, varsayılan olarak en basit olan duruma (logit + Poisson) odaklanır hurdle(). Eşleştirilmiş / skeçimizde, daha genel yapı taşlarına vurgu yapmaya çalışıyoruz.
Achim Zeileis

Yanıtlar:


35

Günlük olasılığını ayırma

Engelli modellerin çoğunun ayrı ayrı tahmin edilebileceği doğrudur ( derhal sırayla söyleyebilirim ). Bunun nedeni, log olasılığının, ayrı ayrı maksimize edilebilecek iki parçaya ayrıştırılabilmesidir. Bunun nedeni, , (5.34) 'te log olasılığına ek bir terim haline gelen bir ölçeklendirme faktörü olmasıdır.π^

Smithson & Merkle yazısında: burada (eğilmemiş) Poisson dağılımının ve , sıfırın kesilmesindeki faktördür.

(β,γ;y,x,z)=1(γ;y,z)+2(β;y,x)=i:yi=0log{1logit1(ziγ)}+i:yi>0log{logit1(ziγ)}+i:yi>0[log{f(yi;exp(xiβ)}log{1f(0;exp(xiβ)}]
f(y;λ)=exp(λ)λy/y!1f(0;λ)=1exp(λ)

Ardından, (ikili logit modeli) ve (sıfır kesikli Poisson modeli) ayrı ayrı ve bu durumda aynı parametre tahminlerine, kovaryanslara vs. ortaklaşa maksimize edildikleri yer.1(γ)2(β)

Aynı mantık, sıfır engel olasılığı bir logit modeli ile parametrelendirilmezse, ancak diğer herhangi bir ikili regresyon modeli, örneğin, 1'de sağ-sansürlü bir sayım dağılımı da belirtilirse çalışır. Ve tabii ki, de olabilir. başka bir sayı dağılımı, örneğin negatif binom. Tüm ayrılık, yalnızca sıfır engel ile kesilen sayım parçası arasında paylaşılan parametreler varsa bozulur.πf()

Belirgin bir örnek , modelin iki bileşeninde ayrı ancak ortak parametreleriyle negatif binom dağılımları kullanılması durumunda olacaktır . (Bu mevcuttur içinde R Forge, halefi paketin uygulama).μθhurdle(..., separate = FALSE, dist = "negbin", zero.dist = "negbin")countregpscl

Somut sorular

(a) Mükemmel verileri tamamen atmak: Sizin durumunuzda evet, genel olarak hayır. Çok fazla sıfır olmadan tek bir Poisson modelinden veri aldınız ( birçok sıfır da olsa ). Dolayısıyla, sıfır ve sıfır olmayanlar için ayrı modeller tahmin etmek gerekli değildir. Ancak, eğer iki parça gerçekten farklı parametrelerle çalıştırılıyorsa, bunun hesaba katılması gerekir.

(b) Verilerin çoğu sıfır olduğu için güç sorunlarına yol açabilir: Zorunlu değil. Burada, "başarı" olan gözlemlerin üçte birine sahipsiniz (engel geçişleri). Bu ikili regresyon modelinde çok aşırı sayılmaz. (Elbette, ayrı modelleri tahmin etmek gereksizse, güç kazanacaksınız.)

(c) Temel olarak kendi içinde bir 'model' değil, sıralı olarak iki farklı modeli çalıştırıyor: Bu daha felsefi ve "bir" cevap vermeye çalışmıyorum. Bunun yerine pragmatik bir bakış açısına işaret edeceğim. Model tahmini için , modellerin ayrı olduğunu vurgulamak uygun olabilir çünkü - gösterdiğiniz gibi - tahmin için özel bir işleve ihtiyacınız olmayabilir. Model uygulaması için , örneğin, tahminler veya artıklar vb. İçin, bunu tek bir model olarak görmek daha uygun olabilir.

(d) Her iki durumda da “engel” modellerini çağırmak güvenli olur mu: İlke olarak evet. Ancak, jargon topluluklar arasında değişebilir. Örneğin, sıfır engelli beta regresyon daha sık (ve çok kafa karıştırıcı) sıfır şişirilmiş beta regresyon olarak adlandırılır. Şahsen, ikincisini çok yanıltıcı buluyorum çünkü beta dağılımının şişirilebilecek sıfırları yok - ama yine de literatürdeki standart terim. Ayrıca, tobit model sansürlü bir modeldir ve dolayısıyla bir engel modeli değildir. Yine de, probit (veya logit) model artı kesilmiş normal modelle genişletilebilir . Ekonometri literatüründe bu, Cragg iki bölümlü model olarak bilinir.

Yazılım yorumları

countregAr-Forge üzerindeki paket https://R-Forge.R-project.org/R/?group_id=522 halefi uygulamasıdır hurdle()/ ' zeroinfl()dan pscl. CRAN'da olmamasının temel nedeni (hala), predict()arayüzü tamamen geriye dönük olarak uyumlu olmayacak şekilde revize etmek istiyor olmamızdır . Aksi halde uygulama oldukça kararlıdır. Buna kıyasla, psclbirkaç güzel özellik var, örneğin:

  • Modelin sıfır kısaltılmış kısmıyla zerotrunc()aynı kodu kullanan bir işlev hurdle(). Böylece, bir alternatif sunar VGAM.

  • Dahası, d / p / q / r olarak sıfır kesik, engel ve sıfır şişirilmiş sayım dağılımları için işlev görür. Bu, bunlara ayrı modellerden ziyade "tek" model olarak bakmayı kolaylaştırır.

  • Uyumun iyiliğini değerlendirmek için, rootogramlar ve randomize kuantil kalıntı grafikleri gibi grafiksel gösterimler mevcuttur. (Bkz. Kleiber ve Zeileis, 2016, Amerikan İstatisti , 70 (3), 296-303. Doi: 10.1080 / 00031305.2016.1173590 .)

Benzetilmiş veri

Simüle edilmiş verileriniz tek bir Poisson işleminden geliyor. eBilinen bir regresör olarak kabul edilirse , standart Poisson GLM olacaktır. Eğer ebilinmeyen gürültü bileşeni etkisi olarak, daha sonra negatif bir binom modeli veya vb Ancak devamlı karışım veya rastgele etki başka türlü ile elde edilebilecek aşırı yayılım biraz neden bazı gözlemlenmeyen heterojenite mevcuttur eburada oldukça küçük Bunların hiçbiri büyük bir fark yaratmıyor. Aşağıda, ebir regresör olarak işlem görüyorum (yani, gerçek katsayısı 1 ile), ancak bunu atlayıp negatif binom veya Poisson modellerini de kullanabilirsiniz. Niteliksel olarak, bunların hepsi benzer fikirlere yol açmaktadır.

## Poisson GLM
p <- glm(y ~ x + e, family = poisson)
## Hurdle Poisson (zero-truncated Poisson + right-censored Poisson)
library("countreg")
hp <- hurdle(y ~ x + e, dist = "poisson", zero.dist = "poisson")
## all coefficients very similar and close to true -1.5, 1, 1
cbind(coef(p), coef(hp, model = "zero"), coef(hp, model = "count"))
##                   [,1]       [,2]      [,3]
## (Intercept) -1.3371364 -1.2691271 -1.741320
## x            0.9118365  0.9791725  1.020992
## e            0.9598940  1.0192031  1.100175

Bu, her üç modelin de tutarlı olarak gerçek parametreleri tahmin edebileceğini göstermektedir. İlgili standart hatalara bakmak, bu senaryoda (bir engel bölümüne ihtiyaç duymadan) Poisson GLM'nin daha verimli olduğunu göstermektedir:

serr <- function(object, ...) sqrt(diag(vcov(object, ...)))
cbind(serr(p), serr(hp, model = "zero"), serr(hp, model = "count"))
##                  [,1]      [,2]      [,3]
## (Intercept) 0.2226027 0.2487211 0.5702826
## x           0.1594961 0.2340700 0.2853921
## e           0.1640422 0.2698122 0.2852902

Standart bilgi kriterleri, gerçek Poisson GLM'yi en iyi model olarak seçer:

AIC(p, hp)
##    df      AIC
## p   3 141.0473
## hp  6 145.9287

Ve bir Wald testi engel modelinin iki bileşeninin önemli ölçüde farklı olmadığını doğru bir şekilde tespit eder:

hurdletest(hp)
## Wald test for hurdle models
## 
## Restrictions:
## count_((Intercept) - zero_(Intercept) = 0
## count_x - zero_x = 0
## count_e - zero_e = 0
## 
## Model 1: restricted model
## Model 2: y ~ x + e
## 
##   Res.Df Df  Chisq Pr(>Chisq)
## 1     97                     
## 2     94  3 1.0562     0.7877

Son olarak her ikisi de rootogram(p)ve qqrplot(p)Poisson GLM'nin verilere çok iyi uyduğunu ve daha fazla yanlışlık ile ilgili fazla sıfır veya ipucu olmadığını göstermektedir.

rootogram + qqrplot


Aşırı sıfır ile birçok sıfır arasındaki fark nedir?
tatami

1
Bir örnek: beklentisine sahip bir Poisson dağılımının yaklaşık olasılığı vardır . Bu kesinlikle birçok sıfırdır . Bununla birlikte, bir Poisson (0.5) şeklinde fakat daha sıfır olan bir dağılıma sahipseniz, o zaman aşırı sıfırlardır . λ=0.5f(0;λ=0.5)60%
Achim Zeileis

4

Sıfır şişirilmiş ve engelli modeller arasındaki farkın anlaşılmasının zor olduğunu kabul ediyorum. Her ikisi de bir çeşit karışım modeli. Söyleyebileceğim kadarıyla, önemli fark, sıfır şişirilmiş bir modelde, sıfıra bir kütleyi sıfıra bir dağıtım \ textit {ile de sıfır olarak alabilir}. Bir engelleme modeli için, sıfırda bir kütleyi yalnızca 0'dan büyük değerleri alan bir dağılımla karıştırırsınız. Böylece, sıfır şişirilmiş modelde 'yapısal sıfırlar' (sıfırdaki kütleye karşılık gelir) ve 'örnekleme sıfırları' arasında ayrım yapabilirsiniz. 'Karıştırdığınız modelden 0'a ulaşma şansına karşılık gelir. Tabii ki bu tanımlama doğru dağıtım seçimine büyük ölçüde bağlıdır! Ancak, eğer sıfır şişirilmiş bir Poisson varsa, örneğin Poisson bileşeninden gelen sıfırları (örnekleme sıfırları) ve sıfırdan kütleden gelen sıfırları (yapısal sıfırlar) ayırt edebilirsiniz. Eğer sıfır şişirilmiş bir modeliniz varsa ve karıştırdığınız dağılım sıfırda kütleye sahip değilse, engel modeli olarak yorumlanabilir.


İki tür sıfır arasındaki ayrım, doğrudan model spesifikasyonundan çıkan bir zorunluluk olsa da, bir engel modeli için aynı tür miktarları hesaplamak mümkündür. Yapısal sıfırlar denilen parametreler kesilmiş bir numuneye dayanmasına rağmen , kesilmemiş sayı dağılımından da hesaplanabilir (Poisson) . Yapısal sıfırlar olasılığı, sıfır olasılığı (genel olarak sıfır engel bölümünden) ve örnekleme sıfırları arasındaki farktır.
Achim Zeileis,

1

Felsefi yön ile ilgili olarak, "ne zaman tek bir model düşünmeliyiz ve iki ayrı model ne zaman düşünmeliyiz" , model parametrelerinin örnek tahminlerinin ilişkilendirildiğini not etmek ilginç olabilir.

Bir simülasyon ile aşağıdaki arsada çoğunlukla eğim ve sayım bölümünün kesişimi arasındaki ilişkiyi görürsünüz. Ancak sayım kısmı ile engel kısmı arasında da küçük bir ilişki var. Parametreleri değiştirirseniz, örneğin Poisson dağılımındaki lambdayı küçültün veya numune boyutunu küçültün, o zaman korelasyon daha güçlü hale gelir.

Bu yüzden bunu iki ayrı model olarak düşünmemelisiniz derdim . Veya en azından pratikte birbirinden bağımsız iki tahminde bulunabilseniz bile bir ilişki vardır.

korelasyonlar

set.seed(1839)

Nrep <- 3000
Ns <- 100
pars <- matrix(rep(0,3*Nrep),Nrep)
colnames(pars) <- c("count_intercept","count_slope","hurdle_intercept")

# simulation-loop
# Note that a truncated poisson is used to generate data
# this will make the parameters from the hurdle function easier to interpret and compare
for (i in 1:Nrep) {
  x <- rnorm(Ns,0,1)
  e <- rbinom(Ns,1,exp(-0.7))
  y <- e*truncdist::rtrunc(n=Ns,spec='pois',a=0,b=Inf,lambda=exp(-1.5 + x))
  mod <- pscl::hurdle(y ~ 1+x|1, link="log")
  pars[i,1]<-mod$coefficients$count[1]
  pars[i,2]<-mod$coefficients$count[2]
  pars[i,3]<-mod$coefficients$zero[1]
}  

# viewing data
plotpars <- pars[pars[,1]>-7,] #clipping
pairs(plotpars,cex=0.7,pch=21,
      col= rgb(0,0,0,0.03),
      bg = rgb(0,0,0,0.03))

# demonstrating linear relation / significant correlation
summary(lm(pars[,1] ~ pars[,3]))

İki kısım arasında bir korelasyon olduğu pek bir anlam ifade etmiyor. Ancak, Poisson modelindeki parametreler için yapılan tahminlerin farklı seviyelerinden ve bunların sıfır sayılarıyla ilgili olmalarından kaynaklanıyor olabilir.


Bunu çoğaltamıyorum. Benim için: truncdist::rtrunc(n = 100, spec = 'pois', a = 0, b = Inf, lambda = exp(-1.5 + rnorm(100)))bir hata (kullanarak sürüm 1.0.2) verir: Error in if (G.a == G.b) { : the condition has length > 1. Her durumda, R-Forge üzerindeki rhpois()paketten kullanmak , countregverilen bir engel geçme olasılığı pive altında yatan (engelsiz) Poisson beklentisiyle bir engelli Poisson modelinden taklit etmek için daha kolaydır lambda. Bunları kullanırsam, sıfır engel ile kesilen sayım parçaları arasında sadece çok küçük deneysel bağıntılar elde ederim.
Achim Zeileis

Veri üretme süreci: dgp <- function(n = 100, b = c(-0.5, 2), g = c(0.5, -2)) { x <- runif(n, -1, 1) ; y <- rhpois(n, lambda = exp(b[1] + b[2] * x), pi = plogis(g[1] + g[2] * x)); data.frame(x = x, y = y) }Simülasyon: set.seed(1); cf <- t(replicate(3000, coef(hurdle(y ~ x, data = dgp())))). Değerlendirme: pairs(cf)ve cor(cf). colMeans(cf)Ayrıca kontrol , tahminin makul derecede iyi çalıştığını gösterir.
Achim Zeileis

@AchimZeileis şu anda senin hatan içine bakmak ve yorum yapmak için hiçbir imkanım yok. Ama yine de, korelasyon gösterdiğim görüntüde çok küçük değil. Mesele daha felsefi / teorikti. Uygulamada, modeli iki ayrı, entegre olmayan adım olarak gördüğünüzde büyük olasılıkla çok az probleminiz olacaktır.
Sextus Empiricus,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.