在plm中向前滞后

Mat*_*att 8 r lag plm

这是一个非常简单的问题,但我无法找到明确的答案,所以我想我会问它.我使用该plm包来处理面板数据.我试图使用该lag函数及时滞后变量FORWARD(默认是从前一个句点检索值,我想要NEXT中的值).我发现了一些旧的文章/问题(大约2009年),这表明这可以k=-1作为一个论点使用.但是,当我尝试这个时,我收到一个错误.

示例代码:

library(plm)
df<-as.data.frame(matrix(c(1,1,1,2,2,3,20101231,20111231,20121231,20111231,20121231,20121231,50,60,70,120,130,210),nrow=6,ncol=3))
names(df)<-c("individual","date","data")
df$date<-as.Date(as.character(df$date),format="%Y%m%d")
df.plm<-pdata.frame(df,index=c("individual","date"))
Run Code Online (Sandbox Code Playgroud)

滞后:

lag(df.plm$data,0)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31 
         50           60           70          120          130          210

lag(df.plm$data,1)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31 
         NA           50           60           NA          120           NA

lag(df.plm$data,-1)
##returns
Error in rep(1, ak) : invalid 'times' argument
Run Code Online (Sandbox Code Playgroud)

我还读到了plm.data已经取代pdata.frame某些应用程序的内容plm.但是,plm.data似乎根本没有使用该lag功能:

df.plm<-plm.data(df,indexes=c("individual","date"))
lag(df.plm$data,1)
##returns
[1]  50  60  70 120 130 210
attr(,"tsp")
[1] 0 5 1
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助.如果有人有另外一个包裹用于滞后的建议,我会全力以赴.然而,我确实喜欢plm它,因为它自动处理多个人的滞后,并且在时间序列中略有差距.

Hel*_*123 3

EDIT2plm :滞后向前(=领先值)在CRAN 版本 >= 1.6-4中实现。函数可以是lead()lag()(后者使用负整数作为前导值)。

请注意使用相同函数名称的任何其他附加包。当然,您可以通过完整的命名空间引用该函数,例如plm::lead.

示例来自?plm::lead

# First, create a pdata.frame
data("EmplUK", package = "plm")
Em <- pdata.frame(EmplUK)

# Then extract a series, which becomes additionally a pseries
z <- Em$output
class(z)

# compute negative lags (= leading values)
lag(z, -1)
lead(z, 1) # same as line above
identical(lead(z, 1), lag(z, -1)) # TRUE
Run Code Online (Sandbox Code Playgroud)