[英]Making prediction from a time series?
我想根據時間序列創建一個預測模型。 我有一個包含2列(日期和案例)的數據框。 日期欄從2008年1月1日到2013年12月1日。 案件每個月都有一定數量(但是,在72個觀察值中,有30多個具有NA
值)。因此,我想創建一個預測模型來預測2013-12-01之后的下一個3-4個月的案件嗎? 誰能幫我?
這是dput(my data)
輸出dput(my data)
structure(list(Date2 = structure(c(13879, 13910, 13939, 13970,
14000, 14031, 14061, 14092, 14123, 14153, 14184, 14214, 14245,
14276, 14304, 14335, 14365, 14396, 14426, 14457, 14488, 14518,
14549, 14579, 14610, 14641, 14669, 14700, 14730, 14761, 14791,
14822, 14853, 14883, 14914, 14944, 14975, 15006, 15034, 15065,
15095, 15126, 15156, 15187, 15218, 15248, 15279, 15309, 15340,
15371, 15400, 15431, 15461, 15492, 15522, 15553, 15584, 15614,
15645, 15675, 15706, 15737, 15765, 15796, 15826, 15857, 15887,
15918, 15949, 15979, 16010, 16040), class = "Date"), Cases = c(16352L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 10L, NA, 23L, 138L, NA, 18L,
NA, 3534L, 43L, NA, 3L, 118L, NA, 172L, 4194L, NA, 9L, 2L, 162L,
NA, 112L, 115L, NA, NA, 119L, NA, NA, 172L, NA, 25L, NA, NA,
11L, 4L, 457L, 56L, NA, 148L, 446L, 30L, NA, NA, NA, NA, NA,
NA, NA, 583L, NA, 180L, 193L, NA, 77L, NA, 18L, 15L, NA, NA,
1L, NA, NA, NA)), .Names = c("Date2", "Cases"), row.names = c(NA,
-72L), class = "data.frame")
預先感謝您的貢獻。
也許這可以幫助您入門,但是進行預測很困難,並且需要很好地理解您的數據。 此處提供的信息不足以對IMO做出正確的預測。 這是一個廣義的線性模型,其案例是自首次觀察以來的天數和一年中的月份的函數,因為僅關注數據,看起來計數可能與月份有關,並且隨着年份的增加而減少。
library(ggplot2)
dat <- dats[complete.cases(dats),]
dat$days <- dat$Date2 - dat$Date2[1]
mod2 <- glm(Cases ~ days + format(Date2, "%m"), data = dat, family = poisson())
dat$predicted <- "observed"
## See how the model performed against old data
dat <- rbind(dat, data.frame(
Date2 = dat$Date2,
Cases = predict(mod2, type = "response"),
predicted = "predicted",
days = dat$days))
## predict future cases
futureDates <- seq(as.Date("2014/1/1"), by = "month", length.out = 12)
future <- data.frame(
Date2 = futureDates,
days = futureDates - dat$Date2[1])
datFuture <- rbind(dat, data.frame(Date2 = future$Date2,
days = future$days,
Cases = predict(mod2, type = "response", newdata = future),
predicted = "predicted"))
ggplot(datFuture, aes(Date2, Cases, col = factor(predicted), group = predicted)) +
geom_point(pch = 3) + ylab("Predicted Cases") + xlab("Date") +
geom_line(lty = 2, lwd = 1.5, alpha = 0.2) +
geom_smooth(alpha = 0.1, fill = NA)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.