我似乎无法从Arima模型中获得预测数据以在x轴上绘制日期或使用ggplot2进行绘制

时间:2019-07-24 07:41:33

标签: r ggplot2 model arima

我有一个数据集,它是一个58196长的单变量时间序列,可以从nc文件中读取。时间格式为“自1901-01-01以来的小时数”,但是当我在本机绘图中进行绘图时,它只是将数字放在x轴上,而不是日期上。我也真的很想使用ggplot2绘制此数据,我不确定如何执行以在x轴上显示日期的预测。

这是我当前的代码,并附上了我的预测。

    library(ncdf4)
    library(forecast)
    ncname <- "data"
    ncfname <- paste(ncname, ".nc", sep="")
    dname <- "pc"
    print(ncin)
    level <- ncvarget(ncin, "level")
    nlevel <- dim(level)
    time <- ncvar_get(ncin, "time")
    timeunits <- ncatt_get(ncin, "time", "units")
    ntime <- dim(time)
    data_array <- ncvar_get(ncin, dname)
    data_name <- ncatt_get(ncin, dname, "long_name")
    dataunits <- ncatt_get(ncin, dname, "units")
    fillvalue <- ncatt_get(ncin, dname, "_FillValue")
    nc_close(ncin)
    data_atlevel <- data_array[13, ] #Data at correct level
    model <- Arima(data_atlevel, order=c(5, 0, 2))
    datafcst <- forecast(model, level=95, h=10)
    datafcst

这是我得到的积分预测。

    Point Forecast     Lo 95       Hi 95
    58197     -1.0771861 -1.233741 -0.92063154
    58198     -1.0619501 -1.372808 -0.75109220
    58199     -1.0679265 -1.506646 -0.62920653
    58200     -1.0199718 -1.552383 -0.48756100
    58201     -1.0440858 -1.710606 -0.37756579
    58202     -0.9907978 -1.796984 -0.18461137
    58203     -0.9618964 -1.891371 -0.03242174
    58204     -0.8945481 -1.924210  0.13511352
    58205     -0.8809432 -2.024227  0.26234020
    58206     -0.8099497 -2.061208  0.44130892

在这里使用dput(data_atlevel)是我的数据数组的最后一个代码片段。

    -0.0164826595000697, 0.104653384815459, 0.144666301411712, 
    0.406755420463853, 
    0.542331794386273, 0.772911688508443, 0.828654158311162, 
    1.00638835512443, 
    1.02792247457942, 1.01310671932778, 0.970892191725733, 
    1.04831366415597, 
    0.973069827884041, 0.876318047545758, 0.752430017949216, 
    0.763014654544908, 
    0.713777524308546, 0.761635798278535, 0.683255478853632, 
    0.778303948835296, 
    0.782141199251199, 0.782386316509802, 0.645595202862218, 
    0.727508430007767, 
    0.626212602439461, 0.504371813146744, 0.274250430414235, 
    0.221935768196244, 
    0.0955978809727627, -0.0117079372064144, -0.220506096426176, 
    -0.280678113337438, -0.453903395790332, -0.558297954401431, 
    -0.684971715619909, 
    -0.564071754625509, -0.433913981524223, -0.344838175285692, 
    -0.276691358483194, 
    -0.0548432651627894, 0.0987101422673561, 0.161095707907232, 
    0.192603198478924, 
    0.37047216630912, 0.596148685775624, 0.709837093562596, 
    0.747193326805386, 
    0.834313129573062, 0.846131581908811, 0.725875974537757, 
    0.513447772481864, 
    0.481781009489498, 0.500408010535818, 0.493558364249431, 
    0.442018049583641, 
    0.563841476333714, 0.512644345356563, 0.406415545768519, 
    0.304138546560665, 
    0.344371236404124, 0.318640232058254, 0.288404684269042, 
    0.148595436033634, 
    0.242808391810353, 0.314848026042242, 0.312313203476422, 
    0.237498989259957, 
    0.40957356897388, 0.481207219937924, 0.377373174821711, 
    0.262952160510882, 
    0.291153919328814, 0.217630757477135, 0.221005490614492, 
    0.183186952148093, 
    0.259937980564005, 0.249506614072888, 0.183332972502036, 
    0.0364441950508707, 
    0.053725551911807, 0.0693769134725313, -0.0808066792116259, 
    -0.18171813264877, 
    -0.0493799795907768, 0.0445452522186435, 0.122164325736002, 
    0.212984374525893, 
    0.29001342164436, 0.298053187322413, 0.291905411666604, 
    0.195592541780216, 
    0.267534318598644, 0.368070820767661, 0.328049383662298, 
    0.194165510823487, 
    0.260603283301608, 0.342147730543151, 0.31173310207737, 
    0.355312158043337, 
    0.571008261101836, 0.706944792543549, 0.82879806488094, 
    0.974436043310877, 
    1.14302880864744, 1.20557808113165, 1.21299356275298, 
    1.17815791170924, 
    1.28295658294446, 1.19760427504148, 1.04365225746354, 
    0.899849906805248, 
    0.892025832204036, 0.805459364633312, 0.726511050764506, 
    0.718865825514464, 
    0.970667434937238, 1.17770847391413, 1.24344799640867, 
    1.19950652463226, 
    1.16726900972386, 1.03832992303071, 0.798481676817567, 
    0.620341026264972, 
    0.595943630221845, 0.56625911849429, 0.535218489717758, 
    0.48156033792909, 
    0.555048357972321, 0.555523556583205, 0.436775498179143, 
    0.335189690873195, 
    0.335735990769063, 0.156197092072704, -0.109413942180462, 
    -0.309332840349659, 
    -0.423112123260487, -0.582305168516083, -0.733093879897233, 
    -0.878533966114525, 
    -0.913591482716756, -0.927739936050881, -1.00944828473482, 
    -0.954596475363381, 
    -0.65373712144728, -0.476517683595976, -0.422610668989477, 
    -0.430362132554042, 
    -0.351913432549997, -0.270696606789033, -0.186484295363074, 
    -0.099740139097897, 
    0.029704154069367, 0.0664090863070563, -0.150476314540677, 
    -0.396841710776302, 
    -0.486497118842713, -0.593497285303129, -0.705987971623734, 
    -0.781265400572687, 
    -0.762280716228769, -0.896848223341563, -0.941459725854574, 
    -1.00367829312857, 
    -0.9908477396666)

我以前的ggplot2代码是

    library(ggplot2)
    dates <- as.Date(time/24, origin="1900-01-01") #Interval is 6hrs
    data_frame <- data.frame(datafcst, dates)
    ggplot(data_frame, aes(x=dates, y=datafcst) +geompoint())

这会给我带来错误,因为大小不一样,但是我想要的是每次绘制的所有数据+预测数据以及预测时间。

我希望能够将此预测与先前观察到的数据作图,以获得x轴上带有日期的ggplot。我很困,所以任何帮助都会很棒。

非常感谢!

0 个答案:

没有答案