我正在构建一个包含多个日期和数字变量的回归模型。我快速检查一个日期变量
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
答案 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