在復合對稱的情況下,(0 + factor|group) 和 (1|group) + (1|group:factor) 隨機效應規範的等價性
Douglas Bates 指出,“如果向量值隨機效應的方差-協方差矩陣具有特殊形式,稱為複合對稱”,則以下模型是等效的(本演示文稿中的幻燈片 91):
m1 <- lmer(y ~ factor + (0 + factor|group), data) m2 <- lmer(y ~ factor + (1|group) + (1|group:factor), data)
具體來說,貝茨使用了這個例子:
library(lme4) data("Machines", package = "MEMSS") m1a <- lmer(score ~ Machine + (0 + Machine|Worker), Machines) m2a <- lmer(score ~ Machine + (1|Worker) + (1|Worker:Machine), Machines)
與相應的輸出:
print(m1a, corr = FALSE) Linear mixed model fit by REML ['lmerMod'] Formula: score ~ Machine + (0 + Machine | Worker) Data: Machines REML criterion at convergence: 208.3112 Random effects: Groups Name Std.Dev. Corr Worker MachineA 4.0793 MachineB 8.6253 0.80 MachineC 4.3895 0.62 0.77 Residual 0.9616 Number of obs: 54, groups: Worker, 6 Fixed Effects: (Intercept) MachineB MachineC 52.356 7.967 13.917 print(m2a, corr = FALSE) Linear mixed model fit by REML ['lmerMod'] Formula: score ~ Machine + (1 | Worker) + (1 | Worker:Machine) Data: Machines REML criterion at convergence: 215.6876 Random effects: Groups Name Std.Dev. Worker:Machine (Intercept) 3.7295 Worker (Intercept) 4.7811 Residual 0.9616 Number of obs: 54, groups: Worker:Machine, 18; Worker, 6 Fixed Effects: (Intercept) MachineB MachineC 52.356 7.967 13.917
誰能以直觀的方式解釋模型之間的區別以及如何
m1
簡化為(給定複合對稱性)?m2
在此示例中,對於三台機器(A、B、C)和六名工人的每個組合都有三個觀察值。我會用表示一個維單位矩陣和表示一個維向量。比方說是觀察向量,我將假設它是由工人訂購然後機器然後復制。讓是相應的期望值(例如固定效應),並讓是與預期值(例如隨機效應)的特定組偏差的向量。有條件的,模型為可以寫成:
在哪裡是“剩餘”方差。
為了理解隨機效應的協方差結構如何在觀測值之間產生協方差結構,使用等效的“邊際”表示更為直觀,它整合了隨機效應. 這個模型的邊際形式是,
這裡,是一個依賴於結構的協方差矩陣(例如,隨機效應背後的“方差分量”)。我會參考作為“邊際”協方差。
在您的
m1
中,隨機效應分解為:在哪裡是將隨機係數映射到觀測值的設計矩陣,並且是由工人然後機器排序的隨機係數的 18 維向量,分佈為:
這裡是隨機係數的協方差。複合對稱的假設意味著有兩個參數,我會調用和, 和結構:
(換句話說,相關矩陣將非對角線上的所有元素設置為相同的值。)
這些隨機效應引起的邊際協方差結構是,因此給定觀測值的方差為以及來自工人的兩個(單獨)觀察之間的協方差和機器是:
對於您的
m2
,隨機效應分解為:Z 和以前一樣,是將每個工人的隨機截距映射到觀察結果的設計矩陣,是機器和工人的每個組合的隨機截距的 18 維向量;和是工人隨機截距的 6 維向量。這些分佈為,
在哪裡是這些隨機截距的方差。 的邊際協方差結構
m2
是,因此給定觀測值的方差為,以及工人的兩次觀察之間的協方差和機器是:所以 …和. 如果
m1
假設複合對稱(它不會與您調用 lmer,因為隨機效應協方差是非結構化的)。簡潔不是我的強項:這只是一種冗長而復雜的說法,即每個模型都有兩個隨機效應的方差參數,並且只是同一“邊際”模型的兩種不同寫法。
在代碼…
sigma_theta <- 1.8 tau <- 0.5 sigma_eta <- tau sigma_omega <- sigma_theta Z <- kronecker(diag(18), rep(1,3)) rownames(Z) <- paste(paste0("worker", rep(1:6, each=9)), rep(paste0("machine", rep(1:3, each=3)),6)) X <- kronecker(diag(6), rep(1,9)) rownames(X) <- rownames(Z) Lambda <- diag(3)*sigma_theta^2 + tau^2 # marginal covariance for m1: Z%*%kronecker(diag(6), Lambda)%*%t(Z) # for m2: X%*%t(X)*sigma_eta^2 + Z%*%t(Z)*sigma_omega^2