我正在尝试使用自己创建的模型预测新日期。 第一个问题是建立一个模型,研究从2020-03-16到2020-03-29的黑白日期和正变量之间的关系。 我使用了以下代码:
Covid = Covid[, c(1,3)]
head(Covid)
subset = Covid$date>="2020-03-16" & Covid$date <= "2020-03-29"`
Covid_sub = Covid[subset,]`
M1 = lm(positive ~ date, data = Covid_sub)
然后我需要使用模型预测新日期 日期是2020-03-30至2020-04-08 它只有10个日期,但我总是得到11 -24行。正确吗,我只需要解释前10行中的数据?这是我使用的代码
subset2 = Covid$date>="2020-03-30" & Covid$date <= "2020-04-08"
Covid_sub2 = Covid[subset2,]
predict(Covid = subset2,M1, interval = "confidence")
fit lwr upr
11 115947.657 70520.579 161374.73
12 105766.435 61302.585 150230.29
13 95585.213 51940.289 139230.14
14 85403.991 42425.441 128382.54
15 75222.769 32750.860 117694.68
16 65041.547 22910.783 107172.31
17 54860.325 12901.174 96819.48
18 44679.103 2719.952 86638.25
19 34497.881 -7632.883 76628.65
20 24316.659 -18155.250 66788.57
21 14135.437 -28843.113 57113.99
22 3954.215 -39690.709 47599.14
23 -6227.007 -50690.857 38236.84
24 -16408.229 -61835.306 29018.85
这里是数据
date positive
1 2020-04-08 423164
2 2020-04-07 392594
3 2020-04-06 361331
4 2020-04-05 332308
5 2020-04-04 305755
6 2020-04-03 271988
7 2020-04-02 239099
8 2020-04-01 210816
9 2020-03-31 184683
10 2020-03-30 160530
11 2020-03-29 139061
12 2020-03-28 118234
13 2020-03-27 99413
14 2020-03-26 80735
15 2020-03-25 63928
16 2020-03-24 51954
17 2020-03-23 42152
18 2020-03-22 31879
19 2020-03-21 23197
20 2020-03-20 17033
21 2020-03-19 11719
22 2020-03-18 7730
23 2020-03-17 5722
24 2020-03-16 4019
答案 0 :(得分:1)
这里有一些问题。可能的主要问题是您正在尝试对指数增长曲线进行简单的线性回归。这将带来可怕的预测。
无论如何,作为编码练习,您可以像这样进行。首先,请确保您的日期全部采用日期格式,而不要使用字符或因子。这将确保您正确设置子设置。
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
的{{1}}参数:
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)
中的log
并重复回归。您可以将预测的positive
与原始exp
的结果作图。我想您会对结果感到满意。