0 এবং 1 এর মধ্যে প্রতিক্রিয়ার ভেরিয়েবলের সাথে একটি মিশ্র মডেল কীভাবে ফিট করবেন?


15

আমি lme4::glmer()দ্বিপদী জেনারেলাইজড মিশ্র মডেল (জিএলএমএম) এর উপর নির্ভরশীল ভেরিয়েবলের সাথে ফিট করতে ব্যবহার করার চেষ্টা করছি যা বাইনারি নয়, তবে শূন্য এবং একের মধ্যে একটি অবিচ্ছিন্ন পরিবর্তনশীল। এই পরিবর্তনশীলটিকে কেউ সম্ভাবনা হিসাবে ভাবতে পারে; এটি আসলে হয় সম্ভাব্যতা হিসাবে প্রতিবেদন মানুষের বিষয় দ্বারা (একটি পরীক্ষা যে আমি সাহায্যের বিশ্লেষণ)। অর্থাত এটা না একটি "বিযুক্ত" ভগ্নাংশ, কিন্তু একটি ক্রমাগত পরিবর্তনশীল।

আমার glmer()কল প্রত্যাশার মতো কাজ করে না (নীচে দেখুন)। কেন? আমি কি করতে পারি?

পরে সম্পাদনা করুন: নীচের আমার উত্তরটি এই প্রশ্নের মূল সংস্করণটির চেয়ে বেশি সাধারণ, তাই আমি প্রশ্নটি আরও সাধারণ হতে পরিবর্তন করেছি।


আরো বিস্তারিত

স্পষ্টতই লিনিস্টিক রিগ্রেশন কেবল বাইনারি ডিভির জন্যই নয়, শূন্য থেকে একের মধ্যে অবিচ্ছিন্ন ডিভিও ব্যবহার করা সম্ভব। আসলে, আমি যখন দৌড়

glm(reportedProbability ~ a + b + c, myData, family="binomial")

আমি একটি সতর্কতা বার্তা পেয়েছি

Warning message:
In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

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

তবে, আমি আসলে যা ব্যবহার করতে চাই তা হ'ল

glmer(reportedProbability ~ a + b + c + (1 | subject), myData, family="binomial")

এটি আমাকে অভিন্ন সতর্কতা দেয়, একটি মডেল ফেরত দেয় তবে এই মডেলটি স্পষ্টভাবে খুব বেশি বন্ধ; স্থির প্রতিক্রিয়াগুলির অনুমানগুলি এর থেকে এবং বহু glm()-বিষয়-বিষয় থেকে খুব দূরে । (এবং আমাকে কলটিতে অন্তর্ভুক্ত glmerControl(optimizer="bobyqa")করা দরকার glmer, অন্যথায় এটি মোটেও রূপান্তরিত হয় না))


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

ধন্যবাদ। হ্যাঁ, আমি ডিভি লগইট করতে পারি এবং তারপরে গাউসিয়ান মিশ্র মডেল (ল্যামার) ব্যবহার করতে পারি, তবে এটিও এক ধরণের হ্যাক এবং আমি পড়েছি এটি প্রস্তাবিত নয়। আমি প্রতিটি পর্যবেক্ষণের জন্য এলোমেলো প্রভাব চেষ্টা করব! এই মুহুর্তে, আমি বিটা মিশ্র মডেলটি চেষ্টা করছি; lme4 এটি পরিচালনা করতে পারে না, তবে গ্ল্যামড এম এম বি এম করতে পারে। আমি যখন চালনা করি glmmadmb(reportedProbability ~ a + b + c + (1 | subject), myData, family="beta"), তখন আমি সঠিক ফিট এবং যুক্তিসঙ্গত আত্মবিশ্বাসের অন্তর পেতে পারি, তবে একটি রূপান্তর ব্যর্থ হয়েছে সতর্কতা: - / পুনরাবৃত্তির সংখ্যা কীভাবে বাড়ানো যায় তা নির্ধারণের চেষ্টা করছি। বিটা আমার পক্ষে কাজ করতে পারে কারণ আমার কাছে ডিভি = 0 বা ডিভি = 1 কেস নেই।
অ্যামিবা বলছেন মনিকাকে

আমি উজ্জ্বলতার জন্য জানি না তবে গ্ল্যামের জন্য এটি সহায়তা করতে পারে: stats.stackexchange.com/questions/164120/… :

1
@ অ্যারন: আমি + (1 | rowid)আমার উজ্জ্বল কলটিতে যুক্ত করার চেষ্টা করেছি এবং এটি আমার ওজন পছন্দের চেয়ে পৃথক স্থিতিশীল অনুমান এবং স্থিতিশীল আত্মবিশ্বাসের অন্তর পেয়েছে (আমি 100 এবং 500 চেষ্টা করেছি)। আমি লগিটে (রিপোর্টড প্রোব্যাবিলিটি) চালানোর চেষ্টাও করেছি এবং আমি প্রায় একই জিনিস পাই। সুতরাং উভয় সমাধান ভাল কাজ বলে মনে হচ্ছে! গ্ল্যামাডম্বের সাথে বিটা এমএম খুব ঘনিষ্ঠ ফলাফলও দেয় তবে কোনও কারণে পুরোপুরি রূপান্তর করতে ব্যর্থ হয় এবং চিরকালের জন্য চালাতে লাগে। এই বিকল্পগুলির তালিকাভুক্ত করে একটি উত্তর পোস্ট করার এবং কিছুটা পার্থক্য এবং উপকারিতা / কনস ব্যাখ্যা করার জন্য বিবেচনা করুন! (আমি যে আত্মবিশ্বাসের ব্যবধানগুলি উল্লেখ করেছি সেগুলি সমস্ত ওয়াল্ড))
অ্যামিবা বলেছেন মনিকা পুনরায় স্থাপন করুন

1
এবং তারা 0.9 এর মতো তাদের মান সম্পর্কে একেবারে নিশ্চিত, বা এটিতেও কিছু '' 'ত্রুটি মার্জিন আছে'? আপনি কি ধরে নিতে পারেন যে বিভিন্ন বিষয়ে রিপোর্ট করা আত্মবিশ্বাস একইভাবে সুনির্দিষ্ট?

উত্তর:


21

এলোমেলো প্রভাবের কোনও সহজ কেস দিয়ে শুরু করা অর্থবোধ করে।

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

  1. পি=মি/এনএনnএন

    glm(p ~ a+b+c, myData, family="binomial", weights=n)
  2. পিপি01

    betareg(p ~ a+b+c, myData)
  3. লজিট প্রতিক্রিয়ার রূপান্তর করে এবং লিনিয়ার রিগ্রেশন ব্যবহার করে। এটি সাধারণত পরামর্শ দেওয়া হয় না।

    lm(log(p/(1-p)) ~ a+b+c, myData)
  4. একটি দ্বিপদী মডেল ফিট করুন কিন্তু তারপরে অ্যাকাউন্টে অতিরিক্ত-ছত্রাক গ্রহণের ক্ষেত্রে মানক ত্রুটিগুলি গণনা করুন। স্ট্যান্ডার্ড ত্রুটিগুলি বিভিন্ন উপায়ে গণনা করা যায়:

    • (ক) overdispersion অনুমান (মাধ্যমে মান ত্রুটি ছোটো এক , দুই )। একে "আধা-দ্বিপদী" জিএলএম বলা হয়।

    • (খ) স্যান্ডউইচ অনুমানের মাধ্যমে শক্তিশালী মান ত্রুটি ( এক , দুই , তিন , চার )। ইকোনোমেট্রিক্সে একে "ভগ্নাংশ লজিট" বলা হয়।


    (ক) এবং (খ) অভিন্ন নয় ( এই মন্তব্যটি দেখুন , এবং এই বইয়ের বিভাগগুলি 4.৪.১ এবং ৩.৪.২ , এবং এই এসও পোস্ট এবং এটিও এই এবং এটি একটি ) তবে একই রকম ফলাফল দেওয়ার ঝোঁক রয়েছে। বিকল্প (ক) glmনিম্নলিখিত হিসাবে প্রয়োগ করা হয়:

    glm(p ~ a+b+c, myData, family="quasibinomial")

এলোমেলো প্রভাব সহ একই চারটি উপায় উপলব্ধ।

  1. weightsযুক্তি ( এক , দুটি ) ব্যবহার করে :

    glmer(p ~ a+b+c + (1|subject), myData, family="binomial", weights=n)

    উপরের দ্বিতীয় লিঙ্ক অনুসারে, ওভারডিস্পেরেশন মডেল করা ভাল ধারণা হতে পারে, দেখুন এখানে (এবং নীচে # 4)।

  2. বিটা মিশ্র মডেল ব্যবহার:

    glmmadmb(p ~ a+b+c + (1|subject), myData, family="beta")

    অথবা

    glmmTMB(p ~ a+b+c + (1|subject), myData, 
            family=list(family="beta",link="logit"))

    প্রতিক্রিয়া ডেটাতে যদি সঠিক জিরো বা সেগুলি থাকে তবে একটিতে শূন্য / এক-স্ফীত বিটা মডেলটি ব্যবহার করতে পারেন glmmTMB

  3. প্রতিক্রিয়াটির লজিট ট্রান্সফর্ম ব্যবহার:

    lmer(log(p/(1-p)) ~ a+b+c + (1|subject), myData)
  4. দ্বিপদী মডেলে অতিমাত্রায় জড়িতদের জন্য অ্যাকাউন্টিং। এটি একটি পৃথক কৌশল ব্যবহার করে: প্রতিটি ডেটা পয়েন্টের জন্য এলোমেলো প্রভাব যুক্ত করে:

    myData$rowid = as.factor(1:nrow(myData))
    glmer(p ~ a+b+c + (1|subject) + (1|rowid), myData, family="binomial",
          glmerControl(optimizer="bobyqa"))

    কোনও কারণে এটি glmer()পূর্ণসংখ্যাবিহীন সম্পর্কে অভিযোগ হিসাবে সঠিকভাবে কাজ করে না pএবং আজেবাজে অনুমান দেয়। আমি যে সমাধানটি নিয়ে এসেছি তা হ'ল নকল ধ্রুবক ব্যবহার করা weights=kএবং p*kএটি সর্বদা পূর্ণসংখ্যার কিনা তা নিশ্চিত করা । এর জন্য গোলাকার প্রয়োজন pতবে kযথেষ্ট পরিমাণে নির্বাচন করে এটি বেশি গুরুত্ব পাবে না। ফলাফলগুলি মানটির উপর নির্ভর করে বলে মনে হয় না k

    k = 100
    glmer(round(p*k)/k ~ a+b+c + (1|subject) + (1|rowid), myData, 
          family="binomial", weights=rowid*0+k, glmerControl(optimizer="bobyqa"))

    পরবর্তী আপডেট (জানুয়ারী 2018): এটি একটি অবৈধ পন্থা হতে পারে। এখানে আলোচনা দেখুন । আমাকে আরও তদন্ত করতে হবে।


আমার নির্দিষ্ট ক্ষেত্রে বিকল্প 1 # পাওয়া যায় না।

বিকল্প # 2 খুব ধীর এবং রূপান্তর সংক্রান্ত সমস্যাগুলি রয়েছে: glmmadmbচালাতে পাঁচ-দশ মিনিট সময় লাগে (এবং এখনও অভিযোগ করে যে এটি রূপান্তরিত হয়নি!), যেখানে lmerবিভক্ত-সেকেন্ডে কাজ করে এবং glmerকয়েক সেকেন্ড সময় নেয়। আপডেট: আমি glmmTMB@ বেনবোলকারের মন্তব্যে প্রস্তাবিত হিসাবে চেষ্টা করেছি এবং glmerএটি কোনও রূপান্তর সমস্যা ছাড়াই প্রায় দ্রুত গতিতে কাজ করে । সুতরাং এই আমি ব্যবহার করা হবে কি।

বিকল্প # 3 এবং # 4 খুব একই ধরণের অনুমান এবং খুব একই ধরণের ওয়াল্ডের আত্মবিশ্বাসের অন্তর (এর সাথে প্রাপ্ত confint) দেয়। আমি # 3 এর কোনও বড় ভক্ত নই যদিও এটি প্রতারণার মতো। এবং # 4 কিছুটা কড়া মনে হচ্ছে।

@ অ্যারনকে প্রচুর ধন্যবাদ যিনি আমাকে তাঁর মন্তব্যে # 3 এবং # 4 এর দিকে নির্দেশ করেছেন।


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

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

1
আর একটি সম্ভাবনা হ'ল glmmTMB ব্যবহার করা ; সাথে ইনস্টল করার পরে devtools::install_github("glmmTMB/glmmTMB",sub="glmmTMB"), ব্যবহার করা glmmTMB(p ~ a+b+c + (1|subject), myData, family=list(family="beta",link="logit"))উচিত ...
বেন বলকার

@ বেনবোলকার ধন্যবাদ! GlmmADMB (বিটা মডেলগুলির জন্য) বা এর বিপরীতে glmmTMB পছন্দ করার কোনও কারণ আছে কি? এই প্যাকেজগুলির মধ্যে একটি আরও সাম্প্রতিক বা আরও সক্রিয়ভাবে বিকশিত হয়েছে? এগুলি ছাড়াও, আমি এই উত্তরের তালিকাভুক্তদের মধ্যে কোন পদ্ধতির বিষয়ে জিজ্ঞাসা করতে পারি - লাউজিট ট্রান্সফর্মের পরে গাউসিয়ান গ্লাম, বিটা গ্লাম, বা দ্বিপদী গ্লাম (1 | রোুইড) পদটি দিয়ে আপনি কি সাধারণত পছন্দনীয় বলে মনে করেন?
অ্যামিবা বলেছেন মনিকাকে

1
যদি সম্ভব হয় তবে আমি বিটা জিএলএমএমকে পছন্দ করি - এটি পরিসংখ্যানের মডেল যা কোভারিয়েটস / গ্রুপগুলিতে অনুপাতের পরিবর্তনগুলি পরিমাপ করার উদ্দেশ্যেglmmTMBতুলনায় দ্রুত এবং আরও স্থিতিশীল glmmADMBএবং অধীন (সামান্য) আরও সক্রিয় বিকাশ, যদিও এটি পরিপক্ক নয় not
বেন বলকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.