কিভাবে মিশ্র লিনিয়ার মডেলটিতে বহুবিধ লাইনটি পরীক্ষা এবং এড়ানো যায়?


25

আমি বর্তমানে কয়েকটি মিশ্র প্রভাব লিনিয়ার মডেল চালাচ্ছি।

আমি আর তে প্যাকেজ "lme4" ব্যবহার করছি

আমার মডেলগুলি ফর্মটি গ্রহণ করে:

model <- lmer(response ~ predictor1 + predictor2 + (1 | random effect))

আমার মডেলগুলি চালানোর আগে, আমি ভবিষ্যদ্বাণীকারীদের মধ্যে সম্ভাব্য বহুবিধ লাইনটি পরীক্ষা করেছিলাম।

আমি এটি দ্বারা:

ভবিষ্যদ্বাণীকারীদের একটি ডেটা ফ্রেম তৈরি করুন

dummy_df <- data.frame(predictor1, predictor2)

ভবিষ্যদ্বাণীকারীদের মধ্যে পিয়ারসন পারস্পরিক সম্পর্কের গণনা করতে "কর" ফাংশনটি ব্যবহার করুন।

correl_dummy_df <- round(cor(dummy_df, use = "pair"), 2) 

যদি "correl_dummy_df" ০.৮০ এর চেয়ে বেশি হয়, তবে আমি সিদ্ধান্ত নিয়েছিলাম যে প্রিডিক্টর 1 এবং প্রেডিকটার 2 খুব বেশি সম্পর্কযুক্ত এবং সেগুলি আমার মডেলগুলিতে অন্তর্ভুক্ত ছিল না।

কিছু পঠন করার সময়, বহুবিধরেখা পরীক্ষা করার আরও উদ্দেশ্যমূলক উপায়গুলি উপস্থিত হতে পারে।

কারও কি এ সম্পর্কে কোন পরামর্শ আছে?

"ভেরিয়েন্স ইনফ্লেশন ফ্যাক্টর (ভিআইএফ)" মনে হচ্ছে একটি বৈধ পদ্ধতির মতো।

ভিএডিএইডি প্যাকেজের "করভিফ" ফাংশন (নন-ক্র্যান) ব্যবহার করে গণনা করা যায়। প্যাকেজটি http://www.highstat.com/book2.htm এ পাওয়া যাবে । প্যাকেজ নিম্নলিখিত বই সমর্থন করে:

জুয়ার, এএফ, আইএনো, এএন, ওয়াকার, এন।, সাভেলিভ, এএ এবং স্মিথ, জিএম ২০০৯ R আর, প্রথম সংস্করণ সহ বাস্তুশাস্ত্রে মিশ্রিত প্রভাব মডেল এবং এক্সটেনশন। স্প্রিংগার, নিউ ইয়র্ক।

থাম্বের একটি সাধারণ নিয়মের মতো দেখে মনে হচ্ছে ভিআইএফ> 5 হয় তবে ভবিষ্যদ্বাণীকারীদের মধ্যে বহুবিধ লম্বা হয়।

ভিআইএফ ব্যবহার করা কি পিয়ারসন পারস্পরিক সম্পর্কের চেয়ে বেশি শক্তিশালী?

হালনাগাদ

আমি এখানে একটি আকর্ষণীয় ব্লগ পেয়েছি:

http://hlplab.wordpress.com/2011/02/24/diagnosing-collinearity-in-lme4/

Lme4 প্যাকেজ থেকে মডেলগুলির জন্য ভিআইএফ গণনা করার জন্য ব্লগার কিছু দরকারী কোড সরবরাহ করে।

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


6
(1) AEDপ্যাকেজ বন্ধ করা হয়েছে ; পরিবর্তে, শুধু source("http://www.highstat.com/Book2/HighstatLibV6.R")জন্য corvifফাংশন। (২) সত্যিকারের জবাব দেওয়ার আশাবাদী, তবে (ক) আমি বিশ্বাস করি ভিআইএফ বহু বহুবিশ্লেষকে বিবেচনায় নিয়েছে (উদাহরণস্বরূপ আপনার তিনটি ভবিষ্যদ্বাণী থাকতে পারে যার কোনওটিরই শক্তিশালী জোড়যুক্ত সম্পর্ক নেই, তবে এ এবং বি এর রৈখিক সংমিশ্রণ সি এর সাথে দৃ strongly়ভাবে সম্পর্কযুক্ত) ) এবং (খ) কলিনারি শর্তগুলি বাদ দেওয়ার প্রজ্ঞা সম্পর্কে আমার দৃ strong় সংরক্ষণ রয়েছে; গ্রাহাম ইকোলজি 2003 দেখুন, ডয়ি: 10.1890 / 02-3114
বেন বলকার

ধন্যবাদ বেন আপনার পরামর্শগুলি অন্তর্ভুক্ত করতে আমি আমার উপরের পোস্টটি আপডেট করেছি।
এমজেবার্নস

@ বেনবোলকার, আপনি খুব সংক্ষেপে ব্যাখ্যা করতে পারেন যে আপনি কোলাইনারি শর্তগুলি বাদ দেওয়ার পক্ষে কেন? আমি রেফারেন্সটির প্রশংসা করি তবে ক্লিফ নোট সংস্করণটিও পছন্দ করতে পারে। ধন্যবাদ!
বাজকজ

বেনের প্রতিক্রিয়ায় সংশোধন .. URL টি হলhttp://highstat.com/Books/BGS/GAMM/RCodeP2/HighstatLibV6.R
মনোজ কুমার

উত্তর:


10

ভিআইএফ গণনার জন্য ইউএসডিএম প্যাকেজও হতে পারে (আমাকে "ইউএসডিএম" ইনস্টল করতে হবে)

library(usdm)
df = # Data Frame
vif(df)

যদি ভিআইএফ> ৪.০ তবে আমি সাধারণত বহুমুখীরেখাটি আমার মডেলটিতে ফিট করার আগে সেই সমস্ত ভবিষ্যদ্বাণীী ভেরিয়েবলগুলি অপসারণ করে নিই


একটি বিট সংযোজন আপনি ফিল্টার ভেরিয়েবল thresold ব্যবহার করতে পারেন উপরে যে সব প্রদর্শনী পারস্পরিক সম্পর্ক অগ্রাহ্য পছন্দ .4হিসাবে vifcor(vardata,th=0.4)। একইভাবে আপনি vifstep(vardata,th=10)10 এর চেয়েও বড়
সমস্তটি

এইচএলএম
মোক্স

7

একটি আপডেট, যেহেতু আমি এই প্রশ্নটি দরকারী বলে মনে করি কিন্তু মন্তব্যগুলি যোগ করতে পারি না -

Zuur এট থেকে কোড (২০০৯) পরিপূরক সামগ্রীর মাধ্যমে পরবর্তীতে (এবং খুব দরকারী) ইকোলজি এবং ইভোলিউশনের পদ্ধতি পদ্ধতিতে তাদের জার্নালে প্রকাশিত হয় ।

কাগজ - সাধারণ পরিসংখ্যানগত সমস্যা এড়ানোর জন্য ডেটা অনুসন্ধানের জন্য একটি প্রোটোকল - ভিআইএফ থ্রেশহোল্ডগুলি ন্যায়সঙ্গত করার জন্য দরকারী পরামর্শ এবং অনেক প্রয়োজনীয় রেফারেন্স সরবরাহ করে (তারা 3 এর প্রান্তিকের প্রস্তাব দেয়)। কাগজটি এখানে রয়েছে: http://onlinelibrary.wiley.com/doi/10.1111/j.2041-210X.2009.00001.x/ful এবং আর কোড পরিপূরক উপকরণ ট্যাবে রয়েছে (.zip ডাউনলোড)।

একটি দ্রুত নির্দেশিকা : নির্যাস ভ্যারিয়েন্স মুদ্রাস্ফীতি বিষয়গুলির (Vif) তাদের চালানোর HighStatLib.r কোড এবং ফাংশন ব্যবহার corvif। ফাংশনটির জন্য কেবল ভবিষ্যদ্বাণীকারীদের সাথে একটি ডেটা ফ্রেম প্রয়োজন (সুতরাং উদাহরণস্বরূপ, df = data.frame(Dataset[,2:4])যদি আপনার ডেটা 2 থেকে 4 কলামে ভবিষ্যদ্বাণীকারীদের সাথে ডেটাসেটে সঞ্চিত থাকে ।


1

হয়তো qr()ফাংশন কাজ করবে। যদি Xআপনার ডেটা ফ্রেম বা ম্যাট্রিক্স হয় তবে আপনি ব্যবহার করতে পারেন qr(X)$pivot। উদাহরণস্বরূপ, qr(X)$pivot= c(1, 2, 4, 5, 7, 8, 3, 6)তারপরে 3 এবং 6 কলামটি মাল্টিকোল্লিনিয়ার ভেরিয়েবল।


1

ড্রেজ ফাংশন (MuMIn প্যাকেজ) চলাকালীন ভবিষ্যদ্বাণীকারীদের মধ্যে বহুবিধ লাইন মূল্যায়ন করতে নিম্নলিখিত ম্যাক্স.আর ফাংশনটিকে "অতিরিক্ত" যুক্তি হিসাবে অন্তর্ভুক্ত করুন:

max.r <- function(x){
  corm <- cov2cor(vcov(x))
  corm <- as.matrix(corm)
  if (length(corm)==1){
    corm <- 0
    max(abs(corm))
  } else if (length(corm)==4){
  cormf <- corm[2:nrow(corm),2:ncol(corm)]
  cormf <- 0
  max(abs(cormf))
  } else {
    cormf <- corm[2:nrow(corm),2:ncol(corm)]
    diag(cormf) <- 0
    max(abs(cormf))
  }
}

তারপরে প্রেডেক্টর ভেরিয়েবলের সংখ্যা উল্লেখ করে এবং সর্বোচ্চ.আর ফাংশন সহ কেবল ড্রেজ চালান:

options(na.action = na.fail)
Allmodels <- dredge(Fullmodel, rank = "AIC", m.lim=c(0, 3), extra= max.r) 
Allmodels[Allmodels$max.r<=0.6, ] ##Subset models with max.r <=0.6 (not collinear)
NCM <- get.models(Allmodels, subset = max.r<=0.6) ##Retrieve models with max.r <=0.6 (not collinear)
model.sel(NCM) ##Final model selection table

এটি lme4 মডেলের জন্য কাজ করে। এনএলএম মডেলের জন্য দেখুন: https://github.com/rojaff/dredge_mc


1

ভিআইএফ (ভেরিয়েন্স মুদ্রাস্ফীতি ফ্যাক্টর) দ্বারা সহজেই মাপা যায়:

 library(car)
 vif(yourmodel) #this should work for lme4:lmer mixed models.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.