Создание переменной поперечного сечения временных рядов с запаздыванием в R

StackOverflow https://stackoverflow.com/questions/1971461

  •  21-09-2019
  •  | 
  •  

Вопрос

Я новый пользователь R.У меня есть набор данных поперечного сечения временных рядов, и, хотя я нашел способы запаздывать данные временных рядов в R, я не нашел способа создать переменные поперечного сечения временных рядов с запаздыванием, чтобы я мог использовать их в своем анализе.

Это было полезно?

Решение

Вот как вы можете использовать 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

Как упомянул Дирк, будьте осторожны со значением задержки в различных пакетах временных рядов.Обратите внимание, как 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

Другие советы

Для данных перекрестных временных рядов пакет пожалуйста очень полезно.Он имеет функцию задержки, которая учитывает панельный характер данных.

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 (или внутри, или преобразование) дает неверный ответ.

head(with(dnow, lag(pcap,1)))
15032.67 15501.94 15972.41 16406.26 16762.67 17316.26

Так что будь осторожен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top