Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I have a customer with the sample attached data.
Who wants me to display predictive values for next one year.
Can anyone of you, show me or send me the Required R codes required to generate the futuristic data for Next one year based on the sample file:
Activity Period : is my Field for Period
Passenger Count: is my field for values.
I have downloaded R-studio.
But not understanding the concept of Ts, arima etc.
If someone can explain to me.. that will be very much appreciated . My Skpye id: ashvinzoe
At the end, i want to use the predicted data to display in a graph.
( from qlikview i know we have linear prediction, however Customer wants an ideal forecast graph )
Regards,
Ashvin
Ok guy, i gat it working.
// This is going to generate all the difference between the present and past row of data.
// Remember to send the DAta Measure into that. NEVER THE DATE.
// lag = 1 :: diference between 2 rows immediate
// lag = 1 :: difference bewen Two 2 rows... behind.
dif1 = diff(dfSummarize[[2]] , lag = 1 )
// When plot of you will know whether it is stationary or not.
plot(dif1)
// UNTIL you get a staiotnay plot... u need to keep on Differentioating...
// remember... you need to Diff the diff ...
// Check these tw0 ONLY WHEN YOU HAEV A STATIONARY SERIES.. u can use these fucntion.
// numbe rof AR terms
pacf(dif1) // from this chart >> locate the PEEK. The highest. VALUE ABOVE THE BLUE LINE. Max line out of the RANGE ( Blue dotted lines)
// numbe rof MA terms
acf(dif1) // from this chart >> locate the PEEK. The highest.
// calculate the Fit
c(6,1,6) = 1 here is the number of Diff we have made. No of times we have differentiate to be stationary.
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
fit <- arima(x = dfSummarize[[2]] , order = c(12,1,12))
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
// WHY DONT U reduce the amount of data loaded and then when predict, do the prediction for KNOWN values.
// u will know whether the model is best fit.
// VALIDATION of Forecast data.
// Finally forcast .... H = 12.. depends on what you want to predict.. periods... how many values.
pForecast <- forecast(fit, h = 12)
Hi Ashvin,
I went through your dataset. May i understand at what level you would want to predict the data.
Thanks
Boopesh
For instance the last period was : 200606
And what is required is to predict till 200706.
I have managed to use grouping to get the Period per month.
> csvdata <- read.csv("MonthlyPassengerData_200507_to_201509.csv", header = TRUE)
> xPeriod <- csvdata[1]
> yPax <- csvdata["Passenger.Count"]
> df = data.frame(xPeriod,yPax);
// use library(data.table)
dfSummarize <- aggregate(Passenger.Count ~ Activity.Period, df, sum)
Activity.Period total
(int) (int)
1 200507 3225769
2 200508 3195866
3 200509 2740553
4 200510 2770715
5 200511 2617333
etc etc
----------------
Convert date from YYYYMM to YYYY-MM-DD
// where initialy dfSummarize[[1]] has a list of date in YYYYMM
dfSummarize[[1]] <- as.Date(paste(dfSummarize[[1]],"01", sep = ""), format = "%Y%m%d")
So from here... i need to get next 12 months data...
Ok guy, i gat it working.
// This is going to generate all the difference between the present and past row of data.
// Remember to send the DAta Measure into that. NEVER THE DATE.
// lag = 1 :: diference between 2 rows immediate
// lag = 1 :: difference bewen Two 2 rows... behind.
dif1 = diff(dfSummarize[[2]] , lag = 1 )
// When plot of you will know whether it is stationary or not.
plot(dif1)
// UNTIL you get a staiotnay plot... u need to keep on Differentioating...
// remember... you need to Diff the diff ...
// Check these tw0 ONLY WHEN YOU HAEV A STATIONARY SERIES.. u can use these fucntion.
// numbe rof AR terms
pacf(dif1) // from this chart >> locate the PEEK. The highest. VALUE ABOVE THE BLUE LINE. Max line out of the RANGE ( Blue dotted lines)
// numbe rof MA terms
acf(dif1) // from this chart >> locate the PEEK. The highest.
// calculate the Fit
c(6,1,6) = 1 here is the number of Diff we have made. No of times we have differentiate to be stationary.
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
fit <- arima(x = dfSummarize[[2]] , order = c(12,1,12))
fit <- arima(x = dfSummarize[[2]] , order = c(6,1,6) )
// WHY DONT U reduce the amount of data loaded and then when predict, do the prediction for KNOWN values.
// u will know whether the model is best fit.
// VALIDATION of Forecast data.
// Finally forcast .... H = 12.. depends on what you want to predict.. periods... how many values.
pForecast <- forecast(fit, h = 12)
Hi Ashvin,
This link here will give you more information on how to implement ARIMA.
https://www.otexts.org/fpp/8/7
Also, once done with your predictive model , you can plot the data in Qliksense in a line chart as I have done in my project (I made use of random forest time series forecasting).
You can color the line chart the way you need. Please check the image below: the red and the yellow lines are the confidence bands.
!
Hi,
I have similar request from my client to get forecast figures for next year using the sales data for last 3 years with ARIMA model. I don't have any idea on this ARIMA model. Could you please help me with this? Could you please share the steps which you followed.
Thanks,
Nimi