【发布时间】:2010-12-30 14:20:59
【问题描述】:
我是新的 R 用户。我有一个时间序列横截面数据集,虽然我找到了在 R 中滞后时间序列数据的方法,但我还没有找到创建滞后时间序列横截面变量的方法,以便我可以在分析中使用它们。
【问题讨论】:
标签: r time-series panel-data plm
我是新的 R 用户。我有一个时间序列横截面数据集,虽然我找到了在 R 中滞后时间序列数据的方法,但我还没有找到创建滞后时间序列横截面变量的方法,以便我可以在分析中使用它们。
【问题讨论】:
标签: r time-series panel-data plm
以下是您如何将lag() 函数与zoo(和面板系列数据)一起使用:
> library(plm)
> library(zoo)
> data("Produc")
> dnow <- pdata.frame(Produc)
> x.Date <- as.Date(paste(rownames(t(as.matrix(dnow$pcap))), "-01-01", sep=""))
> x <- zoo(t(as.matrix(dnow$pcap)), x.Date)
> x[1:3,1:3]
ALABAMA ARIZONA ARKANSAS
1970-01-01 15032.67 10148.42 7613.26
1971-01-01 15501.94 10560.54 7982.03
1972-01-01 15972.41 10977.53 8309.01
滞后 1:
> lag(x[1:3,1:3],1)
ALABAMA ARIZONA ARKANSAS
1970-01-01 15501.94 10560.54 7982.03
1971-01-01 15972.41 10977.53 8309.01
滞后 1:
> lag(x[1:3,1:3],k=-1)
ALABAMA ARIZONA ARKANSAS
1971-01-01 15032.67 10148.42 7613.26
1972-01-01 15501.94 10560.54 7982.03
正如 Dirk 所提到的,请注意不同时间序列包中滞后的含义。请注意xts 对此的不同处理方式:
> lag(as.xts(x[1:3,1:3]),k=1)
ALABAMA ARIZONA ARKANSAS
1970-01-01 NA NA NA
1971-01-01 15032.67 10148.42 7613.26
1972-01-01 15501.94 10560.54 7982.03
【讨论】:
对于横截面时间序列数据,包plm 非常有用。它具有滞后功能,考虑到数据的面板性质。
library(plm)
data("Produc", package="plm")
dnow <- pdata.frame(Produc)
head(lag(dnow$pcap,1))
ALABAMA-1970 ALABAMA-1971 ALABAMA-1972 ALABAMA-1973 ALABAMA-1974
NA 15032.67 15501.94 15972.41 16406.26 16762.67
包的一个问题是使用 with(或 inside 或 transform)会给你错误的答案。
head(with(dnow, lag(pcap,1)))
15032.67 15501.94 15972.41 16406.26 16762.67 17316.26
所以要小心。
【讨论】: