পুনরাবৃত্তি ব্যবস্থা আনোভা: lm বনাম lmer


10

আমি উভয়ের সাথে lmএবং lmerপুনরাবৃত্তি ব্যবস্থা (2x2x2) এর মধ্যে বেশ কয়েকটি ইন্টারঅ্যাকশন পরীক্ষা পুনরুত্পাদন করার চেষ্টা করছি । আমি উভয় পদ্ধতির তুলনা করতে চাই কারণ হ'ল এসপিএসএসের জিএলএম বারবার ব্যবস্থার জন্য lmএখানে উপস্থাপিত পদ্ধতির ঠিক একই ফলাফল দেয়, তাই শেষে আমি এসপিএস বনাম আর-লিটারের সাথে তুলনা করতে চাই। এখনও অবধি, আমি কেবলমাত্র এই ইন্টারঅ্যাকশনগুলির কিছু পুনরুত্পাদন করতে (ঘনিষ্ঠভাবে) পরিচালনা করেছি।

আমার কথাটি আরও ভালভাবে বর্ণনা করার জন্য আপনি একটি স্ক্রিপ্টের নীচে পাবেন:

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 value3-উপায় ইন্টারঅ্যাকশনের সাথে যুক্ত যেভাবে কারণগুলি কোডিং করা হয় তার দ্বারা প্রভাবিত হয় যা আমার কাছে খুব অদ্ভুত বলে মনে হচ্ছে:

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

1
+1 কারণ এটি আকর্ষণীয় দেখায় তবে আপনি এখানে কী করছেন তা আমার কোনও ধারণা নেই :) আপনি কি শব্দ বা গণিতে ব্যাখ্যা করতে পারেন যে এই এলএম এবং লিমার কলগুলির একই গুণফল পাওয়া উচিত? এবং এই পুরো অনুশীলনের পিছনে যুক্তি কি?
অ্যামিবা

@ অ্যামিবা এই পোস্টের উদ্দেশ্যটি পরিষ্কার করতে আমি আমার পোস্ট আপডেট করেছি। মূলত, আমি এসপিএসএস (যা একটি lmমডেল হিসাবে অনুবাদ করা যেতে পারে ) এর ফলাফলগুলি পুনরুত্পাদন করতে চাই এবং এ জাতীয় ডেটার সঠিক বিশ্লেষণগুলি lmerকী তাও জানি । lmer
মাদুর

সম্পূর্ণ তথ্যের জন্য দ্বি-মুখী মিথস্ক্রিয়া ক্ষেত্রে বৃহত্তর ভিন্নতার কারণ হ'ল প্যারামিটার সংমিশ্রণে আপনার কাছে 2 ডেটা পয়েন্ট রয়েছে। স্বজ্ঞাততাটি হ'ল মিশ্র মডেলের কার্যকর নমুনার আকারের চেয়ে 2x কম lm; আমি সন্দেহ করি যে কেন টি-পরিসংখ্যানগুলি প্রায় দুইগুণ ছোট হয় lmer। আপনি 2x2x2 এবং জটিল মিথস্ক্রিয়া নিয়ে বিরক্ত না করে সাধারণ 2x2 নকশা ব্যবহার করে এবং প্রধান প্রভাবগুলি দেখে সম্ভবত একই ঘটনাটি দেখতে সক্ষম হবেন।
অ্যামিবা

উত্তর:


3

আশ্চর্যের বিষয়, আমি যখন আপনার শেষ মডেলটি ব্যবহার করি তখন আমি একটি নিখুঁত মিল খুঁজে পাই, ঘনিষ্ঠ মিল নয়:

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)  3.91221    0.07242 99.00001  54.025   <2e-16 ***
X1c          0.03277    0.05006 99.00000   0.655    0.514    
X2c         -0.04836    0.04644 99.00000  -1.042    0.300    
X3c          0.04248    0.05009 99.00001   0.848    0.398    
X1c:X2c      0.08370    0.08747 98.99998   0.957    0.341    
X1c:X3c     -0.07025    0.08895 98.99994  -0.790    0.432    
X2c:X3c     -0.02957    0.09616 99.00000  -0.308    0.759    
X1c:X2c:X3c -8.14099    0.17507 99.00003 -46.502   <2e-16 ***

1
শুধু পরিষ্কার করে বলতে গেলে আপনি কোন মডেলটির কথা উল্লেখ করছেন?
মাদুর

সংক্ষিপ্তসার (lmer (Y ~ X1c X2c X3c + (X1c X2c X3c | id), এক্সএল, নিয়ন্ত্রণ = lmerControl (check.nobs.vs.nRE = "উপেক্ষা"))
ব্যবহারকার 244839

এটা সত্যিই খুব আজব! আমার জন্য summary( lmer(Y ~ X1c*X2c*X3c + (X1c*X2c*X3c|id), XL, control=lmerControl(check.nobs.vs.nRE="ignore")) )$coefficientsপ্রত্যাবর্তন t = 46.5148684একটি সংস্করণ সমস্যা হতে পারে? আমি ব্যবহার করছি R version 3.5.3 (2019-03-11)এবং lmerTest 3.1-0
মাদুর

আমার কাছে @ ম্যাট হিসাবে একই রি & ল্যামার টেস্ট সংস্করণ রয়েছে এবং সেগুলির মতো একই ফলাফলগুলি পেয়েছি (অনেক সতর্কতা থাকা সত্ত্বেও - রূপান্তর করতে ব্যর্থ হওয়া ইত্যাদি)।
এমকেটি - মনিকা

1
@ ম্যাম সম্ভবত আমি পরিষ্কার ছিলাম না - আমি আপনার মতো ফলাফল পাচ্ছি! আমি মনে করি আপনি সম্ভবত ঠিক বলেছেন যে ব্যবহারকারী 244839 আমাদের থেকে আলাদা সংস্করণ ব্যবহার করছে।
এমকেটি -
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.