मैं दोनों के बीच lm
और lmer
दोहराया उपायों (2x2x2) के बीच कई इंटरैक्शन टेस्ट को पुन: पेश करने की कोशिश कर रहा हूं । मैं दोनों तरीकों की तुलना करना चाहता हूं, क्योंकि दोहराए गए उपायों के लिए SPSS की GLM lm
यहां प्रस्तुत दृष्टिकोण के समान सटीक परिणाम देती है, इसलिए अंत में मैं SPSS बनाम R-lmer की तुलना करना चाहता हूं। अब तक, मैं केवल इनमें से कुछ इंटरैक्शन को पुन: उत्पन्न (बारीकी से) करने में कामयाब रहा हूं।
आप अपनी बात को बेहतर ढंग से समझाने के लिए एक स्क्रिप्ट के नीचे पाएंगे:
library(data.table)
library(tidyr)
library(lmerTest)
library(MASS)
set.seed(1)
N <- 100 # number of subjects
sigma <- 1 # popuplation sd
rho <- .6 # correlation between variables
# X1: a a a a b b b b
# X2: a a b b a a b b
# X3: a b a b a b a b
mu <- c(5, 3, 3, 5, 3, 5, 5, 3) # means
# Simulate the data
sigma.mat <- rep(sigma, length(mu))
S <- matrix(sigma.mat, ncol = length(sigma.mat), nrow = length(sigma.mat))
Sigma <- t(S) * S * rho
diag(Sigma) <- sigma**2
X <- data.table( mvrnorm(N, mu, Sigma) )
setnames(X, names(X), c("aaa", "aab", "aba", "abb", "baa", "bab", "bba", "bbb"))
X[, id := 1:.N]
# Long format
XL <- data.table( gather(X, key, Y, aaa:bbb) )
XL[, X1 := substr(key, 1, 1)]
XL[, X2 := substr(key, 2, 2)]
XL[, X3 := substr(key, 3, 3)]
# Recode long format (a = +1; b = -1)
XL[, X1c := ifelse(X1 == "a", +1, -1)]
XL[, X2c := ifelse(X2 == "a", +1, -1)]
XL[, X3c := ifelse(X3 == "a", +1, -1)]
### Composite scores to be used with lm
# X2:X3 2-way interaction (for half the data; i.e. when X1 == "a")
X[, X1a_X2.X3 := (aaa - aab) - (aba - abb)]
# X2:X3 2-way interaction (for all the data)
X[, aa := (aaa + baa) / 2]
X[, ab := (aab + bab) / 2]
X[, ba := (aba + bba) / 2]
X[, bb := (abb + bbb) / 2]
X[, X2.X3 := (aa - ab) - (ba - bb)]
# X1:X2:X3 3-way interaction (for all the data)
X[, X1.X2.X3 := ( (aaa - aab) - (aba - abb) ) - ( (baa - bab) - (bba - bbb) )]
### Fit models
# X2:X3 2-way interaction (for half the data; i.e. when X1 == "a")
summary( lm(X1a_X2.X3 ~ 1, X) ) # t = 34.13303
summary( lmer(Y ~ X2c*X3c + (X2c+X3c|id), XL[X1 == "a"]) ) # t = 34.132846 close match
summary( lmer(Y ~ X2c*X3c + (X2c+X3c||id), XL[X1 == "a"]) ) # t = 34.134624 close match
# X2:X3 2-way interaction (for all the data)
summary( lm(X2.X3 ~ 1, X) ) # t = 0.3075025
summary( lmer(Y ~ X2c*X3c + (X2c+X3c|id), XL) ) # t = 0.1641932
summary( lmer(Y ~ X2c*X3c + (X2c+X3c||id), XL) ) # t = 0.1640710
summary( lmer(Y ~ X2c*X3c + (X2c*X3c|id), XL) ) # t = 0.1641765
anova( lmer(Y ~ X2c*X3c + (X2c*X3c|id), XL), ddf = "Kenward-Roger" ) # t = 0.1643168
summary( lmer(Y ~ X2c*X3c + (X2c*X3c|id), XL, REML = FALSE) ) # t = 0.1645303
summary( lmer(Y ~ X2c*X3c + (X2c*X3c||id), XL) ) # t = 0.1640704
# X1:X2:X3 3-way interaction (for all the data)
summary( lm(X1.X2.X3 ~ 1, X) ) # t = 46.50177
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c - X1c:X2c:X3c|id), XL) ) # t = 49.0317599
anova( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c - X1c:X2c:X3c|id), XL), ddf = "Kenward-Roger" ) # t = 49.03176
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c - X1c:X2c:X3c|id), XL, REML = FALSE) ) # t = 49.2677606
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c - X1c:X2c:X3c||id), XL) ) # t = 46.5193774 close match
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c|id), XL) ) # unidentifiable
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c|id), XL,
control = lmerControl(check.nobs.vs.nRE="ignore")) ) # t = 46.5148684 close match
जैसा कि आप ऊपर से देख सकते हैं, कोई भी lm
अनुमान बिल्कुल मेल नहीं खाते lmer
हैं। हालांकि कुछ परिणाम बहुत समान हैं और केवल संख्यात्मक / कम्प्यूटेशनल कारणों के कारण भिन्न हो सकते हैं। दोनों आकलन विधि के बीच की खाई विशेष रूप से बड़ी है X2:X3 2-way interaction (for all the data)
।
मेरा प्रश्न यह है कि क्या दोनों तरीकों के साथ सटीक समान परिणाम प्राप्त करने का कोई तरीका है , और यदि विश्लेषण करने का एक सही तरीका है lmer
(हालांकि यह lm
परिणामों से मेल नहीं खा सकता है )।
बक्शीश:
मैंने देखा है कि t value
जिस तरह से कारकों को कोडित किया जाता है, उससे 3-तरफ़ा इंटरैक्शन से प्रभावित होता है, जो मुझे बहुत अजीब लगता है:
summary( lmer(Y ~ X1*X2*X3 + (X1*X2*X3 - X1:X2:X3||id), XL) ) # t = 48.36
summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c - X1c:X2c:X3c||id), XL) ) # t = 56.52
lm
मॉडल में अनुवादित किया जा सकता है ) से परिणामों को पुन: पेश करना चाहता हूं lmer
, और यह भी पता है कि इस तरह के डेटा के लिए सही lmer
विश्लेषण क्या है ।
lm
; मुझे संदेह है कि टी-स्टेटिस्टिक लगभग दो गुना छोटा है lmer
। आप शायद 2x2x2 और जटिल इंटरैक्शन के साथ परेशान हुए बिना एक सरल 2x2 डिजाइन का उपयोग करके और मुख्य प्रभावों को देखते हुए एक ही घटना का निरीक्षण करने में सक्षम होंगे।