Verwendung des Versatzes im Binomialmodell zur Berücksichtigung einer erhöhten Anzahl von Patienten


18

Zwei verwandte Fragen von mir. Ich habe einen Datenrahmen, der die Anzahl der Patienten in einer Spalte (Bereich 10 - 17 Patienten) sowie Nullen und Einsen enthält, aus denen hervorgeht, ob an diesem Tag ein Vorfall aufgetreten ist. Ich verwende ein Binomialmodell, um die Wahrscheinlichkeit eines Vorfalls auf die Anzahl der Patienten zu reduzieren. Ich möchte jedoch die Tatsache berücksichtigen, dass es bei mehr Patienten unweigerlich mehr Zwischenfälle geben wird, da die Gesamtdauer der Patienten auf der Station an diesem Tag höher ist.

Also benutze ich ein Offset-Binomialmodell wie dieses (R-Code):

glm(Incident~Numbers, offset=Numbers, family=binomial, data=threatdata)

Meine Fragen sind:

  1. Ist es in Ordnung, genau dieselben Variablen vorherzusagen und im Offset zu haben? Ich möchte die tonische Zunahme der Eintrittswahrscheinlichkeit ausräumen und herausfinden, ob im Wesentlichen noch etwas übrig ist. Für mich macht es Sinn, aber ich bin ein bisschen vorsichtig, falls ich mich irre.

  2. Ist der Offset korrekt angegeben? Ich weiß, dass es in Poisson-Modellen lesen würde

    offset=log(Numbers)
    

Ich weiß nicht, ob es hier eine Entsprechung gibt, und ich kann bei Google scheinbar keine Binomial-Offsets finden (Hauptproblem ist, dass ich immer negative Binomial-Werte erhalte, was natürlich nicht gut ist).


2
Ist es nicht das, worauf Sie sich einstellen möchten, genau das, was Sie messen möchten - dh wie die Wahrscheinlichkeit eines "Vorfalls" mit der Anzahl der Patienten zunimmt?
B_Miner

1
Ich muss den Punkt von B_Miner wiederholen. Ich denke, Sie sind verwirrt, wann / warum der Offset in dieser Situation verwendet wird. Ihr Modell ohne Versatz gibt Ihnen angepasste Werte für die Wahrscheinlichkeit eines Vorfalls in Abhängigkeit von der Anzahl der Patienten. Wenn Sie an einer anderen funktionalen Form interessiert sind, sollten Sie Transformationen (wie log oder Potenzierung von #) in Betracht ziehen, die auf dem wissenschaftlichen Interesse beruhen.
AdamO

Können Sie etwas über die Vorfälle klären? Hat ein Vorfall etwas mit einem Patienten zu tun oder etwas mit der gesamten Station? Wenn es um Patienten geht, kann es zu mehr als einem Vorfall kommen. Wenn es keine Patienten gibt, ist es unmöglich, einen Vorfall zu bekommen?
Atiretoo

1
Anscheinend enthält meine Antwort "nicht genügend Details". Ich habe eine theoretische Entwicklung, ausführbaren Code und Antworten auf Ihre beiden Fragen bereitgestellt. Können Sie also vielleicht klären, was noch benötigt wird?
Conjugateprior

1
Entschuldigung, Conjugate Prior, Ihre Antwort ist großartig. Das "nicht genug Detail" war der Tag, der dem Kopfgeld hinzugefügt wurde (dh war da, bevor Sie gepostet haben). Ich werde akzeptieren, wenn das Kopfgeld endet, nur für den Fall, dass jemand eine noch bessere Antwort liefert, aber das ist unwahrscheinlich und Ihre ist sehr hilfreich, danke.
Chris Beeley

Antworten:


17

Wenn Sie an der Wahrscheinlichkeit eines Vorfalls bei Patienten auf der Station in N Tagen interessiert sind, möchten Sie ein Modell, das entweder wie folgt aussieht:

mod1 <- glm(incident ~ 1, offset=patients.on.ward, family=binomial)

Der Versatz stellt Versuche dar, incidentist entweder 0 oder 1, und die Wahrscheinlichkeit eines Vorfalls ist konstant (keine Heterogenität in der Tendenz, Vorfälle zu verursachen), und die Patienten interagieren nicht, um Vorfälle zu verursachen (keine Ansteckung). Wenn die Wahrscheinlichkeit eines Vorfalls für Sie gering ist (oder Sie die Anzahl der Vorfälle begrenzt haben, ohne uns darauf hinzuweisen), bevorzugen Sie möglicherweise die Poisson-Formulierung

log.patients.on.ward <- log(patients.on.ward)
mod2 <- glm(incident ~ 1, offset=log.patients.on.ward, family=poisson)

wo die gleichen Annahmen gelten. Der Offset wird protokolliert, da die Anzahl der stationären Patienten proportional / multiplikativ wirkt.

Wenn Sie das zweite Modell erweitern, denken Sie vielleicht, dass es mehr Vorfälle gibt, als dies allein aufgrund der höheren Patientenzahlen zu erwarten wäre. Das heißt, vielleicht interagieren die Patienten miteinander oder sind heterogen. Also versuchst du es

mod3 <- glm(incident ~ 1 + log.patients.on.ward, family=poisson)

Wenn sich der Koeffizient log.patients.on.wardvon 1, in dem er festgelegt wurde mod2, erheblich unterscheidet, kann tatsächlich etwas mit Ihren Annahmen über keine Heterogenität und keine Ansteckung falsch sein. Und obwohl Sie diese beiden Variablen natürlich nicht unterscheiden können (und auch keine von anderen fehlenden Variablen), haben Sie jetzt eine Schätzung, um wie viel mehr Patienten auf der Station die Rate / Wahrscheinlichkeit eines Vorfalls erhöht, als Sie möchten Erwarten Sie vom Zufall. Im Bereich der Parameter ist es 1-coef(mod3)[2]mit Intervall ableitbar confint.

Alternativ können Sie auch direkt mit der Log-Menge und ihrem Koeffizienten arbeiten. Wenn Sie die Wahrscheinlichkeit eines Vorfalls nur anhand der Anzahl der Patienten auf der Station vorhersagen möchten, ist dieses Modell eine einfache Möglichkeit, dies zu tun.

Die Fragen

  1. Ist es in Ordnung, abhängige Variablen in Ihrem Offset zu haben? Es klingt für mich nach einer sehr schlechten Idee, aber ich sehe nicht, dass Sie das müssen.

  2. Der Offset in Poisson-Regressionsmodellen für exposureist in der Tat log(exposure). Vielleicht verwirrend ist die Verwendung offsetin Rs Binomial-Regressionsmodellen im Grunde genommen ein Hinweis auf die Anzahl der Versuche. Es kann immer durch eine abhängige Variable ersetzt werden, die als cbind(incidents, patients.on.ward-incidents)und ohne Offset definiert ist. Stellen Sie es sich folgendermaßen vor: Im Poisson-Modell wird es rechts hinter der Protokollverknüpfungsfunktion und im Binomial-Modell links vor der Protokollverknüpfungsfunktion eingegeben.


18

Offsets in Poisson-Regressionen

Beginnen wir damit, warum wir einen Offset in einer Poisson-Regression verwenden. Oft möchten wir dies auf die Kontrolle der Belichtung zurückführen. Sei die Grundlinienrate pro Belichtungseinheit und t die Belichtungszeit in denselben Einheiten. Die erwartete Anzahl von Ereignissen wird λ × t sein .λtλ×t

In einem GLM-Modell modellieren wir den erwarteten Wert mit einer Verknüpfungsfunktion , das heißtG

G(λtich)=Log(λtich)=β0+β1x1,ich+

tichichxichich

Wir können die Vereinfachung des obigen Ausdrucks vereinfachen

Log(λ)=Log(tich)+β0+β1x1,ich+

Log(tich)

Binomiale Regression

In einer binomialen Regression, die normalerweise einen Logit-Link verwendet, ist dies:

G(pich)=logit(pich)=lOG(pich1-pich)=β0+β1x1,ich+

pich

pichich

pich,jjichichj=1Nich(1-pich,j)Nichich

pich=1-j=1Nich(1-pich,j).

pich=1-(q)Nich,
q=1-pp

pichG(pich)Log((q)-N-1)

Daher können wir in diesem Fall keinen Offset verwenden.

p


2
+1, willkommen auf der Seite, @Rider_X. Ich hoffe, wir können in Zukunft weitere solche Antworten erwarten.
gung - Wiedereinsetzung von Monica

1
@gung - Danke! Ich hatte nicht viel zurück gehört, was ich für eine nützliche Antwort hielt, also war ich nicht viel zurück. Das muss ich ändern. Grüße.
Rider_X

2
+1 Ich freue mich wirklich über Antworten, die die Theorie und die Argumentation erläutern , anstatt (oder zusätzlich zu) zu zeigen, welcher Code und welche Befehle zu verwenden sind.
whuber

9

Diese Antwort besteht aus zwei Teilen: Der erste Teil enthält eine direkte Antwort auf die Frage und der zweite Teil enthält einen Kommentar zu dem von Ihnen vorgeschlagenen Modell.

Der erste Teil bezieht sich auf die Verwendung von Numbersals Offset, zusammen mit der Angabe auf der rechten Seite der Gleichung. Dies bewirkt lediglich, dass 1 vom geschätzten Koeffizienten von subtrahiert wird Numbers, wodurch der Effekt des Offsets umgekehrt wird, und die Ergebnisse ansonsten nicht geändert werden. Das folgende Beispiel zeigt dies, wobei einige Zeilen irrelevanter Ausgaben entfernt wurden:

library(MASS)
Numbers <- rpois(100,12)
p <- 1 / (1 + exp(0.25*Numbers))
y <- rbinom(100, Numbers, p)
Incident <- pmin(y, 1) 

> summary(glm(Incident~Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  0.99299    0.80624   1.232   0.2181  
Numbers     -0.11364    0.06585  -1.726   0.0844 . <= COEFFICIENT WITH NO OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 135.37  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

> summary(glm(Incident~Numbers, offset=Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.99299    0.80624   1.232    0.218    
Numbers     -1.11364    0.06585 -16.911   <2e-16 *** <= COEFFICIENT WITH OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 342.48  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

Beachten Sie, dass bis auf den Koeffizienten von Numbers und die Nullabweichung (und die T-Statistik, da immer noch gegen 0 statt gegen -1 getestet wird) alles gleich ist.

t1-(1-pt)NtNttpttLog(1-(1-pt)Nt)/NtLog(1-pt)tNtNt

Man könnte auch vermuten, dass die Wahrscheinlichkeit pro Patient von Patient zu Patient unterschiedlich ist, was zu einem komplexeren, hierarchischen Modell führen würde, aber darauf werde ich hier nicht eingehen.

In jedem Fall ist es angesichts des begrenzten Bereichs der Anzahl der von Ihnen beobachteten Patienten besser, die Beziehung nicht zu parametrisieren und die Anzahl der Patienten in drei oder drei zu gruppieren, als ein Modell zu verwenden, das auf der logit-Skala linear ist In vier Gruppen, z. B. 10-11, 12-13, 14-15 und 16-17, werden Dummy-Variablen für diese Gruppen erstellt und anschließend die logistische Regression mit den Dummy-Variablen auf der rechten Seite ausgeführt. Auf diese Weise können nichtlineare Beziehungen besser erfasst werden, z. B. "Das System ist bei 16 Patienten überlastet, und Vorfälle nehmen erheblich zu." Wenn Sie ein viel größeres Patientenspektrum hätten, würde ich ein verallgemeinertes additive Modell vorschlagen, z. B. 'gam' aus dem 'mgcv'-Paket.


0

Scheint am einfachsten, eine Protokollverknüpfung anzugeben und den Versatz wie bei einem Poisson-Modell beizubehalten.


2
Ich bin sicher, Sie haben Recht, aber wie ist das für mich ein Poisson? Es klingt so, als hätte das OP einen Datensatz mit einem binären Ergebnis. Wäre das glm (Incident ~ Numbers, offset = log (Numbers), family = poisson, data = threatdata)?
B_Miner
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.