将数据从Forecast()值添加到R中另一个图的末尾

时间:2020-04-08 01:11:54

标签: r ggplot2

我有一个csv文件,其中包含2010-2019年的人口估算值。我使用了predict()函数来估计2020年至2024年的人口。我如何将这两个图结合到2020年开始的地方,x轴上的2019年结束呢?函数ggarrange是最好的选择吗?

此外,我将如何更改x-tick标记以显示在2020、2021,2022、2023、2024?当前仅显示1,2,3,4,5。我尝试了scale_x_discrete函数,但无济于事。

library(ggplot2)
library(tidyr)
library(tidyverse)

pops <- read_csv("nst-est2019-popchg2010_2019.csv")
OK_pops<- filter(pops, NAME == "Oklahoma")
pop_OK <- pivot_longer(OK_pops,
        cols=starts_with("POP"),
        names_to="Year",
        names_prefix = "POPESTIMATE",
        values_to = "Population"
)

options(digits=4)
pop_OK <- transform(pop_OK, Population=as.numeric(Population))
pop_OK <- transform(pop_OK, Year=as.numeric(Year))

str(pop_OK)

ggplot(pop_OK) + geom_point(aes(x=Year, y=Population))
abline(pop_OK)


model <-lm(formula = Population ~ Year, data = pop_OK)
summary(model)
pred <- predict(model, newdata=data.frame(Year=2020:2024))
setNames(pred, 2020:2024)

plot(pred, pch = 16, col = "blue" )
scale_x_discrete(breaks=c("1", "2", "3", "4", "5"),
                  labels=c("2020","2021","2022","2023","2024"))

1 个答案:

答案 0 :(得分:1)

您需要使用类似于以下的rbind:

new_data <-rbind(pop_ok,pred $ fit)

您需要认识到预测函数具有三列拟合,即lwr(下部)和upr(上部)作为输出。如果抓住拟合列,那么您将失去上下置信区间。

希望这会有所帮助。

相关问题