Вот решение, использующее пакет dplyr, вы можете заметить, что в приведенном ниже коде я явно ссылаюсь на функцию отставания от dplyr, а не на базу R (статистика).Это связано с тем, что функция отставания от dplyr не требует ввода временного ряда.
Я также хотел бы отметить, что две формулы, которые вы перечислите, могут давать разные результаты регрессии, так как вы будете запускать их для разных наборов данных, например
Value1 (k, t + 1) ~ Value2 (k, t): запуск в период с 1-01-2012 по 1-03-2012
Value1 (k, t)~ Value2 (k, t-1): запуск в период с 1-02-2012 по 1-04-2012
library("tidyverse")
df <- data.frame(User = c(rep("A", 4), rep("B", 4)),
Date = rep(seq.Date(as.Date("2012-01-01"), as.Date("2012-01-04"), by = "day"), 2),
Value1 = c(4, 5, 6, 7, 2, 3, 4, 5),
Value2 = c(3, 7, 1, 4, 4, 2, 9, 3))
df2 <- df %>% arrange(User,Date) %>%
group_by(User) %>%
mutate(lag_v2 = dplyr::lag(Value2),
lead_v1 = dplyr::lead(Value1))
df3<-df2[!is.na(df2$lag_v2),]
df4<-df2[!is.na(df2$lead_v1),]
summary(lm(Value1~lag_v2,data=df3))
summary(lm(lead_v1~Value2,data=df4))