【问题标题】:Prediction with plm method使用 plm 方法进行预测
【发布时间】:2015-04-17 07:53:59
【问题描述】:

我正在使用 plm 包来估计面板数据上的随机效应模型。 阅读 this question 关于 plm 包中的预测让我有些怀疑。它究竟是如何工作的?我尝试了 3 种替代方法,它们给出了不同的解决方案。为什么?

library(data.table); library(plm)

set.seed(100)
DT <- data.table(CJ(id=c(1,2,3,4), time=c(1:10)))
DT[, x1:=rnorm(40)]
DT[, x2:=rnorm(40)]
DT[, y:=x1 + 2*x2 + rnorm(40)/10 + id]
DT <- DT[!(id=="a" & time==4)] # just to make it an unbalanced panel
setkey(DT, id, time)    

summary(plmFEit <- plm(data=DT, id=c("id","time"), formula=y ~ x1 + x2, model="random"))    
    ###################
    #method 1
    ###################
    # Extract the fitted values from the plm object
    FV <- data.table(plmFEit$model, residuals=as.numeric(plmFEit$residuals))
    FV[, y := as.numeric(y)]
    FV[, x1 := as.numeric(x1)]
    FV[, x2 := as.numeric(x2)]

    DT <- merge(x=DT, y=FV, by=c("y","x1","x2"), all=TRUE)
    DT[, fitted.plm_1 := as.numeric(y) - as.numeric(residuals)]                
    ###################
    #method 2
    ###################        
    # calculate the fitted values 
    DT[, fitted.plm_2 := as.numeric(coef(plmFEit)[1]+coef(plmFEit)[2] * x1 + coef(plmFEit)[3]*x2)]                
    ###################
    #method 3
    ###################
    # using pmodel.response 
    DT$fitted.plm_3 <-pmodel.response(plmFEit,model='random') 

【问题讨论】:

    标签: r predict panel-data plm


    【解决方案1】:

    方法一: 这可以更容易地完成:

    FV <- data.table(plmFEit$model, residuals=as.numeric(plmFEit$residuals))
    FV[ , fitted := y - residuals]
    

    但是,它给出的拟合值与您使用 merge() 的方法相同

    方法二: 您正在拟合一个随机效应模型(尽管您将其命名为 plmFEit,其中 FE 通常意味着固定效应)。与方法 1 相比,您缺少特殊错误术语。

    方法三: pmodel.response() 为您提供响应变量(在本例中为 y),但应用了指定的变换(随机效应变换(“准贬低”))(参见 pmodel.response())。

    我想,你想要的,方法1就给了。

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 2018-12-31
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 2015-11-04
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多