Чи є "модель перешкод" справді однією моделлю? Або просто дві окремі послідовні моделі?


25

Розглянемо модель перешкод, яка передбачає підрахунок даних yвід звичайного прогноктора 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 

У цьому випадку я маю дані підрахунку з 69 нулями та 31 позитивними підрахунками. На даний момент не пам'ятайте, що це, за визначенням процедури генерації даних, процес Пуассона, тому що моє питання стосується моделей перешкод.

Скажімо, я хочу обробляти ці зайві нулі моделлю перешкод. З мого читання про них здавалося, що моделі перешкод самі по собі не є фактичними моделями - вони просто роблять два різні аналізи послідовно. По-перше, логістична регресія, яка передбачає, чи є значення позитивним проти нуля. По-друге, нульова усічена пуассонова регресія, включаючи лише ненульові випадки. Цей другий крок став для мене неправильним, оскільки це (а) викидання ідеально хороших даних, що (б) може призвести до проблем з владою, оскільки значна частина даних є нулями, і (в) в основному не є "моделлю" сама по собі. , але просто послідовно працює дві різні моделі.

Тож я спробував "модель перешкод" проти просто запуску логістичної та нульової регресії Пуассона окремо. Вони дали мені однакові відповіді (я скорочую висновок, заради стислості):

> # 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 ***
---

Мені це здається невдалим, оскільки багато різних математичних уявлень моделі включають ймовірність того, що спостереження не є нульовим при оцінці випадків позитивного підрахунку, але моделі, які я перебіг вище, повністю ігнорують одна одну. Наприклад, це з розділу 5, сторінка 128 Узагальнених лінійних моделей Smithson & Merkle для категоричних та безперервних обмежених залежних змінних :

... По-друге, ймовірність того, що приймає будь-яке значення (нуль і натуральні числа), повинна дорівнювати одиниці. Це не гарантується в рівнянні (5.33). Щоб вирішити це питання, ми помножимо ймовірність Пуассона на ймовірність успіху Бернуллі .      Ці проблеми вимагають, щоб ми висловили вищезгадану модель перешкод як де , ,πyπ

...λ=ехр(хβ)

(5.34)P(Y=y|x,z,β,γ)={1π^for y=0π^×exp(λ^)λ^y/y!1exp(λ^)for y=1,2,
λ^=exp(xβ)хг & beta ; & gammaπ^=logit1(zγ)xє коваріатами для моделі Пуассона, - коваріати для логістичної регресійної моделі, а і - відповідні коефіцієнти регресії ... . zβ^γ^

Роблячи ці дві моделі повністю відокремленими одна від одної - що, здається, є тим, що роблять моделі перешкод - я не бачу, як включений у передбачення випадків позитивного підрахунку. Але виходячи з того, як мені вдалося повторити функцію, просто запустивши дві різні моделі, я не бачу, як грає роль у врізаному Пуассоні регресія взагалі. логит-1(г γ )π^hurdlelogit1(zγ^)

Чи правильно я розумію моделі перешкод? Здається, дві просто запущені дві послідовні моделі: По-перше, логістична; По-друге, Пуассон, повністю ігноруючи випадки, коли . Буду вдячний, якби хтось міг усунути мою плутанину з бізнесом .y=0π^


Якщо я маю рацію, що це саме такі моделі перешкод, яке визначення моделі «перешкоди», взагалі? Уявіть два різні сценарії:

  • Уявіть моделювання конкурентоспроможності виборчих перегонів, дивлячись на показники конкурентоспроможності (1 - (частка переможця голосів - частка голосів другого учасника)). Це [0, 1), оскільки немає зв’язків (наприклад, 1). Тут є сенс моделі перешкод, оскільки є один процес (а): чи були вибори безперервними? і (б) якщо цього не було, що передбачило конкурентоспроможність? Тому спочатку робимо логістичну регресію для аналізу 0 проти (0, 1). Потім робимо бета-регресію для аналізу (0, 1) випадків.

  • Уявіть типове психологічне дослідження. Відповіді [1, 7], як у традиційній шкалі Лікерта, мають величезний ефект стелі на 7. Можна було б зробити перешкоду моделлю, що є логістичною регресією [1, 7) проти 7, а потім регресією Тобіта для всіх випадків, коли спостережувані відповіді <7.

Чи було б безпечно називати обидві ці ситуації "перешкодами" , навіть якщо я оціню їх двома послідовними моделями (логістичною, а потім бета-версією, в першому випадку логістичною, а потім другою Tobit)?


5
Я вважаю, що моделі перешкод еквівалентні запуску двох окремих (двійкові + нульові усічені) моделі. Технічна причина, по якій він працює, полягає в тому, що перша модель використовує лише нуль / не-нуль для оцінки ; друга модель умовляє ненульову відповідь для оцінки . πλ
Бен Болкер

Тож тоді буде для кожного , якого ? π^1iy>0
Марк Білий

3
Ні. Умовна модель виключає термін , тобто ...π^P(Y=y|Y>0)=exp(λ^)etc.
Бен Болкер

Ах, дякую. Отже, я вважаю, що рівняння від Смітсона та Меркле описує іншу модель, ніж реалізована в pscl::hurdle, але це виглядає так само в рівнянні 5 тут: cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf Або, можливо, я я все ще пропускаю щось базове, що змусило б натиснути на мене?
Марк Білий

4
Це та сама модель. Майк і Ед зосереджуються на найпростішому випадку (logit + Пуассон), за замовчуванням у якому hurdle(). У нашій парі / віньєтці ми намагаємось наголосити на загальних будівельних блоках.
Ахім Зелейс

Відповіді:


35

Відокремлення ймовірності журналу

Правильно, що більшість моделей перешкод можна оцінити окремо (я б сказав, а не послідовно ). Причина полягає в тому, що ймовірність журналу може бути розкладена на дві частини, які можна максимізувати окремо. Це тому, що є просто масштабуючим фактором у (5.34), який стає додатковою ознакою у ймовірності журналу.π^

У позначенні Смітсона і Меркле: де - щільність (невпорядкованого) розподілу Пуассона і - коефіцієнт від нульового усікання.

(β,γ;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(λ)

Тоді стає очевидним, що (двійкова модель logit) та (нульова усічена модель Пуассона) можна максимізувати окремо, що призводить до тих же оцінок параметрів, коваріацій тощо, як у випадку де вони максимізовані спільно.2 ( β )1(γ)2(β)

Ця ж логіка також працює, якщо ймовірність нульового перешкоди не параметризується за допомогою моделі logit, але будь-яка інша модель бінарної регресії, наприклад, розподіл лічильників з правою цензурою на 1. І, звичайно, також може бути інший розподіл підрахунку, наприклад, негативний двочлен. Весь поділ розбивається лише за наявності спільних параметрів між нульовим перешкодою та усіченою частиною рахунку.f ( )πf()

Визначним прикладом може бути використання негативних біноміальних розподілів з окремими але загальними параметрами у двох компонентах моделі. (Це є в в пакеті з R-Фордж, наступника реалізації.)θμθhurdle(..., separate = FALSE, dist = "negbin", zero.dist = "negbin")countregpscl

Конкретні питання

(а) Викидання ідеально хороших даних: У вашому випадку так, взагалі ні. У вас є дані з однієї моделі Пуассона без зайвих нулів (хоч і багато нулів ). Отже, не потрібно оцінювати окремі моделі для нулів і не нулів. Однак якщо ці дві частини дійсно керуються різними параметрами, то це потрібно враховувати.

(b) Це може призвести до проблем з живленням, оскільки значна частина даних є нулями: Не обов'язково. Тут у вас є третина спостережень, які є "успіхами" (перешкоди перетину). Це не вважатиметься дуже екстремальним у моделі бінарної регресії. (Звичайно, якщо не потрібно оцінювати окремі моделі, ви отримаєте потужність.)

(c) В основному це не «модель» сама по собі, а лише послідовно працює дві різні моделі: Це більш філософсько, і я не намагатись дати «одну» відповідь. Натомість я зазначу прагматичні точки зору. Для оцінки моделі може бути зручно підкреслити, що моделі є окремими, оскільки - як ви показуєте - вам, можливо, не потрібна спеціальна функція для оцінки. У застосуванні моделі , наприклад, для прогнозів або залишків тощо, може бути зручніше розглядати це як єдину модель.

(г) Чи було б безпечно називати обидві ці ситуації "перешкодою": В принципі, так. Однак жаргон може відрізнятися в різних громадах. Наприклад, бета-регресія з нульовими перешкодами частіше (і дуже заплутано) називається бета-регресією, що завищена нулем. Особисто я вважаю останнє дуже оманливим, оскільки бета-розподіл не має нулів, які можна було б завищити - але це все одно стандартний термін в літературі. Більше того, тобітова модель є цензурованою моделлю, а отже, не перешкодою. Однак це може бути розширено на пробіт (або logit) модель плюс усічена нормальна модель. У економетричній літературі це відоме як модель Крегга з двох частин.

Коментарі програмного забезпечення

countregПакет на R-Фордж на https://R-Forge.R-project.org/R/?group_id=522 є реалізація наступником hurdle()/ zeroinfl()с pscl. Основна причина, що її (досі) немає в CRAN, полягає в тому, що ми хочемо переглянути predict()інтерфейс, можливо таким чином, який не повністю сумісний із зворотним. Інакше реалізація досить стабільна. У порівнянні з psclним є кілька приємних особливостей, наприклад:

  • zerotrunc()Функція , яка використовує такий самий код, що і hurdle()для нульового усіченої частини моделі. Таким чином, він пропонує альтернативу VGAM.

  • Більше того, він як d / p / q / r функціонує для нульового усіченого, перешкодового та нульово-завищеного розподілів рахунків. Це полегшує розгляд на них як на "одну" модель, а не на окремі моделі.

  • Для оцінки корисності придатності доступні графічні екрани, такі як коренеграми та рандомізовані квантильні залишкові ділянки. (Див. Kleiber & Zeileis, 2016, Американський статистик , 70 (3), 296–303. Doi: 10.1080 / 00031305.2016.1173590 .)

Модельовані дані

Ваші імітовані дані походять від одного процесу Пуассона. Якщо eтрактувати як відомий регресор, то це був би стандартний Poisson GLM. Якщо eце невідомий компонент шуму, то існує деяка непомічена неоднорідність, яка спричиняє трохи наддисперсії, яка може бути захоплена негативною біноміальною моделлю чи іншим видом безперервної суміші або випадковим ефектом тощо. Однак, оскільки ефект eтут досить малий , нічого з цього не має великої різниці. Нижче я розглядаюсь eяк регресор (тобто з істинним коефіцієнтом 1), але ви також можете пропустити це і використовувати негативні біноміальні або пуассонові моделі. Якісно все це призводить до подібних уявлень.

## 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

Це відображає те, що всі три моделі можуть послідовно оцінювати справжні параметри. Перегляд відповідних стандартних помилок показує, що в цьому сценарії (без необхідності складати частину перешкод) Poisson GLM є більш ефективним:

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

Стандартні критерії інформації вибрали б справжню Poisson GLM як найкращу модель:

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

І тест Вальда вірно визначить, що два компоненти моделі перешкод істотно не відрізняються:

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

Нарешті, обидва rootogram(p)і qqrplot(p)показують, що Poisson GLM дуже добре відповідає даним і що немає зайвих нулів чи натяків на подальші помилки.

ротограма + qqrplot


Яка різниця між зайвими нулями та багатьма нулями?
татамі

1
Приклад: Розподіл Пуассона з очікуванням має ймовірність приблизно . Це, безумовно, багато нулів . Однак якщо у вас є розподіл, який має форму Пуассона (0,5), але більше нулів, то це зайві нулі . f ( 0 ; λ = 0,5 ) 60 %λ=0.5f(0;λ=0.5)60%
Ахім Зейлейз

4

Я погоджуюся, що різницю між моделями, завищеними від нуля та перешкодами, важко зрозуміти. Обидва є своєрідною моделлю суміші. З того, що я можу сказати, важлива відмінність полягає в тому, що в моделі, що завищує нуль, ви змішуєте масу при нулі з розподілом \ textit {що також може приймати значення нуль}. Для моделі перешкод ви змішуєте масу при нулі з розподілом, яке приймає лише значення, що перевищують 0. Таким чином, у моделі, що надуває нуль, ви можете розрізняти "структурні нулі" (відповідні масі в нуль) та "нульові вибірки" ', що відповідає випадковістю появи 0 у моделі, в яку ви змішуєте. Звичайно, ця ідентифікація сильно залежить від правильного вибору розподілу! Але, якщо у вас Пуассон із нулем, наприклад, Ви можете розрізнити нулі, що походять від компонента Пуассона (вибіркові нулі), і нулі, що надходять від маси в нуль (структурні нулі). Якщо у вас є модель із заниженою нулем, і розподіл, який ви змішуєте, не має маси в нулі, це може трактуватися як модель перешкод.


Хоча відмінність між двома видами нулів є необхідністю, яка виходить безпосередньо із специфікації моделі, можна обчислити однакову величину для моделі перешкод. Так звані структурні нулі також можуть бути обчислені з невправленого розподілу підрахунку (скажімо Пуассона), навіть якщо його параметри базувалися на усіченій вибірці. Імовірність структурних нулів - це різниця між ймовірністю для нуля (загалом, від нульової частини перешкод) та відбору нулів.
Ахім Зейлейз

1

Щодо філософського аспекту, "коли нам слід розглянути щось єдину модель, а коли дві окремі моделі" , може бути цікавим зазначити, що вибіркові оцінки параметрів моделі співвідносяться.

На малюнку нижче за допомогою імітації ви здебільшого бачите кореляцію між нахилом та перехопленням частини відліку. Але також існує деяка незначна залежність між відліковою частиною та частиною перешкод. Якщо ви зміните параметри, наприклад зробіть лямбда в розподілі Пуассона меншим або розмір вибірки меншим, то кореляція стає сильнішою.

Тому я б сказав, що ви не повинні розглядати це як дві окремі моделі. Або принаймні є якесь співвідношення, навіть коли на практиці ви можете обчислити дві незалежні одна від одної оцінки.

кореляції

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]))

Немає сенсу, що між двома частинами існує кореляція. Але, можливо, це пов’язано з дискретними рівнями оцінок параметрів в моделі Пуассона і тим, як вони відносяться до числа нулів.


Я не можу це повторити. Для мене: truncdist::rtrunc(n = 100, spec = 'pois', a = 0, b = Inf, lambda = exp(-1.5 + rnorm(100)))дає помилку (використовуючи версію 1.0.2): Error in if (G.a == G.b) { : the condition has length > 1. У будь-якому випадку, використання rhpois()пакету countregна R-Forge простіше для імітації з перешкодою моделі Пуассона з заданою ймовірністю перетину перешкоди piта основними (нерукованими) очікуваннями Пуассона lambda. Якщо я їх використовую, я отримую лише дуже малі емпіричні кореляції між нульовим перешкодою та усіченими частинами підрахунку.
Ахім Зейлейз

Процес генерації даних: 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) }Моделювання: set.seed(1); cf <- t(replicate(3000, coef(hurdle(y ~ x, data = dgp())))). Оцінка: pairs(cf)та cor(cf). Перевірка colMeans(cf)також показує, що оцінка працювала досить добре.
Ахім Зелейс

@AchimZeileis на даний момент у мене немає можливості вивчити вашу помилку і прокоментувати її. Але як би там не було, кореляція є не більш ніж дуже малою у зображенні, який я показав. Справа була більш філософською / теоретичною. На практиці у вас, швидше за все, виникнуть невеликі проблеми, коли ви ставитесь до моделі як до двох окремих, не інтегрованих кроків.
Секст Емпірік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.