Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 1. Установить рабочую папку, в которой находится файл с данными
- setwd("D:/e7_ind/ ")
- # 2. Прочитать данные из файла в таблицу M
- M<-read.csv2 ("data1.txt", header=TRUE, sep="\t", dec = ",")
- M <- M[ , -3]
- M <- M[ , -3]
- M
- # 4. Построить график временного ряда
- plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o", col="blue")
- # Временной ряд описывается аддитивной моделью.
- # 5. Построить коррелограмму
- acf(M$totals, type="correlation", plot=TRUE, main="Коррелограмма")
- # 6. Провести сглаживание временного ряда методом скользящего среднего
- library("forecast")
- sn <- ma(M$totals, order=12, centre = TRUE) # сгладить временной ряд методом скользящего среднего
- plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o")
- lines(sn, col="green") # нарисовать сглаженный ряд
- # 7. Рассчитать сезонную компоненту временного ряда
- A<-matrix(data=M$totals-sn, nrow = 12) # вычесть из значений временного ряда сглаженное значение
- SM<-apply(A, 1, function(x) mean(x, na.rm = TRUE))
- M.S<-rep(SM,times=12) # записать сезонную составляющую временного ряда
- M.S
- # 8. Рассчитать тренд временного ряда
- Tr<-M$totals-M.S # удалить сезонную составляющую из временного ряда
- T<-seq(from=1, to=144) # сформировать значения t
- regM<-lm(Tr~T) # построить линейную регрессию
- M.Trend<-coef(regM)[1]+coef(regM)[2]*T # записать тренд для временного ряда
- M.Trend
- # 9. Рассчитать значения временного ряда по модели
- M.fit<-M.Trend+M.S # рассчитать значения временного ряда по модели
- plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o") # график временного ряда
- lines(M.fit, col="red") # график модели временного ряда
- lines(M.Trend, col="green") # график тренда временного ряда
- sum(abs((M$totals - M.fit)/M$totals))/length(M$totals)*100 # рассчитать MAPE = Относительная ошибка аппроксимации > 20 %
- # 10. Построить прогноз
- M.F<-array(dim = 36) # создать массив для хранения прогноза
- T1<-seq(from=49, to=48+36) # создать массив для времени прогноза
- M.F<-(coef(regM)[1]+coef(regM)[2]*T1)+SM # рассчитать прогнозные значения
- plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o", xlim =
- c(1,48+36), ylim = c(min(M$totals), 37000)) # график временного ряда
- lines(M.fit, col="red") # график модели временного ряда
- lines(x=T1 , y=M.F, col="green") # график прогноза
- abline(regM)
- # 11. Исследовать остатки
- M.Res<-M$totals-M.fit # рассчитать остатки
- plot(M.Res, type="o", main="Остатки", ylab="value", xlab="month") # график остатков
- acf(M.Res, main="Коррелограмма остатков") # коррелограмма остатков
- Box.test(M.Res) # проверить остатки на белый шум
Advertisement
RAW Paste Data
Copied
Advertisement