我正在制作一个代码,根据历史数据预测每小时的自行车租赁率。数据具有许多属性(如下所示),为了适应模型,我使用了线性回归模型,然后我预测了结果,它向我显示了一些意想不到的结果,如负值和十进制数。
这是我的火车对象的负责人:
> 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
我没想到会看到负值和小数。我做错了吗?
(此外,由于我使用的模型,我认为值不准确,但我不关心模型本身,因为我关心学习建模的基础知识。)