বিইউজিএস, জেএজিএস-এ ভারী সাধারণীকরণের আধিপত্য


10

ইন Rআমরা পারি "পূর্বে ওজন" একটি glmমাধ্যমে রিগ্রেশন ওজন প্যারামিটার। উদাহরণ স্বরূপ:

glm.D93 <- glm(counts ~ outcome + treatment, family = poisson(), weights=w)

এটি কোনও মডেল JAGSবা কীভাবে সম্পাদন করা যায় BUGS?

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


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

উত্তর:


7

দেরি হতে পারে ... তবে,

2 জিনিস নোট করুন:

  • ডেটা পয়েন্ট যুক্ত করার পরামর্শ দেওয়া হয় না কারণ এটি স্বাধীনতার ডিগ্রিগুলিকে পরিবর্তন করবে। স্থির প্রভাবের গড় অনুমানগুলি ভালভাবে অনুমান করা যায়, তবে এই জাতীয় মডেলগুলির সাথে সমস্ত অনুমান এড়ানো উচিত। আপনি যদি এটি পরিবর্তন করেন তবে "ডেটাতে কথা বলতে দেওয়া" শক্ত।
  • অবশ্যই এটি কেবল পূর্ণসংখ্যার মানযুক্ত ওজন নিয়ে কাজ করে (আপনি 0.5 ডাটা পয়েন্টটি নকল করতে পারবেন না) যা বেশিরভাগ ওজনযুক্ত (এলএম) রিগ্রেশন-এ করা হয় না। সাধারণভাবে, প্রতিরূপগুলি থেকে অনুমান করা স্থানীয় পরিবর্তনশীলতার উপর ভিত্তি করে একটি ওজন তৈরি করা হয় (যেমন 1 / s বা 1 / s ^ 2 প্রদত্ত 'x' তে) বা প্রতিক্রিয়ার উচ্চতার উপর ভিত্তি করে (যেমন 1 / Y বা 1 / Y ^ 2, এ) একটি প্রদত্ত 'x')।

জাগস, বাগস, স্টান, প্রোক এমসিএমসি বা সাধারণভাবে বয়েসিয়ান ভাষায়, সম্ভাবনা ঘন ঘন LML বা গ্ল্যাম (বা কোনও মডেল) এর চেয়ে আলাদা নয়, এটি ঠিক একই রকম !! আপনার প্রতিক্রিয়ার জন্য কেবল একটি নতুন কলাম "ওজন" তৈরি করুন, এবং সম্ভাবনাটি লিখুন

y [i] n dnorm (mu [i], তাউ / ওজন [i])

বা একটি ওজনযুক্ত পোষাক:

y [i] ~ dpois (ল্যাম্বডা [i] * ওজন [i])

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


যদি আমরা এটি বর্ণিত হিসাবে করি তবে আমরা গড় এবং ভিন্নতা পরিবর্তন করব। কেন এটি y [i] * ওজন [i] po ডিপোইস (ল্যাম্বডা [i] * ওজন [i]) নয়? এটি কেবল বৈকল্পিক সামঞ্জস্য করবে। এখানে সমস্যা হ'ল y [i] * ওজন [i] টাইপ রিয়েল হতে পারে।
ব্যবহারকারী 28937

প্রকৃতপক্ষে, ভারী প্রতিরোধের পরিবর্তনের অর্থ হ'ল (কারণ ওজনটি রিগ্রেশনকে সেই পয়েন্টগুলির নিকটে যেতে দেয় যেগুলি খুব বেশি ওজনযুক্ত!) এবং তারতম্য এখন ওজনগুলির একটি কার্য (তাই এটি কোনও হোমস্কেস্টেস্ট মডেল নয়)। ভেরিয়েন্স (বা যথার্থতা) এর আর কোনও অর্থ নেই, তবে তাউ / ওজন [i] মডেলের যথার্থতা হিসাবে প্রদত্ত (প্রদত্ত "এক্স") এর জন্য ঠিক ব্যাখ্যা করা যেতে পারে। আমি ওজনের দ্বারা ডেটা (y) এর গুণনের পরামর্শ দেব না ... আশা করি এটি যদি আপনি করতে চান এমন কিছু হয় তবে আমি আপনাকে এই ক্ষেত্রে মডেল বুঝতে পারি না ...
পিয়েরে লেব্রুন

আমি আপনার সাথে একমত হয়েছি এটি সাধারণ উদাহরণের অর্থ পরিবর্তন করে না: y [i] n dnorm (mu [i], তাউ / ওজন [i]), তবে লাম্বদা [i] * ওজন [যেহেতু এটি দ্বিতীয় ক্ষেত্রে আসে [ i] ডিপোইসের জন্য "নতুন" ল্যাম্বডায় পরিণত হয় এবং এটি আর y এর সাথে মেলে না [i]। আমাকে নিজেকে সংশোধন করতে হবে এটি হওয়া উচিত: ty [i] * exp (ওজন [i]) ~ dpois (ল্যাম্বদা [i] * ওজন [i])। পাইসনের ক্ষেত্রে গুণটির সাথে ধারণাটি হ'ল আমরা বৈকল্পিকটি সামঞ্জস্য করতে চাই, তবে গড়টিও সামঞ্জস্য করতে চাই, তাই আমাদের কী সংশোধন করার দরকার নেই?
ব্যবহারকারী 28937

আপনার যদি স্বতন্ত্রভাবে বৈকল্পিক সামঞ্জস্য করার প্রয়োজন হয় তবে পয়সনের পরিবর্তে কোনও নেতিবাচক দ্বিপদী মডেল কাজ করতে পারে? এটি পোয়েসনে ভেরিয়েন্স মুদ্রাস্ফীতি / ডিফ্লেশন প্যারামিটার যুক্ত করে। এটি বাদে এটি খুব অনুরূপ।
পিয়েরে লেবরুন

পিয়ের ভাল ধারণা। আমি লিঙ্কডে
বিতরণটির

4

প্রথমত, এটি glmবাইশিয়ান রিগ্রেশন সম্পাদন করে না এমনটি উল্লেখ করার মতো। 'ওজন' প্যারামিটারটি মূলত "পর্যবেক্ষণের অনুপাতের" জন্য একটি ছোট হাত, যা আপনার ডেটাसेटকে যথাযথভাবে স্যাম্পলিং দিয়ে প্রতিস্থাপন করা যেতে পারে। উদাহরণ স্বরূপ:

x=1:10
y=jitter(10*x)
w=sample(x,10)

augmented.x=NULL
augmented.y=NULL    
for(i in 1:length(x)){
    augmented.x=c(augmented.x, rep(x[i],w[i]))
    augmented.y=c(augmented.y, rep(y[i],w[i]))
}

# These are both basically the same thing
m.1=lm(y~x, weights=w)
m.2=lm(augmented.y~augmented.x)

সুতরাং জাগস বা বুগস-এর পয়েন্টগুলিতে ওজন যুক্ত করতে, আপনি উপরের মতো অনুরূপ ফ্যাশনে আপনার ডেটাসেটটি বাড়িয়ে নিতে পারেন।


2
এটি কাজ করবে না, ওজনগুলি যথাসম্ভব বাস্তব সংখ্যা, পূর্ণসংখ্যার নয়
কৌতূহলীয়

এটি আপনাকে পূর্ণসংখ্যার সাথে প্রায় অনুমান করা থেকে বিরত রাখে না। আমার সমাধানটি নিখুঁত নয়, তবে এটি প্রায় কাজ করে। উদাহরণস্বরূপ, প্রদত্ত ওজন (১/৩, ২/৩, ১), আপনি দুটি বিভাগের তৃতীয় এবং তৃতীয় শ্রেণীর তিনটির গুণক দ্বারা দ্বিতীয় শ্রেণির নমুনা নিতে পারেন।
ডেভিড মার্কস

0

উপরে মন্তব্য করার চেষ্টা করার চেষ্টা করা হয়েছে, তবে আমার প্রতিনিধি খুব কম।

উচিত

y[i] ~ dnorm(mu[i], tau / weight[i])

না

y[i] ~ dnorm(mu[i], tau * weight[i])

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

aggregated <- 
  data.frame(x=1:5) %>%
  mutate( y = round(2 * x + 2 + rnorm(length(x)) ),
          freq = as.numeric(table(sample(1:5, 100, 
                 replace=TRUE, prob=c(.3, .4, .5, .4, .3)))))
x <- aggregated$x
y <- aggregated$y
weight <- aggregated$freq
N <- length(y)

# via lm()
lm(y ~ x, data = aggregated, weight = freq)

এবং তুলনা

lin_wt_mod <- function() {

  for (i in 1:N) {
    y[i] ~ dnorm(mu[i], tau*weight[i])
    mu[i] <- beta[1] + beta[2] * x[i]
  }

  for(j in 1:2){
    beta[j] ~ dnorm(0,0.0001)
  }

  tau   ~ dgamma(0.001, 0.001)
  sigma     <- 1/sqrt(tau)
}

dat <- list("N","x","y","weight")
params <- c("beta","tau","sigma")

library(R2jags)
fit_wt_lm1 <- jags.parallel(data = dat, parameters.to.save = params,
              model.file = lin_wt_mod, n.iter = 3000, n.burnin = 1000)
fit_wt_lm1$BUGSoutput$summary

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