首页 > 解决方案 > 带时间变量的 lm 函数

问题描述

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

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

数据框

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

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

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

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

lm.fit 中的错误(x,y,offset = offset,singular.ok =singular.ok,...):'y' 中的 NA/NaN/Inf

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

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

标签: rlmtrendline

解决方案


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

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

  • 一个月中的哪一天
  • 一周中的天
  • 星期
  • 季度/学期

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

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


推荐阅读