Advertisement
annstasi

Эконометрика 7 индивидуальная

May 16th, 2022
304
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # 1. Установить рабочую папку, в которой находится файл с данными
  2. setwd("D:/e7_ind/ ")
  3. # 2. Прочитать данные из файла в таблицу M
  4. M<-read.csv2 ("data1.txt", header=TRUE, sep="\t", dec = ",")
  5. M <- M[ , -3]
  6. M <- M[ , -3]
  7. M
  8. # 4. Построить график временного ряда
  9. plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o", col="blue")
  10. # Временной ряд описывается аддитивной моделью.
  11.  
  12. # 5. Построить коррелограмму
  13. acf(M$totals, type="correlation", plot=TRUE, main="Коррелограмма")
  14.  
  15. # 6. Провести сглаживание временного ряда методом скользящего среднего
  16. library("forecast")
  17. sn <- ma(M$totals, order=12, centre = TRUE) # сгладить временной ряд методом скользящего среднего
  18. plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o")
  19. lines(sn, col="green") # нарисовать сглаженный ряд
  20.  
  21. # 7. Рассчитать сезонную компоненту временного ряда
  22. A<-matrix(data=M$totals-sn, nrow = 12) # вычесть из значений временного ряда сглаженное значение
  23. SM<-apply(A, 1, function(x) mean(x, na.rm = TRUE))
  24. M.S<-rep(SM,times=12) # записать сезонную составляющую временного ряда
  25. M.S
  26.  
  27. # 8. Рассчитать тренд временного ряда
  28. Tr<-M$totals-M.S # удалить сезонную составляющую из временного ряда
  29. T<-seq(from=1, to=144) # сформировать значения t
  30. regM<-lm(Tr~T) # построить линейную регрессию
  31. M.Trend<-coef(regM)[1]+coef(regM)[2]*T # записать тренд для временного ряда
  32. M.Trend
  33.  
  34. # 9. Рассчитать значения временного ряда по модели
  35. M.fit<-M.Trend+M.S # рассчитать значения временного ряда по модели
  36. plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o") # график временного ряда
  37. lines(M.fit, col="red") # график модели временного ряда
  38. lines(M.Trend, col="green") # график тренда временного ряда
  39. sum(abs((M$totals - M.fit)/M$totals))/length(M$totals)*100 # рассчитать MAPE = Относительная ошибка аппроксимации > 20 %
  40.  
  41. # 10. Построить прогноз
  42. M.F<-array(dim = 36) # создать массив для хранения прогноза
  43. T1<-seq(from=49, to=48+36) # создать массив для времени прогноза
  44. M.F<-(coef(regM)[1]+coef(regM)[2]*T1)+SM # рассчитать прогнозные значения
  45. plot(M$totals, main="shipment of beer", ylab="value", xlab="month", type="o", xlim =
  46. c(1,48+36), ylim = c(min(M$totals), 37000)) # график временного ряда
  47. lines(M.fit, col="red") # график модели временного ряда
  48. lines(x=T1 , y=M.F, col="green") # график прогноза
  49. abline(regM)
  50.  
  51. # 11. Исследовать остатки
  52. M.Res<-M$totals-M.fit # рассчитать остатки
  53. plot(M.Res, type="o", main="Остатки", ylab="value", xlab="month") # график остатков
  54. acf(M.Res, main="Коррелограмма остатков") # коррелограмма остатков
  55. Box.test(M.Res) # проверить остатки на белый шум
Advertisement
RAW Paste Data Copied
Advertisement