0

我对 R 中的面板数据几乎没有经验,并且正在尝试使用 plm-package 运行简单的面板回归。但是,将我的数据帧转换为 pdata.frame 时,我的时间索引变量将转换为因子变量。这意味着,如果我想将因变量作为时间的函数进行回归,则回归会生成一长串时间的虚拟变量,并为每个变量计算单独的系数。我只想要每个时间单位的平均效果(即平均每月增加/减少点)。

示例数据框:

ID    Date        Points
1     1/11/2014   2
1     1/12/2014   4
1     1/1/2015    6
1     1/2/2015    8
2     1/11/2014   1
2     1/12/2014   2
2     1/1/2015    3
2     1/2/2015    4

假设示例数据帧结构是 ID = int,Date = POSIXct,Points = int。然后我将其转换为带有索引 ID 和日期的 pdata.frame:

panel <- pdata.frame(dataframe, c("ID", "Date"))

并运行 plm 固定效应回归:

fixed <- plm(Points ~ Date, data=panel, model="within")
summary(fixed)

然后将得到的系数按每个月细分为虚拟变量。我想将我的时间变量视为一个连续变量,所以我只得到一个日期系数。我怎样才能做到这一点?有没有办法避免将时间索引变量格式化为面板数据框中的一个因素?

4

1 回答 1

2

我认为您需要创建一个单独的时钟或时间计数器panel$Date以在您的模型中使用。例如:

library(dplyr)
dataframe <- dataframe %>%
    group_by(ID) %>%
    mutate(clock = seq_along(ID))
panel <- pdata.frame(dataframe, c("ID", "Date"))

这会产生这些数据:

             ID       Date Points clock
1-2014-11-01  1 2014-11-01      2     1
1-2014-12-01  1 2014-12-01      4     2
1-2015-01-01  1 2015-01-01      6     3
1-2015-02-01  1 2015-02-01      8     4
2-2014-11-01  2 2014-11-01      1     1
2-2014-12-01  2 2014-12-01      2     2
2-2015-01-01  2 2015-01-01      3     3
2-2015-02-01  2 2015-02-01      4     4

这产生了这个输出:

> fixed <- plm(Points ~ clock, data=panel, model="within")
> summary(fixed)
Oneway (individual) effect Within Model

Call:
plm(formula = points ~ clock, data = panel, model = "within")

Balanced Panel: n=2, T=4, N=8

Residuals :
   Min. 1st Qu.  Median 3rd Qu.    Max. 
 -0.750  -0.375   0.000   0.375   0.750 

Coefficients :
      Estimate Std. Error t-value Pr(>|t|)   
clock  1.50000    0.22361  6.7082 0.001114 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    25
Residual Sum of Squares: 2.5
R-Squared      :  0.9 
      Adj. R-Squared :  0.5625 
F-statistic: 45 on 1 and 5 DF, p-value: 0.0011144
于 2015-08-02T16:16:04.677 回答