当从as.Date更改为as.numeric时,日期变量的预测能力会降低

时间:2016-07-19 13:13:23

标签: r date posixct

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

    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

1 个答案:

答案 0 :(得分:3)

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

请参阅下文,我如何将它们更改为任意字母以获得相同的结果。第三个代码段返回与第一个代码段相同的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