আর-তে লিনিয়ার মিশ্রিত প্রভাবগুলির রিগ্রেশন


14

আশ্চর্যজনকভাবে, আমি গুগল ব্যবহার করে নিম্নলিখিত প্রশ্নের উত্তর খুঁজে পেতে অক্ষম:

আমার কাছে বেশ কয়েকটি ব্যক্তির কিছু জৈবিক তথ্য রয়েছে যা সময়মতো সিগময়েড বৃদ্ধির আচরণ দেখায় behavior সুতরাং, আমি এটি একটি আদর্শ লজিস্টিক বৃদ্ধি ব্যবহার করে মডেল করতে চাই

P(t) = k*p0*exp(r*t) / (k+p0*(exp(r*t)-1))

p0 টি = 0 এ আরম্ভ মান হিসাবে, কে- টি-> অসীমের দিকে অ্যাসিম্পটিক সীমা এবং r গতিবেগের গতি। আমি যতদূর দেখতে পাচ্ছি, আমি সহজেই এনএলএস ব্যবহার করে এটির মডেল করতে পারি (আমার দিক থেকে বোঝার অভাব: আমি কেন সময় এবং ডেটা স্কেল করে স্ট্যান্ডার্ড লজিট রিগ্রেশন ব্যবহার করে অনুরূপ কিছু মডেল করতে পারি না? সম্পাদনা: ধন্যবাদ নিক, দৃশ্যত লোকেরা উদাহরণস্বরূপ এটি করে অনুপাত, কিন্তু খুব কমই http://www.stata-jorter.com/article.html?article=st0147 । এই স্পর্শকটির পরবর্তী প্রশ্নটি হবে যদি মডেলটি সম্ভবত বিদেশী> 1) পরিচালনা করতে পারে।

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

nlme(y ~ k*p0*exp(r*t) / (k+p0*(exp(r*t)-1)), ## not working at all (bad numerical properties?)
            data = data,
            fixed = k + p0 + r ~ var1 + var2,
            random = k + p0 + r ~ 1|UID,
            start = c(p0=1, k=100, r=1))

nlme(y ~ SSlogis(t, Asym, xmid, scal), ## not working, as start= is inappropriate
            data = data,
            fixed = Asym + xmid + scal ~ var1 + var2, ## works fine with ~ 1
            random = Asym + xmid + scal ~ 1|UID,
            start = getInitial(y ~ SSlogis(Dauer, Asym, xmid, scal), data = data))

যেহেতু আমি বিশেষত এবং অ-রৈখিক মডেলগুলিতে বিশেষত অ-রৈখিক মিশ্র মডেলগুলিতে নতুন, আমি কিছু পড়ার সুপারিশগুলি বা নবাগত প্রশ্নের সাথে টিউটোরিয়াল / এফএকিউগুলির লিঙ্কগুলির প্রশংসা করব।


2
আপনি যদি কে হিসাবে পরিচিত হিসাবে বিবেচনা করেন, আপনি আপনার জনসংখ্যা পি / কে দিয়ে স্কেল করতে পারেন। যদি কে কিছু অনুমান করার মতো হয় তবে এর একার অর্থ হ'ল আপনার সমস্যাটি স্ট্যান্ডার্ড লজিট রিগ্রেশন নয়।
নিক কক্স

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

3
ধারাবাহিক অনুপাতে থাকা প্রতিক্রিয়াগুলির জন্য লগইট মডেলিং কিছু সময়ের জন্য রয়েছে তবে মনে হয় এটি সুপরিচিত নয়। উদাহরণস্বরূপ stata-jorter.com/sjpdf.html?articlenum=st0147 বাউমে দেখুন তবুও এটি আপনার পরিস্থিতি নয়। আমি আর বাস্তবায়নের বিষয়ে মন্তব্য করতে পারি না।
নিক কক্স

ধন্যবাদ নিককে এই আকর্ষণীয় লিঙ্কটির জন্য - যা আমার জন্য কয়েকটি জিনিস পরিষ্কার করে দেয়। দুঃখের বিষয়, দেখে মনে হচ্ছে আমি এখনও আপনার প্রতিক্রিয়াটিকে সমর্থন করতে পারি না। (কেস মানুষ সরাসরি লিঙ্ক অ্যাক্সেস সমস্যায় পড়লে, নিম্নলিখিত আমার জন্য কাজ: stata-journal.com/article.html?article=st0147 )
রব হলের

1
লজিস্টিক বৃদ্ধি একঘেয়ে উঠা বক্র বোঝায়। যদি ডেটা মেলে না, আপনি যা করছেন ঠিক তার উপর নির্ভর করে আপনি একটি দুর্বল ফিট পাবেন বা সফ্টওয়্যারটি খেলবে না।
নিক কক্স

উত্তর:


12

এই প্রশ্নটি জিজ্ঞাসা করার পরে আমি কিছু শিখেছি এমন জিনিসগুলি ভাগ করে নিতে চাই। এনএলএম आर-তে অ-রৈখিক মিশ্র প্রভাবগুলি মডেল করার পক্ষে যুক্তিযুক্ত উপায় বলে মনে হচ্ছে a একটি সাধারণ বেস মডেল দিয়ে শুরু করুন:

library(nlme)
data <- groupedData(y ~ t | UID, data=data) ## not strictly necessary
initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)
baseModel<- nlme(y ~ SSlogis(t, Asym, xmid, scal),
    data = data,
    fixed = list(Asym ~ 1, xmid ~ 1, scal ~ 1),
    random = Asym + xmid + scal ~ 1|UID,
    start = initVals
)

তারপরে মডেলের জটিলতা বাড়াতে আপডেট ব্যবহার করুন। প্রারম্ভিক প্যারামিটারটি কাজ করার জন্য কিছুটা জটিল, ক্রমটি বের করতে কিছুটা ঝুঁকি নিতে পারে। অসমটিতে ভার 1 এর জন্য নতুন স্থিত প্রভাব কীভাবে অসিমের জন্য নিয়মিত স্থির প্রভাব অনুসরণ করে তা নোট করুন।

 nestedModel <- update(baseModel, fixed=list(Asym ~ var1, xmid ~ 1, scal ~ 1), start = c(fixef(baseModel)[1], 0, fixef(baseModel)[2], fixef(baseModel)[3]))

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

library(lme4) ## careful loading nlme and lme4 concurrently
customLogitModel <- function(t, Asym, AsymVar1, xmid, scal) {
    (Asym+AsymVar1*var1)/(1+exp((xmid-t)/scal))
}

customLogitModelGradient <- deriv(
    body(customLogitModel)[[2]], 
    namevec = c("Asym", "AsymVar1", "xmid", "scal"), 
    function.arg=customLogitModel
)

## find starting parameters
initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)

# Fit the model
model <- nlmer(
    y ~ customLogitModelGradient(t=t, Asym, AsymVar1, xmid, scal, var1=var) ~ 
    # Random effects with a second ~
    (Asym | UID) + (xmid | UID) + (scal | UID), 
    data = data, 
    start = c(Asym=initVals[1], AsymVar1=0, xmid=initVals[2], scal=initVals[3])
)

1
আপনার পোস্টের জন্য আপনাকে রবকে ধন্যবাদ জানাই, এটি আসলে আমার ডেটা নিয়ে করার চেষ্টা করছি। আমি বুঝতে পারি না অসিমের নেস্টেডমোডেলে ভার 1 কী এবং আপনি এটি কীভাবে গণনা করেছেন?

এটি অসমের উপর কিছু পরিবর্তনশীলের প্রভাবকে কীভাবে অন্তর্ভুক্ত করা যায় তার একটি উদাহরণ: "নিম্নলিখিতটি অসমের উপর ভার 1 (বাইনারি) এর একটি নির্দিষ্ট প্রভাব সহ লজিস্টিক বৃদ্ধি মডেল।" উদাহরণস্বরূপ, আপনার ভেরিয়েবল "ট্রিটেড" রয়েছে যার দুটি মান 0 এবং 1 রয়েছে, সুতরাং "ট্রি 1" "var1" এর বিকল্প দিন।
PA6OTA
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.