【问题标题】:lm function with time variable带时间变量的 lm 函数
【发布时间】:2021-03-03 05:04:46
【问题描述】:

我今天更新了我的 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 个数值变量,该函数不会返回错误。

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

【问题讨论】:

  • 可能你正在寻找lm(value~Date, df) 日期不可能是响应变量
  • 它确实修复了错误,但现在我得到了每天的系数。有什么方法可以得到整个数据框的趋势线斜率?

标签: r lm trendline


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 是股票市场价格的数据(我在这个例子中只选择了1个月的数据,仪表盘中使用了25年的数据)。回归线只是为了表明股票价格随时间的变化情况。
  • @BrechtSreukers 那么运行日的第一个选项将是解决方案。或者,如果您只想打印它:使用 ggplot(...) + geom_smooth(method = "lm")
  • 使用运行天数作为变量,完美运行!我使用以下代码添加了这个变量(以防万一有人遇到同样的问题):df$NumDays &lt;- round(difftime(df$Date,mindate ,units="days"), digits = 0) [对不起,您回答时仍在输入此评论,但我已经发现您的解决方案运行良好]
猜你喜欢
  • 1970-01-01
  • 2011-11-23
  • 2019-06-01
  • 2020-02-13
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2018-06-04
相关资源
最近更新 更多