为什么标准误差在 R 的滞后分布模型中相同?

Why are standard errors the same in lag-distributed model in R?

我正在 运行 建立一个滞后分布模型普通最小二乘法,其中一组单位都在同一年处理。我包括 2 个滞后和 2 个导联,以查看是否存在任何 "anticipation" 或 "long-term" 效果,方法是在前几年和后几年产生相同的治疗状态。但是,当我 运行 模型时,所有标准误差都是相同的。例如:

set.seed(123)

data <- data.frame(y = rnorm(100), id = sort(rep(1:10,10)), years = rep(2000:2009,10))

tr <- ifelse(data$years == 2005 & data$id %in% c(2,3,4,5,6),1,0)
lead.2003 <- ifelse(data$year == 2003 & data$id %in% c(2,3,4,5,6), 1, 0)
lead.2004 <- ifelse(data$year == 2004 & data$id %in% c(2,3,4,5,6), 1, 0)
lag.2006 <- ifelse(data$year == 2006 & data$id %in% c(2,3,4,5,6), 1, 0)
lag.2007 <- ifelse(data$year == 2007 & data$id %in% c(2,3,4,5,6), 1, 0)

data <- cbind(data, tr, lead.2003, lead.2004, lag.2006 , lag.2007)

summary(lm(y ~ tr + lead.2003 + lead.2004 + lag.2006 + lag.2007, data = data))

知道这是为什么吗?谢谢。

您的 tr/lead/lag 变量的方差相同并且它们是正交的,因此它们最终平均分配均方误差。 SE 由 sigma^2 * (X'X)^-1 计算。看一下协方差矩阵的反对角线(公式中的(X'X)^-1)。

fit <- lm(y ~ tr + lead.2003 + lead.2004 + lag.2006 + lag.2007, data = data)

X <- as.matrix(cbind(1, data[,4:ncol(data)]))
diag(solve(t(X) %*% X))
#          1         tr  lead.2003  lead.2004   lag.2006   lag.2007 
# 0.01333333 0.21333333 0.21333333 0.21333333 0.21333333 0.21333333 

因此,当您将其乘以均方误差(公式中的 sigma^2,我们可以从方差分析中得出),然后取平方根得到标准误差

mse <- anova(fit)[[3]][6]            # mean square error
sqrt(diag(mse * solve(t(X) %*% X)))  # SE
#         1        tr lead.2003 lead.2004  lag.2006  lag.2007 
# 0.1059099 0.4236397 0.4236397 0.4236397 0.4236397 0.4236397 

你最终得到的都是相同的标准错误。

如果变量有不同的方差,你会得到不同的标准误差,例如,改变 lead.2003,并重新运行相同的模型(变量仍然是正交的)

## changed 2:6 to 3:6
lead.2003 <- ifelse(data$year == 2003 & data$id %in% 3:6, 1, 0)
## ... rerun model ...
summary(fit)$coefficients[,2]  # standard errors
# (Intercept)          tr   lead.2003   lead.2004    lag.2006    lag.2007 
#   0.1048613   0.4220586   0.4689540   0.4220586   0.4220586   0.4220586 

或者,如果变量不是正交的,则标准误差会不同。

## again changing lead.2003
lead.2003 <- sample(c(rep(1,5), rep(0,95)), 100)
## .. rerun ..
summary(fit)$coefficients[,2]
# (Intercept)          tr   lead.2003   lead.2004    lag.2006    lag.2007 
#   0.1057283   0.4272960   0.4316341   0.4316341   0.4272960   0.4272960