我正在制作一个代码,根据历史数据预测每小时的自行车租赁率 . 数据具有许多属性(如下所示),为了适应模型,我使用了线性回归模型,然后我预测了结果,它向我显示了一些意外的结果,如负值和十进制数 .

这是我的火车对象的头部:

> 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天的每小时租金,我们想要预测的测试数据是剩余天数 . 我尝试仅在第一个月创建模型(因为它应该是,但在上面的代码中没有说明),但结果仍然有奇怪的负数和小数 .

我没想到会看到负值和小数 . 难道我做错了什么 ?

(此外,由于我使用的模型,我认为值不准确,但我并不关心模型本身,因为我关心的是学习建模的基础知识 . )