建立递归回归

时间:2020-06-12 18:59:54

标签: r recursion regression

我想建立一个递归回归。分别对每个国家/地区的每种产品执行回归。因此,我使用了嵌套功能。 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)
}

问题是我的“嵌套”数据(列表),因为没有它就可以工作,但是在这种情况下,我没有得到想要的结果。

有人可以帮助我吗?

谢谢! :)

0 个答案:

没有答案