মিশ্র প্রভাবগুলির সাথে গণনা ডেটার জন্য উপযুক্ত মডেল ফিট করতে সমস্যা - ZINB বা অন্য কিছু?


12

আমি নির্জন মৌমাছির প্রাচুর্যের উপর একটি খুব ছোট ডেটা সেট করেছি যা বিশ্লেষণ করতে আমার সমস্যা হচ্ছে। এটি ডেটা গণনা করে এবং প্রায় সমস্ত সংখ্যা অন্যান্য চিকিত্সার বেশিরভাগ শূন্যের সাথে এক চিকিত্সায় থাকে। এছাড়াও খুব উচ্চ মানের একটি দম্পতি রয়েছে (ছয়টি সাইটের দুটিতে একটি করে), সুতরাং গণনাগুলির বিতরণে একটি দীর্ঘ দীর্ঘ লেজ থাকে। আমি আর এ কাজ করছি I আমি দুটি ভিন্ন প্যাকেজ ব্যবহার করেছি: lme4 এবং glmmADMB।

পোইসন মিশ্রিত মডেলগুলি খাপ খায় না: র্যান্ডম এফেক্টগুলি (গ্ল্যাম মডেল) ফিট না করা অবস্থায় মডেলগুলি খুব বেশি মাত্রায় ছড়িয়ে পড়েছিল এবং এলোমেলো প্রভাবগুলি লাগানো হলে (গ্ল্যামার মডেল) আন্ডার ডিসপ্রেসড ছিল। আমি কেন বুঝতে পারছি না। পরীক্ষামূলক ডিজাইন নেস্টেড এলোমেলো প্রভাবগুলির জন্য কল করে যাতে আমার সেগুলি অন্তর্ভুক্ত করা দরকার। একটি পইসন লগনরমাল ত্রুটি বিতরণ ফিটের উন্নতি করতে পারেনি। আমি glmer.nb ব্যবহার করে নেতিবাচক দ্বিপদী ত্রুটি বিতরণের চেষ্টা করেছি এবং এটি ফিট করতে পারিনি - গ্লোমারকন্ট্রোল (টোলপওয়ারস = 1 ই -3) ব্যবহার সহিষ্ণুতা পরিবর্তনের পরেও পুনরাবৃত্তির সীমাটি পৌঁছে গেল।

কারণ অনেকগুলি শূন্য হ'ল এই কারণে যে আমি মৌমাছি দেখতে পাইনি (তারা প্রায়শই ছোট কালো জিনিস থাকে), এরপরে আমি একটি শূন্য-স্ফীত মডেলের চেষ্টা করেছি tried জিপটি ভাল মানায় না। জেডআইএনবি এখনও অবধি সেরা মডেল ফিট, তবে আমি এখনও মডেলটির ফিট নিয়ে খুব খুশি নই। এরপরে কী চেষ্টা করতে হবে তা নিয়ে আমি ক্ষতি করছি। আমি একটি প্রতিবন্ধকতা মডেল চেষ্টা করেছি কিন্তু শূন্য-অ-ফলাফলগুলিতে ছাঁটাই করা বিতরণটি ফিট করতে পারি না – আমার মনে হয় কারণ অনেকগুলি শূন্যই নিয়ন্ত্রণের চিকিত্সায় রয়েছে (ত্রুটি বার্তাটি ছিল "Model.frame.default এ ত্রুটি (সূত্র = s.bee ~ tmt + lu +: পরিবর্তনশীল দৈর্ঘ্য পৃথক ('চিকিত্সা' এর জন্য পাওয়া যায়) ")।

তদতিরিক্ত, আমি মনে করি যে আমি অন্তর্ভুক্ত করা মিথস্ক্রিয়াটি আমার ডেটাগুলিতে কিছুটা অদ্ভুত কাজ করছে কারণ সহগুণগুলি অবাস্তববাদীভাবে ছোট হয় - যদিও আমি প্যাকেজ বিবিএমএলে এআইসিএকটিব ব্যবহার করে মডেলগুলির তুলনা করার সময় ইন্টারঅ্যাকশনযুক্ত মডেলটি সেরা ছিল।

আমি এমন কিছু আর স্ক্রিপ্ট অন্তর্ভুক্ত করছি যা আমার ডেটা সেটটিকে পুনরুত্পাদন করবে। ভেরিয়েবলগুলি নিম্নরূপ:

d = জুলিয়ান তারিখ, ডিএফ = জুলিয়ান তারিখ (ফ্যাক্টর হিসাবে), ডি.এসকিউ = ডিএফ স্কোয়ারড (মৌমাছির সংখ্যা বাড়লে পুরো গ্রীষ্মে পড়ে যায়), সেন্ট = সাইট, এস.বিই = মৌমাছির গণনা, টিএমটি = ট্রিটমেন্ট, লু = জমি ব্যবহারের ধরণ, আশেপাশের প্রাকৃতিক দৃশ্যে হাফ = আধা প্রাকৃতিক আবাসের শতাংশ, বা = সীমানা অঞ্চল গোলাকার ক্ষেত্র।

আমি কীভাবে একটি ভাল মডেল ফিট (বিকল্প ত্রুটি বিতরণ, বিভিন্ন ধরণের মডেল ইত্যাদি) পেতে পারি সে সম্পর্কে কোনও পরামর্শ খুব কৃতজ্ঞতার সাথে গৃহীত হবে!

ধন্যবাদ.

d <- c(80,  80,  121, 121, 180, 180, 86,  86,  116, 116, 144, 144, 74,  74, 143, 143, 163, 163, 71, 71,106, 106, 135, 135, 162, 162, 185, 185, 83,  83,  111, 111, 133, 133, 175, 175, 85,  85,  112, 112,137, 137, 168, 168, 186, 186, 64,  64,  95,  95,  127, 127, 156, 156, 175, 175, 91,  91, 119, 119,120, 120, 148, 148, 56, 56)
df <- as.factor(d)
d.sq <- d^2
st <- factor(rep(c("A", "B", "C", "D", "E", "F"), c(6,12,18,10,14,6)))
s.bee <- c(1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,5,0,0,2,0,50,0,10,0,4,0,47,3)
tmt <- factor(c("AF","C","C","AF","AF","C","AF","C","AF","C","C","AF","AF","C","AF","C","AF","C","AF","C",
"C","AF","AF","C","AF","C","C","AF","AF","C","AF","C","AF","C","AF","C","AF","C","AF","C",
"C","AF","AF","C","AF","C","AF","C","AF","C","C","AF","C","AF","C","AF","AF","C","AF","C",
"AF","C","AF","C","AF","C"))
lu <- factor(rep(c("p","a","p","a","p"), c(6,12,28,14,6)))
hab <- rep(c(13,14,13,14,3,4,3,4,3,4,3,4,3,4,15,35,37,35,37,35,37,35,37,0,2,1,2,1,2,1), 
        c(1,2,2,1,1,1,1,2,2,1,1,1,1,1,18,1,1,1,2,2,1,1,1,14,1,1,1,1,1,1))
ba <-  c(480,6520,6520,480,480,6520,855,1603,855,1603,1603,855,855,12526,855,5100,855,5100,2670,7679,7679,2670,
2670,7679,2670,7679,7679,2670,2670,7679,2670,7679,2670,7679,2670,7679,1595,3000,1595,3000,3000,1595,1595,3000,1595
,3000,4860,5460,4860,5460,5460,4860,5460,4860,5460,4860,4840,5460,4840,5460,3000,1410,3000,1410,3000,1410)
data <- data.frame(st,df,d.sq,tmt,lu,hab,ba,s.bee)
with(data, table(s.bee, tmt) )

# below is a much abbreviated summary of attempted models:

library(MASS)
library(lme4)
library(glmmADMB)
library(coefplot2)

###
### POISSON MIXED MODEL

    m1 <- glmer(s.bee ~ tmt + lu + hab + (1|st/df), family=poisson)
    summary(m1)

    resdev<-sum(resid(m1)^2)
    mdf<-length(fixef(m1)) 
    rdf<-nrow(data)-mdf
    resdev/rdf
# 0.2439303
# underdispersed. ???



###
### NEGATIVE BINOMIAL MIXED MODEL

    m2 <- glmer.nb(s.bee ~ tmt + lu + hab + d.sq + (1|st/df))
# iteration limit reached. Can't make a model work.



###
### ZERO-INFLATED POISSON MIXED MODEL

    fit_zipoiss <- glmmadmb(s.bee~tmt + lu + hab + ba + d.sq +
                    tmt:lu +
                    (1|st/df), data=data,
                    zeroInflation=TRUE,
                    family="poisson")
# has to have lots of variables to fit
# anyway Poisson is not a good fit



###
### ZERO-INFLATED NEGATIVE BINOMIAL MIXED MODELS

## BEST FITTING MODEL SO FAR:

    fit_zinb <- glmmadmb(s.bee~tmt + lu + hab +
                    tmt:lu +
                    (1|st/df),data=data,
                    zeroInflation=TRUE,
                    family="nbinom")
    summary(fit_zinb)
# coefficients are tiny, something odd going on with the interaction term
# but this was best model in AICctab comparison

# model check plots
    qqnorm(resid(fit_zinb))
    qqline(resid(fit_zinb))

    coefplot2(fit_zinb)

    resid_zinb <- resid(fit_zinb , type = "pearson")
    hist(resid_zinb)

    fitted_zinb <- fitted (fit_zinb)
    plot(resid_zinb ~ fitted_zinb)


## MODEL WITHOUT INTERACTION TERM - the coefficients are more realistic:

    fit_zinb2 <- glmmadmb(s.bee~tmt + lu + hab +
                    (1|st/df),data=data,
                    zeroInflation=TRUE,
                    family="nbinom")

# model check plots
    qqnorm(resid(fit_zinb2))
    qqline(resid(fit_zinb2))

    coefplot2(fit_zinb2)

    resid_zinb2 <- resid(fit_zinb2 , type = "pearson")
    hist(resid_zinb2)

    fitted_zinb2 <- fitted (fit_zinb2)
    plot(resid_zinb2 ~ fitted_zinb2)



# ZINB models are best so far
# but I'm not happy with the model check plots

2
আমি জানি যে এটি একটি খুব পুরানো পোস্ট এবং সম্ভবত এখন সুপার অপ্রাসঙ্গিক, তবে আমি জোর দিয়ে বলতে চাই যে আমার সাম্প্রতিক সমস্যাটি পাওয়া আমার একই অভিজ্ঞতার সাথে, গ্লিমার অবশিষ্টাংশগুলি সাধারণত বিতরণ করার দরকার নেই। সুতরাং, স্বাভাবিকতার উপর চেক পাশাপাশি লাগানো বনাম অবশিষ্টাংশগুলির একটি চেক আসলেই প্রয়োজনীয় নয়। সাধারণত, গ্লমারগুলির অবশিষ্ট প্লটগুলি নির্ণয় করা অবিশ্বাস্যরকম কঠিন।
fsociversity

উত্তর:


2

এই পোস্টটি চার বছর আছে, কিন্তু fsocity একটি মন্তব্যে কি বলে আমি তা অনুসরণ করতে চেয়েছিলাম। জিএলএমএমগুলিতে অবশিষ্টাংশগুলির নির্ণয়টি সোজা নয়, যেহেতু স্ট্যান্ডার্ড রেসিডুয়াল প্লটগুলি অ-স্বাভাবিকতা, ভিন্ন ভিন্ন ভিন্নতা প্রদর্শন করতে পারে, এমনকি মডেলটি সঠিকভাবে নির্দিষ্ট করা থাকলেও। একটি আর প্যাকেজ রয়েছে, DHARMaবিশেষত এই ধরণের মডেলগুলি নির্ণয়ের জন্য উপযুক্ত।

প্যাকেজটি ফিটযুক্ত জেনারেলাইজড লিনিয়ার মিশ্রিত মডেলগুলি থেকে স্কেলড রেসিডুয়ালগুলি তৈরির জন্য একটি সিমুলেশন পদ্ধতির উপর ভিত্তি করে তৈরি করা হয় এবং বিভিন্ন সহজে ব্যাখ্যাযোগ্য ডায়াগোনস্টিক প্লট তৈরি করে। মূল পোস্ট এবং প্রথম লাগানো মডেল (এম 1) এর ডেটা সহ এখানে একটি ছোট উদাহরণ রয়েছে:

library(DHARMa)
sim_residuals <- simulateResiduals(m1, 1000)
plotSimulatedResiduals(sim_residuals)

DHARMa অবশিষ্টাংশ প্লট

বাম দিকের প্লটটি প্রত্যাশিত বিতরণ থেকে বিচ্যুতি সনাক্ত করতে স্কেলযুক্ত অবশিষ্টাংশগুলির একটি কিউকিউ প্লট দেখায় এবং ডানদিকে প্লটটি অবিচ্ছিন্নতা থেকে বিচ্যুতি সনাক্ত করতে কোয়ান্টাইল রিগ্রেশন সম্পাদন করার সময় পূর্বাভাসিত মানগুলিকে উপস্থাপন করে (লাল রেখাগুলি অনুভূমিক এবং 0.25 এ থাকা উচিত) , 0.50 এবং 0.75)।

অতিরিক্তভাবে, প্যাকেজটির মধ্যে অন্যদের মধ্যে / অধীনে ছড়িয়ে পড়া এবং শূন্য মূল্যস্ফীতি পরীক্ষা করার জন্য নির্দিষ্ট কার্য রয়েছে:

testOverdispersionParametric(m1)

Chisq test for overdispersion in GLMMs

data:  poisson
dispersion = 0.18926, pearSS = 11.35600, rdf = 60.00000, p-value = 1
alternative hypothesis: true dispersion greater 1

testZeroInflation(sim_residuals)

DHARMa zero-inflation test via comparison to expected zeros with 
simulation under H0 = fitted model


data:  sim_residuals
ratioObsExp = 0.98894, p-value = 0.502
alternative hypothesis: more
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.