我正在制作一个代码,根据历史数据预测每小时的自行车租赁率 . 数据具有许多属性(如下所示),为了适应模型,我使用了线性回归模型,然后我预测了结果,它向我显示了一些意外的结果,如负值和十进制数 .
这是我的火车对象的头部:
> head(train)
datetime season holiday workingday weather temp atemp humidity windspeed casual registered count hour weekday month year
1 2011-01-01 00:00:00 1 0 0 1 9.84 14.395 81 0.0000 3 13 16 0 6 0 2011
2 2011-01-01 01:00:00 1 0 0 1 9.02 13.635 80 0.0000 8 32 40 1 6 0 2011
3 2011-01-01 02:00:00 1 0 0 1 9.02 13.635 80 0.0000 5 27 32 2 6 0 2011
4 2011-01-01 03:00:00 1 0 0 1 9.84 14.395 75 0.0000 3 10 13 3 6 0 2011
5 2011-01-01 04:00:00 1 0 0 1 9.84 14.395 75 0.0000 0 1 1 4 6 0 2011
6 2011-01-01 05:00:00 1 0 0 2 9.84 12.880 75 6.0032 0 1 1 5 6 0 2011
4 3 6 0 2011
5 4 6 0 2011
6 5 6 0 2011
请注意列'count',我们的响应变量 .
这里我创建一个排除一些变量的模型 .
> fit = glm(count ~ season + holiday + workingday + weather + temp + humidity + hour+ weekday+ month +year , data = train)
现在我创建了一个新对象来将其用于预测,并将上述模型中的所有变量放入:
> newdata = train[,c(2,3,4,5,6,8,13,14,15,16)]
最后,我运行predict()并将结果存储在newdata的新列中
newdata$count <- predict(fit, newdata)
你猜怎么着 ?
> head(newdata)
season holiday workingday weather temp humidity hour weekday month year count
10887 1 0 1 1 10.66 56 0 4 0 2011 -30.0948283
10888 1 0 1 1 10.66 56 1 4 0 2011 -22.6578089
10889 1 0 1 1 10.66 56 2 4 0 2011 -15.2207896
10890 1 0 1 1 10.66 56 3 4 0 2011 -7.7837702
10891 1 0 1 1 10.66 56 4 4 0 2011 -0.3467508
10892 1 0 1 1 9.84 60 5 4 0 2011 -8.7999703
> tail(newdata)
season holiday workingday weather temp humidity hour weekday month year count
11138 1 0 1 2 6.56 55 18 1 0 2011 69.14183
11139 1 0 1 1 12.30 61 19 1 0 2011 113.75079
11140 1 0 1 3 6.56 59 20 1 0 2011 40.03549
11141 1 0 1 3 6.56 59 21 1 0 2011 47.47251
11142 1 0 1 2 6.56 59 22 1 0 2011 90.75131
11143 1 0 1 2 6.56 64 23 1 0 2011 88.01509
- 有一件事我忘了提 . 培训集包括给定月份前19天的每小时租金,我们想要预测的测试数据是剩余天数 . 我尝试仅在第一个月创建模型(因为它应该是,但在上面的代码中没有说明),但结果仍然有奇怪的负数和小数 .
我没想到会看到负值和小数 . 难道我做错了什么 ?
(此外,由于我使用的模型,我认为值不准确,但我并不关心模型本身,因为我关心的是学习建模的基础知识 . )