这是一个非常简单的问题,但我无法找到明确的答案,所以我想我会问它.我使用该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它,因为它自动处理多个人的滞后,并且在时间序列中略有差距.
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)
| 归档时间: |
|
| 查看次数: |
4332 次 |
| 最近记录: |