আর-তে কীভাবে কাস্টম বিপরীতে সেট করবেন


9

আমি condকোনও ফলাফলের শর্ত ( ) এর প্রভাব যাচাই করতে ল আর ইন লিম ব্যবহার করছি । এখানে কিছু গঠিত ডেটা, যেখানে গুলি বিষয় শনাক্তকারী এবং হয় a, bএবং cশর্ত আছে।

library("tidyr")
library("dplyr")
set.seed(123)
temp <- data.frame(s = paste0("S", 1:30), 
                   a = rnorm(30, -2, 1), 
                   b = rnorm(30, -3, 1), 
                   c = rnorm(30, -4, 1)) 

আমি তুলনা করতে চাই

  1. স্তর aস্তর bএবং cএবং
  2. স্তর bথেকে স্তর c

আমার প্রশ্ন হ'ল আমি কীভাবে এটির জন্য বৈসাদৃশ্যগুলি সেট করব যাতে ইন্টারসেপ্টটি তিনটি শর্তের গড় প্রতিফলন করে এবং দুটি গনিত অনুমান 1 এবং 2 এর সংজ্ঞা অনুসারে সরাসরি পার্থক্য প্রতিফলিত করে?

আমি চেষ্টা করেছিলাম

c1 <- cbind(c(-0.5, 0.25, 0.25), c(0, -0.5, 0.5))
gather(temp, cond, result, a, b, c) %>%
  lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c1))

যেখানে cond2ঠিক আছে বলে মনে হচ্ছে তবে cond1তা ঠিক নয়।

অনুসরণ করছেন কীভাবে এই কাস্টম বৈপরীত্য ব্যাখ্যা করা? , পরিবর্তে আমি সাধারণ বিপরীতটি ব্যবহার করার চেষ্টা করেছি, তবে এই অনুমানগুলিও বোঝা যায় না।

c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
  lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))

আমি হেলমার্টের বিপরীতে চেষ্টাও করেছি, তবে এর অর্থ এখনও মেলে না।

gather(temp, cond, result, a, b, c) %>%
  mutate(cond = factor(cond, levels = c("c", "b", "a"))) %>%
  lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = contr.helmert))

এটি করার সঠিক উপায় কী?


এটি হেলমার্ট বৈপরীত্যের মতো শোনাচ্ছে (সি প্রথম স্তর, তারপরে খ, তারপরে ক)।
মাইকেল এম

আমি হেলমার্টও চেষ্টা করেছিলাম, তবে সংখ্যাগুলি আমি যে সন্ধান করছি তা নয়। আমি হেলমার্ট বিপরীতে অন্তর্ভুক্ত করার জন্য প্রশ্নটি সম্পাদনা করেছি, ধন্যবাদ।
M4RT1NK4

উত্তর:


13

নিম্নলিখিত পদক্ষেপগুলির জন্য, আমাদের দীর্ঘ ফর্ম্যাটে ডেটা ফ্রেম দরকার। তথ্য ফ্রেম datনির্ভরশীল পরিবর্তনশীল রয়েছে result, শ্রেণীগত predictor cond(মাত্রা: a, b, এবং c), এবং র্যান্ডম ফ্যাক্টর s

library(tidyr)
dat <- gather(temp, cond, result, a, b, c)

নীচে, আমি যে শর্তগুলির সাথে তুলনা করতে চাই তার সাথে মিল রেখে একটি বিপরীতে ম্যাট্রিক্স তৈরি করতে দুটি পদ্ধতির চিত্র তুলে ধরব:

  1. একটি-+ +2
  2. -

কাস্টম বিপরীতে

ম্যাট্রিক্স matস্তরের পার্থক্যের সাথে মিলে যায়।

mat <- rbind(c(1, -0.5, -0.5),     # a vs. (b + c) / 2
             c(0, 1, -1))          # b vs. c

আসল কনট্রাস্ট ম্যাট্রিক্স তৈরি করতে, আমরা ginv(থেকে MASS) এর সাথে জেনারাইজড ইনভার্স গণনা করি ।

library(MASS)
cMat <- ginv(mat)
#            [,1]          [,2]
# [1,]  0.6666667 -7.130169e-17
# [2,] -0.3333333  5.000000e-01
# [3,] -0.3333333 -5.000000e-01

এই বিপরীতে ম্যাট্রিক্স cMatব্যবহার করা যেতে পারে lmer

library(lme4)
res <- lmer(result ~ cond + (1|s), data = dat, 
            contrasts = list(cond = cMat))
coef(summary(res))    
#              Estimate Std. Error    t value
# (Intercept) -2.948115  0.0946025 -31.163182
# cond1        1.351517  0.2006822   6.734612
# cond2        1.153918  0.2317279   4.979625

আপনি দেখতে পাচ্ছেন, স্থির-প্রভাব অনুমান উপরে বর্ণিত পার্থক্যগুলির সাথে সামঞ্জস্য। তদ্ব্যতীত, বিরতি সামগ্রিক গড় উপস্থাপন করে।

এর সাথে হেলমার্ট বিপরীতে contr.helmert

contr.helmertকনট্রাস্ট ম্যাট্রিক্স তৈরি করতে আপনি বিল্ট-ইন ফাংশনটিও ব্যবহার করতে পারেন ।

cHelmert <- contr.helmert(3)
#   [,1] [,2]
# 1   -1   -1
# 2    1   -1
# 3    0    2

যাইহোক, আদেশটি আপনি প্রশ্নের মধ্যে নির্দিষ্ট করা কোনওটির সাথে মিলে না। সুতরাং, আমাদের কলাম এবং সারিগুলির ক্রমটি বিপরীত করতে হবে। প্রথম কলাম অনুরূপ bবনাম aএবং দ্বিতীয় অনুরূপ cবনাম গড় bএবং a

cHelmert2 <- cHelmert[c(3:1), 2:1]
#   [,1] [,2]
# 3    2    0
# 2   -1    1
# 1   -1   -1

কনট্রাস্ট ম্যাট্রিক্সের cHelmert2সাথে তুলনা করুন cMat। আপনি খেয়াল করবেন কলামগুলি অন্যান্য ম্যাট্রিক্সের আকারযুক্ত সংস্করণ।

ফলাফল lmer:

library(lme4)
res2 <- lmer(result ~ cond + (1|s), data = dat, 
             contrasts = list(cond = cHelmert2))
coef(summary(res2))    
#               Estimate Std. Error    t value
# (Intercept) -2.9481150 0.09460250 -31.163182
# cond1        0.4505056 0.06689407   6.734612
# cond2        0.5769590 0.11586393   4.979625

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


দুর্দান্ত, ধন্যবাদ! আমি এখন এটি বুঝতে পেরেছি তা নিশ্চিত করার জন্য - আমি যদি প্রথম স্তরটিকে 4 স্তরের ভেরিয়েবলের বাকী স্তরগুলির সাথে তুলনা করতে চাই, matতবে তা হবে c(1, -1/3, -1/3, -1/3)? সুতরাং আমি সর্বদা সংখ্যাগুলিকে সেট করে রাখি কারণ তারা সূত্রের (এ + (বি + সি + ডি) / 3) তে থাকবে এবং তারপরে ginvএটি যথাযথভাবে স্কেল করে যাতে সহগ্রেটিগুলি সরাসরি পার্থক্যটি প্রতিবিম্বিত করে। এবং যখন আপনি হেলমার্ট উদাহরণে অর্ডার পরিবর্তন করেছেন, এটি কেবল প্রশ্নের সাথে মেলে? অন্যথায়, বিপরীতে ক্রম নির্বিশেষে ফলাফলগুলি একই হওয়া উচিত, তাই না?
M4RT1NK4

@ M4RT1NK4 আপনার সূত্র এবং সম্পর্কিত বৈসাদৃশ্য সঠিক নয়। প্রশ্নের মধ্যে কলামগুলির ক্রমের সাথে মেলে কলামের ক্রমটি পরিবর্তিত হয়েছিল। সারিগুলির ক্রমটি অবশ্য গুরুত্বপূর্ণ, কারণ প্রথম স্তরটি হল রেফারেন্স স্তর। আপনার উদাহরণে, রেফারেন্স স্তরটি তৃতীয় স্তর।
সোভেন হোহেনস্টেইন

@ সেভেনহেনস্টেইন এই উত্তরটির ভিত্তিতে আমার একটি সম্পর্কিত প্রশ্ন ছিল, মন কি এক দৃষ্টিতে? stats.stackexchange.com/questions/357781/…
মাদুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.