Здесь есть несколько проблем. Возможно, основная проблема заключается в том, что вы пытаетесь выполнить простую линейную регрессию на кривой экспоненциального роста. Это даст ужасные прогнозы.
В любом случае, в качестве упражнения по кодированию вы можете поступить следующим образом. Сначала убедитесь, что все ваши даты указаны в формате даты, а не в виде символа или фактора. Это гарантирует, что вы правильно разберетесь с подмножеством.
Covid$date <- as.POSIXct(Covid$date)
Covid_sub <- Covid[which(Covid$date >= as.POSIXct("2020-03-16") &
Covid$date <= as.POSIXct("2020-03-29")), ]
Теперь мы можем создать модель:
M1 <- lm(positive ~ date, data = Covid_sub)
Чтобы получить прогнозы для дат, которых не было в модели, мы создаем вектор желаемых дат. Мы передаем их в виде списка или фрейма данных в параметр newdata
в predict
:
new_dates <- seq(as.POSIXct("2020-03-30"), as.POSIXct("2020-04-08"), by = "day")
pred <- predict(M1, newdata = list(date = new_dates), interval = "confidence")
pred
#> fit lwr upr
#> 1 125704.7 109460.4 141948.9
#> 2 135885.9 117932.9 153838.9
#> 3 146067.1 126367.2 165767.0
#> 4 156248.3 134772.6 177724.0
#> 5 166429.5 143155.8 189703.3
#> 6 176610.8 151521.5 201700.0
#> 7 186792.0 159873.3 213710.7
#> 8 196973.2 168213.8 225732.6
#> 9 207154.4 176545.0 237763.8
#> 10 217335.7 184868.6 249802.7
Теперь мы можем увидеть, насколько плохо это соответствие, построив график с фактическими данными:
plot(Covid$date, Covid$positive)
lines(new_dates, pred[,1])
lines(new_dates, pred[,2], col = "red", lty = 2)
lines(new_dates, pred[,3], col = "red", lty = 2)
введите описание изображения здесь
Вы можете sh рассмотреть возможность использования log
из positive
и повторения регрессии. Вы можете сопоставить exp
прогнозов с исходными positive
результатами. Думаю, результат вас порадует.