我想建立一个递归回归。分别对每个国家/地区的每种产品执行回归。因此,我使用了嵌套功能。 Y是需求,X1至X3是自变量。时间为40年。我首先使用了简单回归,这成功了。但是到了40年后,我才得到结果。因此,我想构建一个递归回归,它在前9年(t0至9年)后取最新值,并对t0至10年,t0至11年,t0至12年……执行回归。 / p>
简单回归的结果是:
# reproducible data
df <- tibble(Country = as.factor(rep(c(1, 2, 3, 4), each = 200)),
YEAR = rep(rep(c(1971:2010), each = 1), 20),
Product = rep(c(1:20), each = 40),
Y = rnorm(800),
X1 = rnorm(800),
X2 = rnorm(800),
X3 = rnorm(800))
# nest data
data_nest <- df %>%
group_by(Country, Product) %>%
nest() %>%
ungroup()
lm.function <- function(x, formula) {
lm(formula = formula,
data = x)
}
# using normal regression
data_lm <- data_nest %>%
mutate(lm = map(
.x = data,
.f = lm.function,
formula = Y ~ X1 + X2 + X3
))
如何更改lm.function以便执行所需的递归回归?
我的想法行不通-我尝试了很多像Roll或Rollreg这样的Package,但没有任何效果
lm.function = function(x, formula) {
roll_regres(formula = demand ~ sum_cases + weekly_hits + sum_deaths,
data = x, width = 9L)
}
问题是我的“嵌套”数据(列表),因为没有它就可以工作,但是在这种情况下,我没有得到想要的结果。
有人可以帮助我吗?
谢谢! :)