带时间变量的 lm 函数

lm function with time variable

我今天更新了我的 R 版本,现在 lm() 函数出现错误。 现在 运行 R 版本 4.0.3 (2020-10-10)

这是我保存在 df 中的数据结构:

(如果图片未加载,它是一个包含 2 列的数据框:'Date' 和 'Value'。(使用 as.Date() 函数将日期保存为日期)

我想知道线性回归线的斜率,所以我使用了下面的函数:

trend <- lm(formula = Date~Value, data=df)

它通常会 return 我的趋势线的截距和斜率,但在我的 R 版本更新后,我得到以下错误:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : NA/NaN/Inf in 'y'

我的数据框中没有 NA 值,而且我还没有找到解决此错误的方法。有人建议如何修复它或了解趋势线斜率的其他方法吗?我认为这是因为我使用了日期变量,因为如果我使用 2 个数字变量,该函数不会 return 出错。

提前感谢您的宝贵时间和帮助!

如果您想对一个变量使用简单的线性回归,您可以将日期转换为 运行 天(自开始以来过去的天数)。

看看你的数据,这不会给你带来太多,因为它看起来不是很“线性”。因此,您可以将日期解构为相关组件(也可能使用上面的 运行 日期):

  • 一个月中的第几天
  • 星期几
  • quarter/semester

(或其中的一部分)并对这些整数执行多元线性回归。

最后但并非最不重要的时间序列预测将是最正确的方法(auto.arima()即)