増加した患者数を説明するために二項モデルでオフセットを使用する


18

私からの2つの関連する質問。1つの列に患者の数(範囲10〜17人の患者)と、その日にインシデントが発生したかどうかを示す0と1を含むデータフレームがあります。私は二項モデルを使用して、多数の患者のインシデントの確率を回帰しています。しかし、患者の数が増えると、その日の病棟での患者の総時間は長くなるため、必然的にインシデントが増えるという事実に合わせて調整したいと思います。

だから私はこのようなオフセット二項モデルを使用しています(Rコード):

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

私の質問は:

  1. 正確に同じ変数を予測してオフセットに入れても大丈夫ですか?インシデントの可能性の強大な増加を部分的に取り除き、本質的に何かが残っているかどうかを確認したい 私には理にかなっていますが、私が間違っている場合には少し慎重です。

  2. オフセットは正しく指定されていますか?ポアソンモデルでは次のようになります。

    offset=log(Numbers)
    

ここに同等のものがあるかどうかはわかりませんが、Googleで二項オフセットを見つけることができないようです(主な問題は、私が負の二項を取得し続けることです、もちろん良くありません)。


2
調整しようとしているものではなく、正確に測定したいもの、つまり、「インシデント」の確率が患者数とともにどのように増加するのか。
B_Miner

1
B_Minerのポイントをエコーする必要があります。この状況でいつ/なぜオフセットが使用されるのか混乱していると思います。あなたのモデル、sans offsetは、患者数の関数としてのインシデントの確率の近似値を提供します。別の関数形式に関心がある場合は、科学的に興味深いものに基づいて変換(対数や#のべき乗など)を検討してください。
AdamO

インシデントについて何か明確にできますか?インシデントは患者に関連するものですか、それとも病棟全体に関する何かですか?患者に関連する場合、インシデントが1件以上発生する可能性はありますか?患者がいない場合、インシデントを発生させることは不可能ですか?
atiretoo

1
どうやら私の答えは「十分な詳細が含まれていません」。理論的な開発、実行可能なコード、および両方の質問への回答を提供しましたので、必要なものを明確にできますか?
共役前

1
申し訳ありませんが、Conjugate Prior、あなたの答えは素晴らしいです。「詳細が不十分」なのは、賞金に追加されたタグ(つまり、投稿する前にあったタグ)でした。誰かがさらに良い応答を生成した場合に備えて、賞金が終了したときに受け入れますが、これはありそうもないことであり、あなたのものは非常に役に立ちます、ありがとう。
クリスビーリー

回答:


17

N日間の病棟の患者に与えられたインシデントの確率に興味がある場合、次のようなモデルが必要です。

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

オフセットは試行を表し、incident0または1のいずれかであり、インシデントの確率は一定(インシデントを生成する傾向の不均一性なし)であり、患者は相互作用してインシデントを引き起こしません(伝染なし)。あるいは、インシデントの可能性が小さい場合、またはそれがあなたのためである場合(または、私たちに言及せずにインシデントカウントをしきい値化した場合)、ポアソン公式を好むかもしれません

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

同じ仮定が適用される場合。病棟の患者数には比例/乗算効果があるため、オフセットが記録されます。

2番目のモデルを拡張すると、おそらく患者数の増加だけで予想されるよりも多くのインシデントがあると思うかもしれません。つまり、おそらく患者は相互作用するか、異質です。だからあなたはしよう

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

上の係数log.patients.on.wardがで固定された1と大幅に異なる場合、mod2不均一性と伝染性がないという仮定に間違いがあるかもしれません。もちろん、これらの2つ(他の欠落変数と区別することもできません)を区別することはできませんが、病棟の患者数がどれだけ増えれば、インシデントの発生率以上にインシデントの発生率/確率が増加するかを推定できます偶然に期待する。パラメータの空間では、1-coef(mod3)[2]から派生可能な間隔がありますconfint

または、ログ量とその係数を直接操作することもできます。病棟の患者数を使用して事故の確率を予測したい場合、このモデルはそれを行う簡単な方法です。

質問

  1. オフセットに従属変数を入れても大丈夫ですか?私には非常に悪い考えのように聞こえますが、そうする必要があるとは思いません。

  2. のポアソン回帰モデルのオフセットexposureは、実際にlog(exposure)です。おそらく混乱を招くのはoffset、Rの二項回帰モデルでの使用が基本的に試行回数を示す方法です。cbind(incidents, patients.on.ward-incidents)オフセットとして定義され、オフセットなしの従属変数でいつでも置き換えることができます。次のように考えてください。ポアソンモデルでは、ログリンク関数の後ろの右側に入り、二項モデルでは、ロジットリンク関数の前の左側に入ります。


18

ポアソン回帰のオフセット

まず、ポアソン回帰でオフセットを使用する理由を見てみましょう。多くの場合、これは露出の制御に起因します。ましょう露光の単位当たりの基準速度であるとTが同一の単位の露光時間です。予想されるイベント数はλ × tになります。λtλ×t

GLMモデルでは、リンク機能を使用して期待値をモデル化しているされています、g

g(λti)=log(λti)=β0+β1x1,i+

ここで、は個人iの露出時間であり、x iは個人iの共変量です。省略記号は、追加したい追加の回帰項を示しています。tiixi

上記の式を単純化して単純化できます

log(λ)=log(ti)+β0+β1x1,i+

log(ti)

二項回帰

通常、ロジットリンクを使用する二項回帰では、次のようになります。

g(pi)=logit(pi)=log(pi1pi)=β0+β1x1,i+

pi

pii

pi,jjiij=1Ni(1pi,j)Nii

pi=1j=1Ni(1pi,j).

pi=1(q)Ni,
q=1pp

pig(pi)log((q)N1)

そのため、この場合はオフセットを使用できません。

p


2
+1、サイト@Rider_Xへようこそ。今後、このような答えが期待できることを願っています。
GUNG -復活モニカ

1
@gung-ありがとう!役に立つ答えだと思うことについてはあまり返事がなかったので、あまり戻ってきませんでした。私はそれを変えなければなりません。よろしく。
Rider_X

2
+1 使用するコードとコマンドを示すのではなく(またはそれに加えて)、理論と推論を説明する回答を本当に感謝しています。
whuber

9

この回答には2つの部分があります。1つ目は質問に対する直接的な回答、2つ目は提案しているモデルに関する解説です。

最初の部分Numbersは、式のrhsにオフセットを設定するとともに、オフセットとして使用することに関するものです。これを行うことの効果は、の推定係数から1を単純に減算Numbersすることであり、それによりオフセットの効果が逆転し、それ以外の場合は結果が変化しません。関係のない出力の数行を削除した次の例は、これを示しています。

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

Numbersの係数とnull deviance(および-1ではなく0に対してテストしているため、t統計量)を除いて、すべてが同じであることに注意してください。

t1(1pt)NtNttpttlog(1(1pt)Nt)/Ntlog(1pt)tNtNt

また、患者ごとの確率は患者ごとに異なるため、より複雑で階層的なモデルにつながると思われるかもしれませんが、ここでは説明しません。

いずれにせよ、これと観察する患者数の限られた範囲を考えると、ロジットスケールで線形のモデルを使用するよりも、関係についてノンパラメトリックにし、患者数を3人にグループ化するか、 4つのグループ、たとえば10-11、12-13、14-15、および16-17は、それらのグループのダミー変数を作成し、ダミー変数を右側に使用してロジスティック回帰を実行します。これにより、「システムが患者16人前後で過負荷になり、インシデントが大幅に増加し始める」などの非線形の関係をより適切にキャプチャできるようになります。患者の範囲がずっと広い場合は、一般的な加算モデル、たとえば「mgcv」パッケージの「gam」をお勧めします。


0

ポアソンモデルの場合のように、ログリンクを指定し、オフセットを維持するのが最も簡単なようです。


2
私はあなたが正しいと確信していますが、私の利益のために、これはどのようにポアソンですか?OPには、バイナリ結果のデータセットがあるようです。これはglm(Incident〜Numbers、offset = log(Numbers)、family = poisson、data = threatdata)でしょうか??
B_Miner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.