【问题标题】:Predictive power of date variable reduces when changed from as.Date to as.numeric当从 as.Date 更改为 as.numeric 时,日期变量的预测能力会降低
【发布时间】:2016-07-19 13:13:22
【问题描述】:

我正在构建一个包含多个日期和数字变量的回归模型。我快速检查了一个日期变量

    lm.fit = lm(label ~ Firstday, data = rawdata)
    summary(lm.fit)$r.squared   

衡量其对模型的预测影响。这占方差的 41%。我现在尝试将日期更改为数字,以便更好地使用该变量。我用了命令

    as.numeric(as.POSIXct(rawdata$Firstday, format = "%Y-%m-%d"))

这样做将方差减少到 10% - 这不是我想要的。我做错了什么,我该怎么做?

我看过https://stats.stackexchange.com/questions/65900/does-it-make-sense-to-use-a-date-variable-in-a-regression,但我并不清楚答案。

编辑 1:

我所做的可重现代码示例如下所示:

 label = c(0,1,0,0,0,1,1)
 Firstday = c("2016-04-06", "2016-04-05", "2016-04-04",
     "2016-04-03", "2016-04-02", "2016-04-02","2016-04-01")
 lm.fit <- lm(label ~ Firstday)
 summary(lm.fit)$r.squared

[1] 0.7083333

更改为数字时:

 Firstday = as.numeric(as.POSIXct(Firstday, format="%Y-%m-%d"))

我现在明白了

 lm.fit <- lm(label ~ Firstday)
 summary(lm.fit)$r.squared

 [1] 0.1035539

【问题讨论】:

标签: r date posixct


【解决方案1】:

这是因为你原来的日期列表实际上只是一个项目列表,没有任何日期顺序信息。

请参阅下面我如何将它们更改为任意字母以获得相同的结果。第三个代码 sn-p 返回与第一个代码 sn-p 相同的 r2。

label <- c(0,1,0,0,0,1,1)
Firstday1<- c("2016-04-06","2016-04-05","2016-04-04","2016-04-03","2016-04-02","2016-04-02","2016-04-01")
str(Firstday1)
lm.fit1 <- lm(label~Firstday1)
summary(lm.fit1)$r.squared
[1] 0.7083333


Firstday2 <- as.numeric(as.POSIXct(Firstday1,format="%Y-%m-%d"))
str(Firstday2)
lm.fit2 <- lm(label ~ Firstday2)
summary(lm.fit2)$r.squared
[1] 0.1035539


Firstday3<- c("a","b","c","d","e","e","f")
str(Firstday3)
lm.fit3 <- lm(label~Firstday3)
summary(lm.fit3)$r.squared
[1] 0.7083333

【讨论】:

  • 非常真实!如果我理解正确,它更像是模式识别结果,而不是与日期相关的结果。如果是这种情况,如何将“日期”项目列表转换为仍能捕获原始模式的数字格式?
  • 听起来你可能追求的是时间序列分析。
猜你喜欢
  • 2014-11-30
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多