একই গ্রুপে দুটি এলোমেলোভাবে আঁকা ইউনিটের মধ্যে প্রত্যাশিত পারস্পরিক সম্পর্ক হিসাবে আইসিসি


12

মাল্টিলেভেল মডেলিংয়ে ইন্ট্রাক্লাসের পারস্পরিক সম্পর্ক প্রায়শই এলোমেলো-প্রভাব এএনওভা থেকে গণনা করা হয়

yij=γ00+uj+eij

যেখানে স্তর -২ এর অবশিষ্টাংশ এবং the স্তর -1 এর অবশিষ্টাংশ। তারপরে আমরা যথাক্রমে এবং এর জন্য এবং এবং নীচের সমীকরণে প্লাগ করব:আমি σ 2 U σ 2 তোমার দর্শন লগ করা আমি ujeijσ^u2σ^e2ujeij

ρ=σ^u2σ^u2+σ^e2

হক্স (2002) p15 লিখেছেনঃ যে

ইন্ট্রাক্লাস পারস্পরিক সম্পর্ক একই গ্রুপে থাকা এলোমেলোভাবে আঁকা দুটি ইউনিটের মধ্যে প্রত্যাশিত পারস্পরিক সম্পর্ক হিসাবেও ব্যাখ্যা করা যেতে পারে

এখানে একটি প্রশ্ন রয়েছে যা একটি উন্নত প্রশ্ন জিজ্ঞাসা করে (কেন এটি প্রায় সমানের পরিবর্তে একেবারে সমান) এবং একটি উন্নত উত্তর পায়।

তবে, আমি একটি খুব সহজ প্রশ্ন জিজ্ঞাসা করতে ইচ্ছুক।

প্রশ্ন: এমনকি একই গ্রুপে থাকা এলোমেলোভাবে আঁকা দুটি ইউনিটের মধ্যে সম্পর্কের কথা বলার অর্থ কী?

আমার এই সত্যটি সম্পর্কে একটি প্রাথমিক উপলব্ধি আছে যে সংযোজন করা ডেটা নয় ইন্ট্রাক্লাস পারস্পরিক সম্পর্ক গ্রুপে কাজ করে। যাইহোক, আমি এখনও বুঝতে পারি না যে কীভাবে সম্পর্কটিকে গণনা করা যেতে পারে যদি আমাদের সমস্ত কিছু একই গ্রুপ থেকে এলোমেলোভাবে আঁকানো ইউনিট ছিল। আমি যদি আইসিসির উইকিপিডিয়া পৃষ্ঠায় ডট প্লটগুলি লক্ষ্য করি , উদাহরণস্বরূপ, প্রতিটি গ্রুপের মধ্যে আমাদের একাধিক গ্রুপ এবং একাধিক পয়েন্ট রয়েছে।

উত্তর:


10

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

dat <- read.table(header=TRUE, text = "
group person   y
1     1        5
1     2        6
2     1        3
2     2        2
3     1        7
3     2        9
4     1        2
4     2        2
5     1        3
5     2        5
6     1        6
6     2        9
7     1        4
7     2        2
8     1        8
8     2        7")

সুতরাং, আমাদের 8 টি গ্রুপ রয়েছে যার মধ্যে 2 জন ব্যক্তি রয়েছে। এবার আসুন এলোমেলো-প্রভাবগুলির আনোভা মডেলটি মাপসই:

library(nlme)
res <- lme(y ~ 1, random = ~ 1 | group, data=dat, method="ML")

এবং অবশেষে, আসুন গণনা করি আইসিসি:

getVarCov(res)[1] / (getVarCov(res)[1] + res$sigma^2)

এই ফলন: 0.7500003(এটি সঠিক হতে 0.75, তবে এখানে অনুমান পদ্ধতিতে কিছুটা সংখ্যাসূচক ছাপ রয়েছে)।

এখন আসুন লম্বা ফর্ম্যাট থেকে ডেটা প্রশস্ত বিন্যাসে পুনরায় আকার দিন:

dat <- as.matrix(reshape(dat, direction="wide", v.names="y", idvar="group", timevar="person"))

এখন এটি দেখতে দেখতে:

   group y.1 y.2
1      1   5   6
3      2   3   2
5      3   7   9
7      4   2   2
9      5   3   5
11     6   6   9
13     7   4   2
15     8   8   7

এবং এখন y.1এবং এর মধ্যে পারস্পরিক সম্পর্ক গণনা করুন y.2:

cor(dat[,2], dat[,3])

এই ফলন: 0.8161138

কিসের অপেক্ষা? এখানে কি হচ্ছে? এটি 0.75 হওয়া উচিত নয়? বেশ না! আমি উপরে যা গণনা করেছি তা আইসিসি ( ইন্ট্রাক্লাস পারস্পরিক সম্পর্ক সহগ) নয়, নিয়মিত পিয়ারসন পণ্য-মুহুর্তের পারস্পরিক সম্পর্ক সহগ, যা একটি আন্তঃক্লাসের সম্পর্কযুক্ত সহগ। নোট করুন যে দীর্ঘ-ফর্ম্যাট ডেটাতে, এটি সম্পূর্ণরূপে স্বেচ্ছাচারিত হয় কে ব্যক্তি 1 এবং কে ব্যক্তি 2 - জোড়গুলি বিন্যস্ত করা হয়। আপনি গ্রুপগুলির মধ্যে ডেটা রদবদল করতে পারেন এবং আপনি একই ফলাফল পাবেন। তবে প্রশস্ত-বিন্যাসের ডেটাগুলিতে কারা তালিকাভুক্ত y.1এবং কাদের অধীনে তালিকাভুক্ত হয়েছে তা স্বেচ্ছাচারিতা নয় y.2। আপনি যদি কিছু ব্যক্তির চারপাশে স্যুইচ করতে চান তবে আপনি একটি আলাদা পারস্পরিক সম্পর্ক পেতে পারেন (যদি আপনি তাদের সকলের চারপাশে স্যুইচ করতে চান তবে - এটি সমতুল্যcor(dat[,3], dat[,2])যা অবশ্যই আপনাকে দেয় 0.8161138)

ফিশার যা দেখিয়েছেন সেটি হচ্ছে বিস্তৃত বিন্যাসের ডেটা সহ আইসিসি পাওয়ার সামান্য কৌশল। উভয় অর্ডারে প্রতিটি জোড়া দু'বার অন্তর্ভুক্ত করুন এবং তারপরে পারস্পরিক সম্পর্ক গণনা করুন:

dat <- rbind(dat, dat[,c(1,3,2)])
cor(dat[,2], dat[,3])

এই উৎপাদ: 0.75

সুতরাং, যেমন আপনি দেখতে পাচ্ছেন, আইসিসি সত্যই একটি পারস্পরিক সম্পর্ক সহগ - একই গ্রুপের দুই ব্যক্তির "অকেজো" ডেটার জন্য।

যদি গ্রুপে দু'জনের বেশি ব্যক্তি থাকত তবে আপনি এখনও সেইভাবে আইসিসির কথা ভাবতে পারেন, বাদে দলে দলে ব্যক্তিদের জুড়ি তৈরির আরও উপায় থাকবে। আইসিসি হ'ল সম্ভাব্য জুটিগুলির মধ্যে পারস্পরিক সম্পর্ক (আবার অযাচিত পদ্ধতিতে)।


7

@ ওল্ফগ্যাং ইতিমধ্যে একটি দুর্দান্ত উত্তর দিয়েছে। আমি এটিতে আরও প্রসারিত করতে চাই যে আপনি তার উদাহরণস্বরূপ 0.75 এর আনুমানিক আইসিসিতে এসে পৌঁছাতে পারবেন আক্ষরিক অর্থে এলোমেলোভাবে মানগুলির অনেক জোড়া নির্বাচন করার স্বজ্ঞাত অ্যালগরিদম - যেখানে প্রতিটি জোড়ের সদস্যরা আসে একই গ্রুপ - এবং তারপরে কেবল তাদের পারস্পরিক সম্পর্ককে গণনা করা। এবং তারপরে এই একই পদ্ধতিটি যে কোনও আকারের গ্রুপ সহ ডেটাসেটগুলিতে সহজেই প্রয়োগ করা যেতে পারে, যেমন আমি এটিও দেখাব।y

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

get_random_pair <- function(df){
  # select a random row
  i <- sample(nrow(df), 1)
  # select a random other row from the same group
  # (the call to rep() here is admittedly odd, but it's to avoid unwanted
  # behavior when the first argument to sample() has length 1)
  j <- sample(rep(setdiff(which(dat$group==dat[i,"group"]), i), 2), 1)
  # return the pair of y-values
  c(df[i,"y"], df[j,"y"])
}

@ ওল্ফগ্যাংয়ের ডেটাসেটে আমরা যদি এই ফাংশনটি 10 ​​বার কল করি তবে আমরা কী পাব তার উদাহরণ এখানে রয়েছে:

test <- replicate(10, get_random_pair(dat))
t(test)
#       [,1] [,2]
#  [1,]    9    6
#  [2,]    2    2
#  [3,]    2    4
#  [4,]    3    5
#  [5,]    3    2
#  [6,]    2    4
#  [7,]    7    9
#  [8,]    5    3
#  [9,]    5    3
# [10,]    3    2

এখন আইসিসি অনুমান করার জন্য, আমরা কেবলমাত্র এই ফাংশনটিকে একটি বিশাল সংখ্যক বার বলি এবং তারপরে দুটি কলামের মধ্যে পারস্পরিক সম্পর্ক গণনা করি।

random_pairs <- replicate(100000, get_random_pair(dat))
cor(t(random_pairs))
#           [,1]      [,2]
# [1,] 1.0000000 0.7493072
# [2,] 0.7493072 1.0000000

এই একই পদ্ধতিটি কোনও আকারের গ্রুপ সহ ডেটাসেটগুলিতে কোনও পরিবর্তন ছাড়াই প্রয়োগ করা যেতে পারে। উদাহরণস্বরূপ, আসুন সত্যিকারের আইসিসি @ ওল্ফগ্যাংয়ের উদাহরণ অনুসারে ০.75৫ সেট রয়েছে, প্রতিটি প্রত্যক্ষ পর্যবেক্ষণের 100 টি গ্রুপের সমন্বয়ে একটি ডেটাসেট তৈরি করি।

set.seed(12345)
group_effects <- scale(rnorm(100))*sqrt(4.5)
errors <- scale(rnorm(100*100))*sqrt(1.5)
dat <- data.frame(group = rep(1:100, each=100),
                  person = rep(1:100, times=100),
                  y = rep(group_effects, each=100) + errors)

stripchart(y ~ group, data=dat, pch=20, col=rgb(0,0,0,.1), ylab="group")

এখানে চিত্র বর্ণনা লিখুন

মিশ্র মডেল থেকে বৈকল্পিক উপাদানগুলির উপর ভিত্তি করে আইসিসি অনুমান করা, আমরা পাই:

library("lme4")
mod <- lmer(y ~ 1 + (1|group), data=dat, REML=FALSE)
summary(mod)
# Random effects:
#  Groups   Name        Variance Std.Dev.
#  group    (Intercept) 4.502    2.122   
#  Residual             1.497    1.223   
# Number of obs: 10000, groups:  group, 100

4.502/(4.502 + 1.497)
# 0.7504584

এবং যদি আমরা এলোমেলো জোড় করার পদ্ধতিটি প্রয়োগ করি তবে আমরা পাই

random_pairs <- replicate(100000, get_random_pair(dat))
cor(t(random_pairs))
#           [,1]      [,2]
# [1,] 1.0000000 0.7503004
# [2,] 0.7503004 1.0000000

যা ঘনিষ্ঠভাবে বৈকল্পিক উপাদান অনুমানের সাথে একমত।

নোট করুন যে এলোমেলো জোড় করার পদ্ধতিটি এক ধরণের স্বজ্ঞাত এবং কার্যকরভাবে কার্যকর, তবে @ ওল্ফগ্যাং দ্বারা চিত্রিত পদ্ধতিটি আসলে অনেক বেশি স্মার্ট। এই আকারের ১০০ * ১০০ এর মতো একটি ডেটাসেটের জন্য, গ্রুপ-জুটির জোড়গুলির মধ্যে স্ব-জুটিগুলি অন্তর্ভুক্ত নয়) এটি ৫০৫,০০০ - একটি বড় তবে জ্যোতির্বিদ্যার সংখ্যা নয় - সুতরাং আমাদের পক্ষে পারস্পরিক সম্পর্ককে গণনা করা সম্পূর্ণভাবে সম্ভব ডেটাসেট থেকে এলোমেলোভাবে নমুনার প্রয়োজনের চেয়ে সমস্ত সম্ভাব্য জুটির সম্পূর্ণ ক্লান্ত সেট। যে কোনও আকারের গ্রুপগুলির সাথে সাধারণ কেসের জন্য সমস্ত সম্ভাব্য জুটিগুলি পুনরুদ্ধার করতে এখানে একটি ফাংশন রয়েছে:

get_all_pairs <- function(df){
  # do this for every group and combine the results into a matrix
  do.call(rbind, by(df, df$group, function(group_df){
    # get all possible pairs of indices
    i <- expand.grid(seq(nrow(group_df)), seq(nrow(group_df)))
    # remove self-pairings
    i <- i[i[,1] != i[,2],]
    # return a 2-column matrix of the corresponding y-values
    cbind(group_df[i[,1], "y"], group_df[i[,2], "y"])
  }))
}

এখন যদি আমরা এই ফাংশনটি 100 * 100 ডেটাসেটে প্রয়োগ করি এবং পারস্পরিক সম্পর্ক গণনা করি, আমরা পাই:

cor(get_all_pairs(dat))
#           [,1]      [,2]
# [1,] 1.0000000 0.7504817
# [2,] 0.7504817 1.0000000

যা অন্য দুটি অনুমানের সাথে ভালভাবে একমত এবং এলোমেলো জোড় পদ্ধতির তুলনায়, গণনা করা আরও দ্রুত এবং কম পার্থক্য থাকার দিক থেকে আরও কার্যকর অনুমানও হওয়া উচিত।

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