使用具有大量固定效果的回归快速预测

wol*_*oor 3 regression r panel categorical-data

我想用来R估计具有大量固定效应的回归.

然后,我使用该回归来使用测试数据集进行预测.

但是,这需要非常快速地完成,因为我想引导我的标准错误并多次执行此操作.

我知道lfe包中R可以做到这一点.例如

reg=felm(Y~1|F1 + F2,data=dat)
Run Code Online (Sandbox Code Playgroud)

其中dat是数据,F1,F2是分类变量的列(要包括的固定效果).

predict(reg,dat2)然而,这并不适用于lfe包......正如这里所讨论的那样.

不幸的lm是太慢了,因为我有很多固定效果.

thc*_*thc 8

加快速度的方法是提取系数并手动执行矩阵运算.例如:

xtrain <- data.frame(x1=jitter(1:1000), x2=runif(1000), x3=rnorm(1000))
xtest <- data.frame(x1=jitter(1:1000), x2=runif(1000), x3=rnorm(1000))
y <- -(1:1000)
fit <- lm(y ~ x1 + x2 + x3, data=xtrain)

beta <- matrix(coefficients(fit), nrow=1)
xtest_mat <- t(data.matrix(cbind(intercept=1, xtest)))
predictions <- as.vector(beta %*% xtest_mat)

library(microbenchmark)
microbenchmark(as.vector(beta %*% xtest_mat),
               predict(fit, newdata = xtest))

Unit: microseconds
                          expr     min       lq      mean  median      uq      max neval cld
 as.vector(beta %*% xtest_mat)   8.140  10.0690  13.12173  12.372  15.852   26.292   100  a 
 predict(fit, newdata = xtest) 635.413 657.2515 745.94840 673.009 763.166 2363.065   100   b
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到直接矩阵乘法比预测函数快约50倍.