SAS PROC GLIMMIX কেন আমাকে দ্বিপদী গ্লিমের জন্য গ্ল্যামার (lme4) এর চেয়ে অনেক বেশি এলোমেলো giveাল দেয়?


12

আমি আর এর সাথে আরও পরিচিত একজন ব্যবহারকারী এবং প্রায় চার বছরের আবাসস্থল ভেরিয়েবলের জন্য প্রায় 35 জন ব্যক্তির জন্য এলোমেলো slালু (নির্বাচন সহগ) অনুমান করার চেষ্টা করছি। প্রতিক্রিয়ার পরিবর্তনশীল হ'ল কোনও অবস্থান "ব্যবহৃত" (1) বা "উপলব্ধ" (0) আবাস (নীচে "ব্যবহার") ছিল কিনা।

আমি একটি উইন্ডোজ -৪-বিট কম্পিউটার ব্যবহার করছি।

আর সংস্করণ ৩.১.০-তে, আমি নীচে ডেটা এবং এক্সপ্রেশন ব্যবহার করি। পিএস, টিএইচ, আরএস এবং এইচডাব্লু হ'ল স্থির প্রতিক্রিয়া (মানসম্পন্ন, আবাসস্থলের ধরণের পরিমাপের দূরত্ব)। lme4 ভি 1.1-7।

str(dat)
'data.frame':   359756 obs. of  7 variables:
 $ use     : num  1 1 1 1 1 1 1 1 1 1 ...
 $ Year    : Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 4 4 4 3 4 ...
 $ ID      : num  306 306 306 306 306 306 306 306 162 306 ...
 $ PS: num  -0.32 -0.317 -0.317 -0.318 -0.317 ...
 $ TH: num  -0.211 -0.211 -0.211 -0.213 -0.22 ...
 $ RS: num  -0.337 -0.337 -0.337 -0.337 -0.337 ...
 $ HW: num  -0.0258 -0.19 -0.19 -0.19 -0.4561 ...

glmer(use ~  PS + TH + RS + HW +
     (1 + PS + TH + RS + HW |ID/Year),
     family = binomial, data = dat, control=glmerControl(optimizer="bobyqa"))

গ্লোমার আমার কাছে স্থির প্রভাবগুলির জন্য প্যারামিটারের অনুমান দেয় যা আমার কাছে বোধগম্য হয় এবং এলোমেলো slালু (যা আমি প্রতিটি আবাসের ধরণের নির্বাচনের সহগ হিসাবে ব্যাখ্যা করি) যখন আমি গুণের সাথে ডেটা তদন্ত করি তখনও তা বোধগম্য হয়। মডেলটির লগ-সম্ভাবনা -3050.8।

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

যদিও বর্তমানে আর এই বিকল্পটি দিচ্ছে না (আমার জ্ঞানের কাছে - দয়া করে, আমি ভুল হলে আমাকে সংশোধন করুন), এসএএস করে - যদিও আমার এসএএসের অ্যাক্সেস নেই, তবে একজন সহকর্মী আমাকে স্ট্যান্ডার্ড ত্রুটিগুলি নির্ধারণ করার জন্য তার কম্পিউটার ধার নিতে দিতে সম্মত হন অভিজ্ঞতামূলক পদ্ধতি ব্যবহার করা হয় যখন উল্লেখযোগ্যভাবে পরিবর্তন।

প্রথমত, আমরা সুনিশ্চিত করেছিলাম যে মডেল-ভিত্তিক মানক ত্রুটিগুলি ব্যবহার করার সময়, এসএএস আর-তে অনুরূপ অনুমান তৈরি করবে - এটি নিশ্চিত হওয়ার জন্য যে উভয় প্রোগ্রামে একইভাবে মডেলটি নির্দিষ্ট করা হয়েছে। তারা ঠিক একই - ঠিক একই রকম কিনা তা আমি খেয়াল করি না। আমি চেষ্টা করেছি (এসএএস ভি 9.2):

proc glimmix data=dat method=laplace;
   class year id;
   model use =  PS TH RS HW / dist=bin solution ddfm=betwithin;
   random intercept PS TH RS HW / subject = year(id) solution type=UN;
run;title;

আমি লাইন যুক্ত করার মতো আরও বিভিন্ন রূপও চেষ্টা করেছিলাম

random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;

আমি উল্লেখ না করে চেষ্টা করেছি

solution type = UN,

বা মন্তব্য করা

ddfm=betwithin;

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

আমি আমার সম্পূর্ণ ডেটাসেট আপলোড করতে পারি না; সুতরাং আমি তিন জন ব্যক্তির কেবল রেকর্ড সহ একটি খেলনা ডেটাসেট তৈরি করেছি। এসএএস আমাকে কয়েক মিনিটের মধ্যে আউটপুট দেয়; আর এটি এক ঘন্টা সময় লাগে। রহস্যময়। এই খেলনা ডেটাসেটের সাহায্যে আমি এখন স্থির প্রভাবগুলির জন্য আলাদা আলাদা অনুমান পেয়ে যাচ্ছি।

আমার প্রশ্ন: কেন এলোমেলো slালু অনুমানগুলি আর আর এসএএসের মধ্যে এত আলাদা হতে পারে সে সম্পর্কে কেউ আলোকপাত করতে পারেন? আমার কোডটি সংশোধন করার জন্য আর, বা এসএএস-এ আমি করতে পারি এমন কিছু আছে যাতে কলগুলি একই রকম ফলাফল দেয়? আমি বরং এসএএস-তে কোড পরিবর্তন করব, যেহেতু আমার আর অনুমানটি আরও "বিশ্বাস করি"।

আমি এই পার্থক্যগুলির সাথে সত্যই উদ্বিগ্ন এবং এই সমস্যার তলদেশে যেতে চাই!

একটি খেলনা ডেটাসেট থেকে আমার আউটপুট যা আর এবং এসএএস-এর জন্য সম্পূর্ণ ডেটাসেটে 35 জন ব্যক্তির মধ্যে কেবল তিনটি জেপেইজ হিসাবে অন্তর্ভুক্ত রয়েছে।

আর আউটপুট এসএএস আউটপুট 1 এসএএস আউটপুট 2 এসএএস আউটপুট 3


সম্পাদনা এবং আপডেট:

যেহেতু @ জ্যাকওয়েস্টফল আবিষ্কার করতে সহায়তা করেছে, এসএএসের slালগুলি স্থির প্রভাবগুলিকে অন্তর্ভুক্ত করে না। আমি যখন স্থির প্রভাবগুলি যুক্ত করি, ফলাফল এখানে - একটি স্থিত প্রভাবের জন্য এস এস এস opালুগুলির সাথে আর slালগুলি তুলনা করা, "পিএস", প্রোগ্রামগুলির মধ্যে: (নির্বাচন সহগ = এলোমেলো opeাল)। এসএএস-এর বর্ধিত প্রকরণটি নোট করুন।

পি বনাম এস আর এস বনাম


আমি লক্ষ্য করেছি যে IDআর এর কোনও কারণ নয়; পরীক্ষা করুন এবং দেখুন যে এটি কিছু পরিবর্তন করে।
অ্যারন

আমি দেখতে পাচ্ছি যে লগ-সম্ভাবনার জন্য আপনি ল্যাপ্লেস অ্যাডেক্সিমেশন ব্যবহার করে উভয়ই ফিট করছেন। তাদের সম্পর্কিত লগ-সম্ভাবনা স্কোর কি?
usεr11852

1
আপনি কি পরীক্ষা করে দেখেছেন যে আপনি নির্ভরশীল পরিবর্তনশীলকে একই দিকে মডেলিং করছেন?
পিটার ফ্লুম - মনিকা পুনরায়

1
যাইহোক, পিটার যা পাচ্ছেন তা হ'ল ডিফল্টরূপে 0s এবং 1s হিসাবে লেবেলযুক্ত দ্বিপদী ডেটা দিয়ে , R"1" প্রতিক্রিয়া হওয়ার সম্ভাবনাটি মডেল করবে এবং এসএএস "0" প্রতিক্রিয়াটির সম্ভাবনা মডেল করবে। এসএএস মডেলটিকে "1" এর সম্ভাব্যতা তৈরি করতে আপনাকে আপনার প্রতিক্রিয়া হিসাবে পরিবর্তনশীল হিসাবে লিখতে হবে use(event='1')। অবশ্যই, এটি না করেও আমি বিশ্বাস করি যে আমাদের এখনও এলোমেলো প্রভাবের বৈকল্পিকগুলির একই অনুমানের পাশাপাশি একই চিহ্নগুলির বিপরীত হওয়া সত্ত্বেও একই স্থির প্রভাবের অনুমানের আশা করা উচিত।
জেক ওয়েস্টফল

1
@ এরিকাআন একটি জিনিস যা আপনি কেবল আমাকে স্মরণ করিয়ে দিয়েছিলেন তা হল যে আপনি এস থেকে এসএএস এ ranef()ফাংশনটি ব্যবহার না করে তার সাথে এলোমেলো প্রভাবগুলি তুলনা করুন coef()। পূর্ববর্তীটি প্রকৃত এলোমেলো প্রভাব দেয়, তবে পরেরটি এলোমেলো প্রভাবগুলি এবং নির্দিষ্ট-প্রভাব ভেক্টর দেয়। সুতরাং এটি কেন আপনার পোস্টে চিত্রিত সংখ্যাগুলি পৃথক করে তার অনেক কারণ, তবে এখনও যথেষ্ট পরিমাণে তাত্পর্য রয়েছে যা আমি সম্পূর্ণরূপে ব্যাখ্যা করতে পারি না।
জ্যাক ওয়েস্টফল

উত্তর:


11

জাং এট আল ২০১১ অনুসারে এটি প্যাকেজের মধ্যে এলোমেলো slালুগুলি একই রকম হওয়ার আশা করা উচিত ছিল না। তাদের গবেষণাপত্রে বিভিন্ন পরিসংখ্যান সংক্রান্ত প্যাকেজগুলি ব্যবহার করে বাইনারি প্রতিক্রিয়াগুলির জন্য ফিটিং জেনারেলাইজড লিনিয়ার মিক্সড-ইফেক্টস মডেলগুলিতে তাদের বর্ণনা রয়েছে:

সারাংশ:

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

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


দুঃখিত: একটি "স্ট্যান্ডার্ড স্ট্যান্ডার্ড ত্রুটি" কী? আপনি কি ভেরিয়েন্স উপাদানগুলির আদর্শ ত্রুটি বোঝাতে চান? অথবা আপনি স্যান্ডউইচ স্ট্যান্ডার্ড ত্রুটি বোঝাতে চান?
বেন বলকার

দুঃখিত ... এর অর্থ অনুপ্রেরণামূলক / স্যান্ডউইচ এসইএস। আমি আমার প্রতিক্রিয়া সম্পাদনা করেছি।
নোভা

@ বেনবোলকার এটি কি কখনও অন্তর্ভুক্ত হয়েছে?
লেপিডোপটারিস্ট

নাঃ। আমি কীভাবে এইভাবে উন্নয়নের পক্ষে সমর্থন করব তা
জানার

4

একটি উত্তর এবং মন্তব্য / আরও প্রশ্নের মিশ্রণ:

আমি 'খেলনা' ডেটা সেটটি তিনটি ভিন্ন অপ্টিমাইজারের পছন্দগুলির সাথে লাগিয়েছি। (* দ্রষ্টব্য 1: গ্রুপিং ভেরিয়েবলগুলি সাবমল করার পরিবর্তে প্রতি বছরের মধ্যে এবং আইডি থেকে সাবম্পল করে একটি ছোট ডেটা সেট করা তুলনামূলক উদ্দেশ্যে সম্ভবত সম্ভবত কার্যকর হবে it যেমনটি, আমরা জানি যে জিএলএমএম কার্য সম্পাদন করবে না বিশেষত খুব ভাল সংখ্যক গ্রুপিং ভেরিয়েবল স্তরের সংখ্যার সাথে আপনি এই জাতীয় কিছু মাধ্যমে এটি করতে পারেন:

library(plyr)
subdata <- ddply(fulldata,c("year","id"),
    function(x) x[sample(nrow(x),size=round(nrow(x)*0.1)),])

ব্যাচ ফিটিং কোড:

Ntoy <- readRDS("Newton_toy.RDS")
library(lme4)
fitfun <- function(opt) {
    tt <- system.time(fit1 <- glmer(use ~  ps + th + rs + hw +
                                    (1 + ps + th + rs + hw |id/year),
                                    family = binomial, data = Ntoy,
                                    control=glmerControl(optimizer=opt),
                                    verbose=100))
    return(list(time=tt,fit=fit1))
}

opts <- c("nloptwrap","nlminbwrap","bobyqa")
## use for() instead of lapply so we can checkpoint more easily
res <- setNames(vector("list",length(opts)),opts)
for (i in opts) {
    res[[i]] <- fitfun(i)
    save("res",file="Newton_batch.RData")
}

তারপরে আমি ফলাফলগুলিতে একটি নতুন অধিবেশনে পড়েছি:

load("Newton_batch.RData")
library(lme4)

অতিবাহিত সময় এবং বিচ্যুতি:

cbind(time=unname(sapply(res,function(x) x$time["elapsed"])),
          dev=sapply(res,function(x) deviance(x$fit)))
##                time      dev
## nloptwrap  1001.824 6067.706
## nlminbwrap 3495.671 6068.730
## bobyqa     4945.332 6068.731

এই বিচ্যুতিগুলি ওপেনটি আর (6101.7) থেকে উল্লিখিত বিচ্যুতিগুলির নীচে এবং এসএএস (6078.9) এর ওপি দ্বারা উল্লিখিতগুলির চেয়ে কিছুটা নীচে, যদিও প্যাকেজগুলির মধ্যে বিচ্যুতিগুলির তুলনা করা সর্বদা বোধগম্য নয়।

আমি সত্যিই অবাক হয়েছি যে এসএএস প্রায় 100 ফাংশন মূল্যায়নে রূপান্তরিত হয়েছিল!

টাইপসটি ম্যাকবুক প্রোতে 17 মিনিট ( nloptwrap) থেকে 80 মিনিট ( bobyqa) অবধি অপের অভিজ্ঞতার সাথে সামঞ্জস্য থাকে। বক্রতা একটু জন্য ভাল nloptwrap

round(cbind(sapply(res,function(x) fixef(x$fit))),3)
##             nloptwrap nlminbwrap bobyqa
## (Intercept)    -5.815     -5.322 -5.322
## ps             -0.989      0.171  0.171
## th             -0.033     -1.342 -1.341
## rs              1.361     -0.140 -0.139
## hw             -2.100     -2.082 -2.082

উত্তরগুলি এর সাথে বেশ আলাদাভাবে উপস্থিত হয় nloptwrap- যদিও স্ট্যান্ডার্ড ত্রুটিগুলি বেশ বড় ...

round(coef(summary(res[[1]]$fit)),3)
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -5.815      0.750  -7.750    0.000
## ps            -0.989      1.275  -0.776    0.438
## th            -0.033      2.482  -0.013    0.989
## rs             1.361      2.799   0.486    0.627
## hw            -2.100      0.490  -4.283    0.000

(এখানে কোড কিছু সতর্কতা দেয় year:idযা সম্পর্কে আমার অনুসরণ করা উচিত)

চলবে ... ?


আমি আপনাকে পুরো ডেটাसेट পাঠিয়ে দিলে কি আরও সহায়ক হবে? একমাত্র সমস্যা হ'ল সম্পূর্ণ ডেটাসেটের সাথে রূপান্তরটি প্রায় 9 ঘন্টা সময় নেয়, সুতরাং নমুনা সম্পর্কিত আপনার পরামর্শটি একটি ভাল। আমি লগের রূপান্তর দিয়ে ডেটাটি রূপান্তর করার চেষ্টা করেছি, তবে বিন্নিত অবশিষ্টাংশ প্লটটি এখনও কুৎসিত - আপনি কি ভাবেন যে অবশিষ্টাংশ প্লট এই ডেটাগুলির সাথে সমস্যার একটি অংশ ব্যাখ্যা করে? শেষ পর্যন্ত - এসএএস-এ আপনার ফলাফলগুলি কি আর এর মতো ছিল?
নোভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.