I am predicting probabilities per hour for every observation with a random forest model. But for some reason the prediction for every hour within a observation is the same. This shouldn't be the case since the probability is different for every hour.
I have masked some data for privacy reasons.
heres a sample of my data, where ti
is the hours variable:
$ y : Factor w/ 2 levels "0","1": 1 2 1 1 2 2 1 2 2 1 ...
$ geslacht : Factor w/ 2 levels "Dhr.","Mevr.": 2 2 1 1 1 2 1 1 2 2 ...
$ ti : Factor w/ 12 levels "1","2","3","4",..: 12 12 5 8 9 1...
$ provider : Factor w/ 8 levels "1","2","3","4",..: 5 6 5 5 4 1 ...
$ duur : Factor w/ 2 levels "12","24": 2 2 2 2 2 2 2 2 2 2 ...
$ pcn : int 3xxx 2xxx 9xxx 5xxx 2xxx 1xxx ...
$ prov : Factor w/ 13 levels "1","2","3","4",..: 2 2 10 6 2 ...
$ pm : num 45 44 25 20 43 30 35 37 13.5 17.5 ...
I run the following code:
cols<-c("y","geslacht","ti","provider","duur","prov")
for(i in cols){
r_data[,i]=as.factor(r_data[,i])
}
Then I extract rownames:
names_rows <- row.names(r_data)
Then I'm running the following random forest model in rstudio.
modelRandom = randomForest(y~ti+provider+pm+duur+geslacht+prov+pcn, data=r_data, mtry=4, ntree=30)
After this I run the following code to make the data ready to get predictions per hour.
n_row <- nrow(r_data)
newdata <- data.frame(r_data[rep(1:n_row, 12), 2:15], ti = rep(1:12, each = n_row))
And then I run the following code to get predictions per hour per observation:
predictions <- data.frame(predict(modelRandom, newdata, type = 'prob'),
ti = rep(1:12, each = n_row),
names_rows = as.numeric(rep(names_rows, times = 12)))
lastly I run the following code to get the predictions in a table:
preds %>%
select(X1, ti, names_rows) %>%
group_by(ti) %>%
mutate(z = 1 : n_row) %>%
spread(ti, X1) %>%
select(-z)
names_rows `1` `2` `3` `4` `5` `6` `7` `8` `9` `10` `11` `12`
* <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
2 2 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667
3 3 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
4 4 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
5 5 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333
6 6 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333
7 7 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667
8 8 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667
9 9 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667
10 10 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
# ... with 356,304 more rows
As you can see, every hour has the same probability. Where am I making a mistake?