অতিরিক্ত ছড়িয়ে ছিটিয়ে থাকা ফলাফলের জন্য আমি কীভাবে একাধিক স্তরের মডেল ফিট করব?


32

আমি আর এর সাহায্যে পোইসন বিতরণ (ওভার-ডিসপ্রেসন সহ) মাল্টিলেভেল জিএলএমএম ফিট করতে চাই এই মুহুর্তে আমি lme4 ব্যবহার করছি তবে আমি লক্ষ্য করেছি যে সম্প্রতি quasipoissonপরিবারটি সরিয়ে দেওয়া হয়েছে।

আমি অন্য কোথাও দেখেছি যে আপনি প্রতি পর্যবেক্ষণের জন্য এক স্তরের সাথে একটি এলোমেলো ইন্টারসেপ্ট যোগ করে দ্বিপদী বিতরণের জন্য অতিরিক্ত সংশ্লেষের মডেল করতে পারেন। এটি কি পোয়েসন বিতরণেও প্রযোজ্য?

এটা করতে একটি ভাল উপায় আছে কি? অন্য কোন প্যাকেজ রয়েছে যা আপনি সুপারিশ করবেন?

উত্তর:


22

আপনি একাধিক উপায়ে আর ব্যবহার করে পোইসন বিতরণ (ওভার-ডিসপ্রেসন সহ) মাল্টিলেভেল জিএলএমএম ফিট করতে পারেন। কয়েক Rপ্যাকেজ আছেন: lme4, MCMCglmm, arm, ইত্যাদি একটি ভাল রেফারেন্স দেখতে হয় Gelman এবং হিল (2007)

আমি rjagsপ্যাকেজ ব্যবহার করে এটি করার উদাহরণ দেব R। এটি Rএবং JAGS(লাইক OpenBUGSবা WinBUGS) এর মধ্যে একটি ইন্টারফেস ।

লগ ইন করুন θ আমি = β 0 + + β 1 টি R একটি টন মিটার এন t আমি + + δ আমি δ আমি ~ এন ( 0 , σ 2 ϵ ) i = 1 আমি ,

nijPoisson(θij)
logθij=β0+β1 Treatmenti+δij
δijN(0,σϵ2)
i=1I,j=1J
Treatmenti=0 or 1,,J1 if the ith observation belongs to treatment group 1, or, 2,,J

δijrate modelsJAGS

data{
        for (i in 1:I){         
            ncount[i,1] <- obsTrt1[i]
            ncount[i,2] <- obsTrt2[i]
                ## notice I have only 2 treatments and I individuals 
    }                               
}

model{
    for (i in 1:I){ 
        nCount[i, 1] ~ dpois( means[i, 1] )
        nCount[i, 2] ~ dpois( means[i, 2] )

        log( means[i, 1] ) <- mu + b * trt1[i] + disp[i, 1]
        log( means[i, 2] ) <- mu + b * trt2[i] + disp[i, 2]

        disp[i, 1] ~ dnorm( 0, tau)
        disp[i, 2] ~ dnorm( 0, tau)

    }

    mu  ~ dnorm( 0, 0.001)
    b   ~ dnorm(0, 0.001)
    tau ~ dgamma( 0.001, 0.001)
}

Rএটি প্রয়োগের জন্য কোডটি এখানে দেওয়া হয়েছে (বলুন এটির নাম দেওয়া হয়েছে overdisp.bug)

dataFixedEffect <- list("I"       = 10,
                        "obsTrt1" = obsTrt1 , #vector of n_i1
                        "obsTrt2" = obsTrt2,  #vector of n_i2
                        "trt1"    = trt1,     #vector of 0
                        "trt2"    = trt2,     #vector of 1
                       )

initFixedEffect <- list(mu = 0.0 , b = 0.0, tau = 0.01)

simFixedEffect <- jags.model(file     = "overdisp.bug",
                             data     = dataFixedEffect,
                             inits    = initFixedEffect,
                             n.chains = 4,
                             n.adapt  = 1000)

sampleFixedEffect <- coda.samples(model          = simFixedEffect,
                                  variable.names = c("mu", "b", "means"),
                                  n.iter         = 1000)

meansTrt1 <- as.matrix(sampleFixedEffect[ , 2:11])
meansTrt2 <- as.matrix(sampleFixedEffect[ , 12:21])

আপনি আপনার পরামিতিগুলির পোস্টেরিয়ারগুলি নিয়ে খেলতে পারেন এবং মডেলিংকে আরও সুনির্দিষ্ট করে তুলতে আপনি আরও পরামিতিগুলি প্রবর্তন করতে পারেন ( আমরা এটি ভাবতে চাই )। মূলত, আপনি ধারণা পেতে।

rjagsএবং ব্যবহার সম্পর্কে আরও তথ্যের জন্য JAGSদয়া করে জন মাইলস হোয়াইটের পৃষ্ঠাটি দেখুন


ধন্যবাদ !! আমি সম্প্রতি বেইসিয়ান বিশ্লেষণ সন্ধান করতে শুরু করেছি এবং এখনও বুঝতে পেরেছি এটি কিছুটা কঠিন। আমার ধারণা এটি সম্পর্কে এটি আরও কিছুটা শেখার একটি সুযোগ।
জর্জ মাইকেলাইডস

1
গামা ছড়িয়ে পড়ছে না কেন?
প্যাট্রিক ম্যাকক্যান

2
@ পেট্রিক আপনি অবশ্যই এটি করতে পারেন। তবে যেহেতু আমি গড়টির লগ নিচ্ছি আমি স্বাভাবিক ডিসপ্লে এফেক্ট পছন্দ করি। গামা বিতরণের অনুরূপ ডিস্ট্রিবিউশনগুলির মডেলিংয়ের অন্য উপায় হ'ল লগ সাধারণ বিতরণ। আছে HTH।
সানকুলসু

20

অতিরিক্ত সংখ্যার জন্য অ্যাকাউন্টে lme4 প্যাকেজটি ছাড়ার দরকার নেই; পর্যবেক্ষণ সংখ্যার জন্য কেবল একটি এলোমেলো প্রভাব অন্তর্ভুক্ত করুন। উল্লিখিত BUGS / JAGS সমাধানগুলি সম্ভবত আপনার জন্য ওভারকিল, এবং যদি তা না হয় তবে তুলনার জন্য আপনার কাছে সহজ lme4 ফলাফলের ফিট করা উচিত।

data$obs_effect<-1:nrow(data)
overdisp.fit<-lmer(y~1+obs_effect+x+(1|obs_effect)+(1+x|subject_id),data=data,family=poisson)

এটি এখানে আলোচনা করা হয়েছে: http://article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 অনানুষ্ঠানিকভাবে এবং একাডেমিকভাবে এলস্টন এট আল দ্বারা। (2001)


যদি কোনও মডেলটিতে দুটি নামমাত্র ভেরিয়েবল থাকে, একটি অবিচ্ছিন্ন পরিবর্তনশীল (সমস্ত স্থির প্রভাব হিসাবে) এবং তৃতীয়-ক্রমের ইন্টারঅ্যাকশন সহ একটি গ্রুপিং ভেরিয়েবল (এলোমেলো প্রভাব) এবং তদুপরি, পরিমাপকৃত বিষয়গুলির সংখ্যা পর্যবেক্ষণ বা রেকর্ডের সংখ্যার সমান হয় ডেটা সেটটি? মডেলটিতে আমি কীভাবে এটি আবরণ করব?
লাডিসালভ ন্যাও

7

আমি মনে করি যে glmmADMB প্যাকেজটি আপনি যা সন্ধান করছেন তা অবিচ্ছিন্নভাবে is

ইনস্টল.প্যাকেজ ("glmmADMB", repos = "http://r-forge.r-project.org")

তবে বাইসিয়ান দৃষ্টিতে আপনি এমসিসিএমসিজিএলএম প্যাকেজ বা বিইউজিএস / জেজিএস সফ্টওয়্যার ব্যবহার করতে পারেন , এগুলি খুব নমনীয় এবং আপনি এই ধরণের মডেল ফিট করতে পারেন। (এবং সিনট্যাক্সটি আর এর খুব কাছে রয়েছে)

সম্পাদনা করুন @ র্যান্ডেলকে ধন্যবাদ

আপনি ইনস্টল করতে চান glmmADMBএবং R2admbপ্যাকেজ এটা আরও ভাল করতে হয়:

install.packages("glmmADMB", repos="http://glmmadmb.r-forge.r-project.org/repos"‌​)   
install.packages("R2admb")

আমি বিশ্বাস করি বর্তমানে প্যাকেজটি install.packages("glmmADMB",repos="http://glmmadmb.r-forge.r-project.org/repos")প্লাসের মাধ্যমে ইনস্টল করা উচিত install.packages('R2admb')
র‌্যান্ডেল

5

এখনও ভাল পরামর্শ। এখানে আরও একটি। আপনি প্যাকেজের rhierNegbinRwফাংশনটি ব্যবহার করে একটি শ্রেণিবিন্যাসিক নেতিবাচক দ্বিপদী রিগ্রেশন মডেল ফিট করতে পারেন bayesm

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.