एक यादृच्छिक ढलान और अवरोधन के साथ एक पॉइसन GLM मिश्रित मॉडल फिटिंग


9

मैं वर्तमान में पॉसों समय श्रृंखला के मॉडल की एक श्रृंखला पर काम कर रहा हूं, जो समय के साथ अन्य रुझानों को नियंत्रित करते हुए (कैसे एक डायग्नोस्टिक परीक्षण से दूसरे पर स्विच करना) में परिवर्तन के प्रभाव का अनुमान लगाने की कोशिश कर रहा है (एक सामान्य वृद्धि कहें बीमारी की घटना)। मुझे कई अलग-अलग साइटों के लिए डेटा मिला है।

जबकि मैं GAMs के साथ भी छेड़छाड़ कर रहा हूं, मैंने उनमें समय के रुझान के साथ सुंदर बुनियादी GLMs की एक श्रृंखला फिट की है, फिर परिणामों को पूल कर रहा है। इसके लिए कोड SAS में कुछ इस तरह दिखेगा:

PROC GENMOD data=work.data descending;
  model counts = dependent_variable time time*time / link=log dist = poisson;
run;

या आर में यह:

glm(counts ~ dependent_variable + time + time*time, family="poisson")

फिर उन अनुमानों को ले रहा है, और उन्हें विभिन्न साइटों पर पूल कर रहा है। यह भी सुझाव दिया गया है कि मैं पूलिंग के बजाय एक यादृच्छिक ढलान और प्रत्येक साइट के लिए अवरोधन के साथ पॉइसन मिश्रित मॉडल का उपयोग करने की कोशिश करता हूं। तो अनिवार्य रूप से आपके पास dependance_variable का निश्चित प्रभाव होगा, फिर अवरोधन और समय के लिए एक यादृच्छिक प्रभाव (या आदर्श रूप से समय और समय ^ 2 हालांकि मैं समझता हूं कि थोड़ा बालों वाला हो जाता है)।

मेरा मुद्दा यह है कि मुझे नहीं पता कि इन मॉडलों में से एक को कैसे फिट किया जाए, और ऐसा लगता है कि मिश्रित मॉडल ऐसे हैं जहां हर किसी का प्रलेखन अचानक बहुत अपारदर्शी हो जाता है। किसी के पास एक सरल स्पष्टीकरण (या कोड) है कि मैं कैसे फिट होना चाहता हूं, और क्या देखना है?

जवाबों:


14

आर में:

library(lme4)
lmer(counts ~ dependent_variable + (1+time|ID), family="poisson")

इस स्थिति में और यह कोड मॉडल पर फिट बैठता है YiPoisson(λi)

log(λi)=β0+β1Xi+ηi1+ηi2t

जहाँ है , है और है । निश्चित प्रभाव हैं और यादृच्छिक प्रभाव हैं, जिनके मॉडल द्वारा अनुमानित हैं।Xidependent_variablettimeiIDβ0,β1ηi1,ηi2

यहां कुछ त्वरित सिम्युलेटेड डेटा के साथ एक उदाहरण है जहां यादृच्छिक प्रभाव संस्करण वास्तव में 0 हैं, कोवरिएट का कोई प्रभाव नहीं है, प्रत्येक परिणाम , और प्रत्येक व्यक्ति को पर 10 बार देखा जाता है ।Poisson(1)t=1,...,10

x = rnorm(100)
t = rep(1:10,each=10)
ID = rep(1:10,10)
y = rpois(100,1)
g <- lmer(y ~ x + (1+t|ID), family="poisson")
summary(g)
Generalized linear mixed model fit by the Laplace approximation 
Formula: y ~ x + (1 + t | ID) 
   AIC   BIC logLik deviance
 108.8 121.9 -49.42    98.85
Random effects:
 Groups Name        Variance  Std.Dev. Corr   
 ID     (Intercept) 0.0285038 0.168831        
        t           0.0027741 0.052669 -1.000 
Number of obs: 100, groups: ID, 10

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.09078    0.11808  -0.769    0.442
x            0.13670    0.08845   1.546    0.122

Correlation of Fixed Effects:
  (Intr)
x -0.127

सावधानी का एक बिंदु - Std.Dev.स्तंभ स्तंभ का सिर्फ वर्गमूल है Variance, कि विचरण अनुमान की मानक त्रुटि!


और इसका cepti1 जिसके परिणामस्वरूप यादृच्छिक अवरोधन होता है?
फोमाइट

ηi1 यादृच्छिक अवरोधन है, हाँ।
मैक्रों

जवाब के लिए धन्यवाद - एक और सवाल। जीएलएम में से कुछ में, कुछ साइटों को ^ 2 शब्द से बहुत लाभ होता है। ऐसा लगता है कि अधिकांश लोग एक या दो यादृच्छिक प्रभावों पर टैग करते हैं - गणना के संदर्भ में बुरा तीसरा कैसे हो सकता है?
फोमाइट

खैर, ऊपर के सिम्युलेटेड उदाहरण में, जिसमें केवल 100 अवलोकन और 10 समूह थे, तीसरे यादृच्छिक प्रभाव (टाइप करके g <- lmer(y ~ x + (1+t+I(t^2)|ID), family="poisson")) को जोड़ते हुए , गणना समय को लगभग .75 सेकंड से लगभग 11 सेकंड तक बढ़ा दिया। जैसा कि नमूना आकार बढ़ता है कंप्यूटिंग समय में वृद्धि संभवतः भी बढ़ जाती है।
मैक्रों

1
@andrea, कि एक विश्वास को प्रतिबिंबित करेगा कि डेटा सेट में एक धर्मनिरपेक्ष प्रवृत्ति है - मैंने एक प्राथमिकता नहीं ली कि यह समझ में आए। यदि इकाइयाँ लोग थे और की आयु थी, तो मैं निश्चित रूप से सहमत हूँ कि समय में एक निश्चित प्रभाव ने बहुत मायने रखा, लेकिन अन्य स्थितियों में, समय में ढलान एक यादृच्छिक दिशा से अधिक होगा जो प्रत्येक व्यक्ति का नेतृत्व करता है। इसलिए मैंने उस प्रभाव को शामिल नहीं किया (और एपिग्रैड ने यह नहीं पूछा कि निश्चित समय प्रभाव को कैसे शामिल किया जाए)t
मैक्रो

2

SAS में:

proc glimmix data = yourdata ic = q;
    class id;
    model y = x / dist = poisson solution;
    random intercept t / subject = id;
run;

लेकिन तब निश्चित रूप से बहुत सारे विकल्प हैं, कम या ज्यादा उपयोगी, खेलने के लिए।


धन्यवाद :) अफसोस की बात है, मुझे लगता है कि अभिसरण मुद्दों पर घेर लिया गया है, लेकिन मैं उन लोगों के साथ छेड़छाड़ करूँगा।
फोमाइट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.