লজিস্টিক রিগ্রেশন মডেল কারসাজি


12

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

bglm <- function(Y,X) {
    # Y is a vector of binary responses
    # X is a design matrix

    fit <- glm.fit(X,Y, family = binomial(link = logit))
    beta <- coef(fit)
    fs <- summary.glm(fit)
    M <- t(chol(fs$cov.unscaled))
    betastar <- beta + M %*% rnorm(ncol(M))
    p <- 1/(1 + exp(-(X %*% betastar)))
    return(runif(length(p)) <= p)
}

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


এটি কোন ক্ষেত্রটি ব্যবহৃত হচ্ছে তা জানতে সম্ভবত অনেকটাই সহায়তা করবে ..
nnot101

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

আপনাকে স্বাগতম, @ সেল্লাজ। যেহেতু অন্য কেউ সাড়া দেয়নি, তাই আমি এটিকে 'অফিসিয়াল' উত্তরে পরিণত করব।
গুং - মনিকা পুনরায়

উত্তর:


7

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

* মনে রাখবেন যে ফাংশনটিতে ইনপুট দেওয়ার আগে আপনাকে ম্যাট্রিক্সের বামতম কলাম হিসাবে ম্যানুয়ালি ভেক্টর যুক্ত করতে হবে, যদি না আপনি ইন্টারসেপ্ট (যা সাধারণত ভাল ধারণা নয়) দমন করতে না চান।1এক্স

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

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

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

simulationParameters <- function(Y,X) {
                        # Y is a vector of binary responses
                        # X is a design matrix, you don't have to add a vector of 1's 
                        #   for the intercept

                        X    <- cbind(1, X)  # this adds the intercept for you
                        fit  <- glm.fit(X,Y, family = binomial(link = logit))
                        beta <- coef(fit)
                        fs   <- summary.glm(fit)
                        M    <- t(chol(fs$cov.unscaled))

                        return(list(betas=beta, uncertainties=M))
}

simulateY <- function(X, betas, uncertainties, ncolM, N){

             # X      <- cbind(1, X)  # it will be slightly faster if you input w/ 1's
             # ncolM  <- ncol(uncertainties) # faster if you input this
             betastar <- betas + uncertainties %*% rnorm(ncolM)
             p        <- 1/(1 + exp(-(X %*% betastar)))

             return(rbinom(N, size=1, prob=p))
}

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

@ হুবুহু, আমি সম্মত আমি প্রকৃতপক্ষে প্রস্তাব দেওয়ার কথা ভাবছিলাম যে অনুকরণের জন্য ব্যবহৃত হওয়ার আগে এই ফাংশনটি 2 টি বিভিন্ন ফাংশনে বিভক্ত করা উচিত, তবে মনে হয়নি এটি প্রশ্নের অংশ ছিল।
গুং - মনিকা পুনরায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.