【问题标题】:Linear model in R with time as variableR中以时间为变量的线性模型
【发布时间】:2015-07-07 02:44:18
【问题描述】:

感谢@Metrics 对原始问题的回答。

我想从两个变量中创建一个线性模型。我的解释变量是时间变量。这是因素,所以我将它转换为 POSIXlt,但是当我这样做时,R 返回了错误

 Error in (function (formula, data = NULL, subset = NULL, na.action =
 na.fail,  :    invalid type (list) for variable 'Time2'

如何制作以时间为变量的线性模型?

老问题: 30,000 次观察并在 R 中拟合模型

我有一个包含 36,729 个观察值的数据框。我想制作两个变量的模型,以便我可以使用方程式而不是所有这些数据点。现在让我们简单地寻找一个线性模型。

lm(v2~v1,df)

但是,由于数据帧的大小很大,R(或者我的计算机,也许?)似乎无法处理该命令。运行命令一个小时后,R 仍未完成处理。

我该怎么办?我只需要等待更长的时间吗?有没有办法让数据框的负载更轻?是否有用于大量数据的软件包? (我真的不认为这种规模符合“大量数据”的条件,但对于 R 和/或我的计算机来说,它确实似乎很多。)

【问题讨论】:

  • 我刚刚在 30.000 次随机观察中运行了 lm,它在 0.03 秒内完成。您的数据还有什么特别之处吗?
  • @Molx 也一样。 0.03 秒用户时间。
  • 运行这个:df <- data.frame(v1=rnorm(36729), v2=rnorm(36729)); system.time(lm(v1~v2, data=df)) 给我 0.03 秒的用户时间来解决这种规模的问题。您的数据集一定发生了一些特别的事情。
  • 可能有助于发布 str(df[c("v1", "v2")]) 的输出,以便我们查看数据是否有任何问题。

标签: r model large-data


【解决方案1】:

一个原因可能是(请参阅str(data))您的解释变量是因子变量:查看因子解释变量和连续解释变量的时间差。

library(microbenchmark)
microbenchmark(lm(Sepal.Length~Sepal.Width,data=iris),lm(Sepal.Length~Species,data=iris),times=1000)
Unit: microseconds
                                        expr      min       lq     mean   median       uq       max neval cld
 lm(Sepal.Length ~ Sepal.Width, data = iris)  896.324  948.129 1007.356  976.963 1011.174  2460.735  1000  a 
     lm(Sepal.Length ~ Species, data = iris) 1106.476 1173.432 1330.917 1211.064 1250.406 45466.654  1000   b

【讨论】:

  • 哦,我想可能是这样
  • 好吧,这个答案是有道理的,我认为它是正确的。但是,我仍然无法使我的命令起作用。查看问题编辑。
  • 我在问题中看不到任何编辑。问题是:您的变量 V2 是连续变量还是因子?如果您想将其视为连续的,请将其更改为数字(如果是数字):data$V2<-as.numeric(as.character(data$V2))(我假设没有 NA.s
  • 现已编辑。这是一个因素,所以我更改为日期时间,但仍然无法正常工作。
  • 好的。我认为这是一个更具统计意义的问题。你想在这里做什么?
猜你喜欢
  • 1970-01-01
  • 2015-07-21
  • 2017-03-04
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 2014-11-25
  • 2018-03-11
相关资源
最近更新 更多