अपने प्रश्न को संबोधित करते हुए "मुझे आश्चर्य है कि टिप्पणियों में मॉडल 2 से एटीई कैसे प्राप्त करें":
सबसे पहले, अपने मॉडल 2 में, सभी नहीं γjपहचान योग्य है जो डिजाइन मैट्रिक्स में रैंक की कमी की समस्या की ओर जाता है। उदाहरण के लिए, एक स्तर को गिराना आवश्यक हैγj=0 के लिये j=1। यही है, कंट्रास्ट कोडिंग का उपयोग करते हुए और 1 पर उपचार प्रभाव को ग्रहण करते हैं। 0. आर में, यह संदर्भ अवधि के रूप में 1 अवधि में उपचार प्रभाव के साथ इंटरैक्शन शब्द को कोड करेगा, और यही कारण है किβ~ पीरियड में उपचार प्रभाव की व्याख्या है। एसएएस में, यह अवधि में उपचार प्रभाव को कोड करेगा m संदर्भ स्तर के रूप में, फिर β~ अवधि में उपचार प्रभाव की व्याख्या है m, अवधि 1 अब और नहीं।
इसके विपरीत आर तरीके से बनाया गया है, तो प्रत्येक बातचीत अवधि के लिए गुणांक का अनुमान लगाया गया है (मैं अभी भी इसके द्वारा निरूपित करूंगा) γj, हालांकि यह ठीक नहीं है कि आपने अपने मॉडल में क्या परिभाषित किया है) समय अवधि के बीच उपचार प्रभाव अंतर की व्याख्या है j और समय अवधि 1. प्रत्येक अवधि में ATE को अस्वीकार करें ATEj, फिर γj=ATEj−ATE1 के लिये j=2,…,m। इसलिए के लिए एक अनुमानकATEj है β~+γj। (सत्य पैरामीटर और अनुमानक के बीच संकेतन अंतर को अनदेखा करना क्योंकि आलस्य) और स्वाभाविक रूप से आपकेATE=β=1m∑mj=1ATEj=β~+(β~+γ2)+⋯+(β~+γm)m=β~+1m(γ2+⋯+γm)।
मैंने इसे सत्यापित करने के लिए R में एक साधारण सिमुलेशन किया:
set.seed(1234)
time <- 4
n <-2000
trt.period <- c(2,3,4,5) #ATE=3.5
kj <- c(1,2,3,4)
intercept <- rep(rnorm(n, 1, 1), each=time)
eij <- rnorm(n*time, 0, 1.5)
trt <- rep(c(rep(0,n/2),rep(1,n/2)), each=time)
y <- intercept + trt*(rep(trt.period, n))+rep(kj,n)+eij
sim.data <- data.frame(id=rep(1:n, each=time), period=factor(rep(1:time, n)), y=y, trt=factor(trt))
library(lme4)
fit.model1 <- lmer(y~trt+(1|id), data=sim.data)
beta <- getME(fit.model1, "fixef")["trt1"]
fit.model2 <- lmer(y~trt*period + (1|id), data=sim.data)
beta_t <- getME(fit.model2, "fixef")["trt1"]
gamma_j <- getME(fit.model2, "fixef")[c("trt1:period2","trt1:period3","trt1:period4")]
results <-c(beta, beta_t+sum(gamma_j)/time)
names(results)<-c("ATE.m1", "ATE.m2")
print(results)
और परिणाम इसकी पुष्टि करते हैं:
ATE.m1 ATE.m2
3.549213 3.549213
मुझे नहीं पता कि ऊपर मॉडल 2 में कॉन्ट्रास्ट कोडिंग को सीधे कैसे बदलना है, इसलिए यह स्पष्ट करने के लिए कि कोई व्यक्ति सीधे बातचीत की शर्तों के रैखिक फ़ंक्शन का उपयोग कैसे कर सकता है, साथ ही साथ मानक त्रुटि कैसे प्राप्त करें, मैंने मल्टीपैक पैकेज का उपयोग किया:
sim.data$tp <- interaction(sim.data$trt, sim.data$period)
fit.model3 <- lmer(y~tp+ (1|id), data=sim.data)
library(multcomp)
# w= tp.1.1 + (tp.2.1-tp.2.0)+(tp.3.1-tp.3.0)+(tp.4.1-tp.4.0)
# tp.x.y=interaction effect of period x and treatment y
w <- matrix(c(0, 1,-1,1,-1,1,-1,1)/time,nrow=1)
names(w)<- names(getME(fit.model3,"fixef"))
xx <- glht(fit.model3, linfct=w)
summary(xx)
और यहाँ उत्पादन है:
Simultaneous Tests for General Linear Hypotheses
Fit: lmer(formula = y ~ tp + (1 | id), data = sim.data)
Linear Hypotheses:
Estimate Std. Error z value Pr(>|z|)
1 == 0 3.54921 0.05589 63.51 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
मुझे लगता है कि मानक त्रुटि द्वारा प्राप्त की जाती है wV^wT−−−−−√ साथ में w उपरोक्त रैखिक संयोजन रूप और V मॉडल 3 से गुणांक के अनुमानित विचरण-सहसंयोजक मैट्रिक्स।
विचलन कोडन
दूसरा तरीका β~ की सीधे व्याख्या कर रहा है ATEविचलन कोडिंग का उपयोग करना है , ताकि बाद में सहसंयोजक प्रतिनिधित्व करेंATEj−ATE तुलना:
sim.data$p2vsmean <- 0
sim.data$p3vsmean <- 0
sim.data$p4vsmean <- 0
sim.data$p2vsmean[sim.data$period==2 & sim.data$trt==1] <- 1
sim.data$p3vsmean[sim.data$period==3 & sim.data$trt==1] <- 1
sim.data$p4vsmean[sim.data$period==4 & sim.data$trt==1] <- 1
sim.data$p2vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
sim.data$p3vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
sim.data$p4vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
fit.model4 <- lmer(y~trt+p2vsmean+p3vsmean+p4vsmean+ (1|id), data=sim.data)
आउटपुट:
Fixed effects:
Estimate Std. Error t value
(Intercept) 3.48308 0.03952 88.14
trt1 3.54921 0.05589 63.51
p2vsmean -1.14774 0.04720 -24.32
p3vsmean 1.11729 0.04720 23.67
p4vsmean 3.01025 0.04720 63.77