使用具有标准误差的FELM输出进行预测 [英] Predict using felm output with standard errors

查看:0
本文介绍了使用具有标准误差的FELM输出进行预测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果使用felm中的投影方法消除固定效果,是否有办法从lfe::felm获得具有标准误差的预测行为?这个问题与问题here非常相似,但该问题的所有答案都不能用来估计标准误差或置信度/预测区间。我知道目前没有predict.felm,但我想知道是否有类似于上面链接的解决方法也可以用于估计预测间隔

library(DAAG)
library(lfe)

model1 <- lm(data = cps1, re74 ~ age + nodeg + marr)
predict(model1, newdata = data.frame(age=40, nodeg = 0, marr=1), se.fit = T, interval="prediction")$fit
# Result:        fit      lwr      upr
# 1 18436.18 2339.335 34533.03

model2 <- felm(data = cps1, re74 ~ age | nodeg + marr)
predict(model2, newdata = data.frame(age=40, nodeg = 0, marr=1), se.fit = T, interval="prediction")$fit
# Does not work

目标是估计YHAT的预测间隔,我认为我需要计算完整的方差-协方差矩阵(包括固定影响)。我还不知道如何做到这一点,我想知道这在计算上是否可行。

推荐答案

在与几个人交谈后,我认为不可能直接从Felm获得yHAT=xB(其中X包括协变量和固定效应)的估计分布,这就是这个问题的归结。然而,引导它们是有可能的。以下代码并行执行此操作。性能仍有改进的余地,但这提供了总体思路。

注意:这里我不计算完整的预测区间,只计算xB上的SE,但获得预测区间很简单-只需将sigma^2的根加到SE即可。

library(DAAG)
library(lfe)
library(parallel)

model1 <- lm(data = cps1, re74 ~ age + nodeg + marr)
yhat_lm <- predict(model1, newdata = data.frame(age=40, nodeg = 0, marr=1), se.fit = T)

set.seed(42)
boot_yhat <- function(b) {
  print(b)
  n <- nrow(cps1)
  boot <- cps1[sample(1:n, n, replace=T),]

  lm.model <- lm(data=demeanlist(boot[, c("re74", "age")], list(factor(boot$nodeg), factor(boot$marr))), 
                 formula = re74 ~ age)
  fe <- getfe(felm(data = boot, re74 ~ age | nodeg + marr))

  bootResult <- predict(lm.model, newdata = data.frame(age = 40)) + 
    fe$effect[fe$fe == "nodeg" & fe$idx==0] + 
    fe$effect[fe$fe == "marr" & fe$idx==1]
  return(bootResult)
}

B = 1000
yhats_boot <- mclapply(1:B, boot_yhat)

plot(density(rnorm(10000, mean=yhat_lm$fit, sd=yhat_lm$se.fit)))
lines(density(yhats), col="red")

这篇关于使用具有标准误差的FELM输出进行预测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆