首页 > 解决方案 > 如何使用跑步者计算 rlm 的跑步斜率?

问题描述

我有一个包含客户 ID、月份和当月总购买量的数据框架“客户”。我正在尝试使用稳健回归计算 12 个月窗口的运行斜率。

我尝试了以下方法:

Coef <- function(x) {return(rlm(cbind(x)~cbind(1:length(x)))$coefficients[2])}
customer_slope = customers %>% mutate(slope = runner(x=total_purchases,k=12,f=Coef))

我收到以下错误:

x 'x' 是单数:单数拟合未在 'rlm' 中实现

如果我运行一个示例,该函数会返回我所期望的:

Coef(c(4,11,7,15,5,14,8,9,14,17,14,13))

cbind(1:length(x)) 0.6888112

标签: rregressionrunnersingular

解决方案


所以我遇到了类似的问题,最后使用滑块找到了以下解决方案。这提供了 3 天的滚动估算(当然您可以根据需要进行更改)。这并不能完全得到你的答案(你可能会通过循环得到),但大部分都是这样。

library(MASS)
library(dplyr)
library(slider)

dat <- tibble::tibble(customers = c(4,11,7,15,5,14,8,9,14,17,14,13)) %>% 
  mutate(t = 1:n() %>% as.numeric())

dat %>% 
  mutate(results = slide_dbl(.x = .,
                             .f = ~rlm(customers ~ t, k = 12, data = .x)$coefficients[2],
                             .before = 2,
                             .complete = T))

推荐阅读