R में lmer के साथ कस्टम कंट्रास्ट कैसे सेट करें


9

मैं condकुछ परिणाम पर स्थिति ( ) के प्रभाव की जांच करने के लिए R में lmer का उपयोग कर रहा हूं । यहाँ कुछ बना डेटा, जहां s विषय पहचानकर्ता है और कर रहे हैं 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, स्पष्ट भविष्यवक्ता 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

यह कंट्रास्ट मैट्रिक्स कस्टम कॉन्ट्रास्ट मैट्रिक्स के समान तुलना के लिए अनुमति देता है। हालांकि, चूंकि मैट्रिक्स में मान अलग-अलग हैं, इसलिए निश्चित-प्रभाव गुणांक भी अलग हैं। आश्चर्यजनक रूप से, -values ​​समान नहीं हैं।टी


बहुत धन्यवाद! बस यह सुनिश्चित करने के लिए कि मैं इसे अब समझ सकता हूं - अगर मैं पहले स्तर के बाकी स्तरों की तुलना 4 स्तर के चर में करना चाहता हूं, तो matक्या होगा c(1, -1/3, -1/3, -1/3)? इसलिए मैं हमेशा संख्या निर्धारित करता हूं क्योंकि वे सूत्र (a + (b + c + d) / 3) में होंगे और फिर ginvइसे उचित रूप से मापेंगे ताकि गुणांक सीधे अंतर को दर्शाए। और जब आपने हेल्मर्ट उदाहरण में आदेश को बदल दिया, तो यह सवाल का मिलान करना था? अन्यथा, परिणाम समान होने चाहिए, विरोधाभासों के क्रम की परवाह किए बिना, सही?
M4RT1NK4

@ M4RT1NK4 आपका सूत्र और इसके विपरीत इसके विपरीत सही है। कॉलम के क्रम को प्रश्न में कॉलम के क्रम से मेल खाने के लिए बदला गया था। पंक्तियों का क्रम, हालांकि, महत्वपूर्ण है, क्योंकि पहला स्तर संदर्भ स्तर है। आपके उदाहरण में, संदर्भ स्तर तीसरा स्तर है।
स्वेन होइनस्टीन

@SvenHohenstein मेरे पास इस सवाल के आधार पर एक सवाल था, एक नज़र है? आंकड़े.stackexchange.com/questions/357781/…
मैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.