Анализ временных рядов в R

Опубликовано: 30 Ноября, 2021

Временные ряды в R используются, чтобы увидеть, как объект ведет себя в течение определенного периода времени. В R это легко сделать с помощью функции ts() с некоторыми параметрами. Временной ряд принимает вектор данных, и каждые данные связаны со значением временной метки, заданным пользователем. Эта функция в основном используется для изучения и прогнозирования поведения актива в бизнесе на определенный период времени. Например, анализ продаж компании, анализ запасов, анализ цен определенной акции или рынка, анализ населения и т. Д.

Синтаксис:

objectName <- ts (данные, начало, конец, частота)

где,

data represents the data vector
start represents the first observation in time series
end represents the last observation in time series
frequency represents number of observations per unit time. For example, frequency=1 for monthly data.

Примечание. Чтобы узнать о дополнительных параметрах, используйте следующую команду в консоли R:

помощь ("ц")

Пример: возьмем для примера ситуацию пандемии COVID-19. Ввод общего числа положительных случаев COVID-19 еженедельно с 22 января 2020 года по 15 апреля 2020 года в мире в векторе данных.

# Weekly data of COVID-19 positive cases from
# 22 January, 2020 to 15 April, 2020
x < - c( 580 , 7813 , 28266 , 59287 , 75700 ,
87820 , 95314 , 126214 , 218843 , 471497 ,
936851 , 1508725 , 2072113 )
# library required for decimal_date() function
library(lubridate)
# output to be created as png file
png( file = "timeSeries.png" )
# creating time series object
# from date 22 January, 2020
mts < - ts(x, start = decimal_date(ymd( "2020-01-22" )),
frequency = 365.25 / 7 )
# plotting the graph
plot(mts, xlab = "Weekly Data" ,
ylab = "Total Positive Cases" ,
main = "COVID-19 Pandemic" ,
= "darkgreen" col.main )
# saving the file
dev.off()

Выход:

Многомерный временной ряд

Многомерные временные ряды создают несколько временных рядов на одной диаграмме.

Пример: еженедельное получение данных об общем числе положительных случаев и общем количестве смертей от COVID-19 с 22 января 2020 года по 15 апреля 2020 года в векторе данных.

# Weekly data of COVID-19 positive cases and
# weekly deaths from 22 January, 2020 to
# 15 April, 2020
positiveCases < 59287 - c( 580 , 7813 , 28266 , ,
75700 , 87820 , 95314 , 126214 ,
218843 , 471497 , 936851 ,
1508725 , 2072113 )
deaths < - c( 17 , 270 , 565 , 1261 , 2126 , 2800 ,
3285 , 4628 , 8951 , 21283 , 47210 ,
88480 , 138475 )
# library required for decimal_date() function
library(lubridate)
# output to be created as png file
png( file = "multivariateTimeSeries.png" )
# creating multivariate time series object
# from date 22 January, 2020
mts < - ts(cbind(positiveCases, deaths),
start = decimal_date(ymd( "2020-01-22" )),
frequency = 365.25 / 7 )
# plotting the graph
plot(mts, xlab = "Weekly Data" ,
main = "COVID-19 Cases" ,
= "darkgreen" col.main )
# saving the file
dev.off()

Выход:

Прогнозирование

Прогнозирование может быть выполнено по временным рядам с использованием некоторых моделей, представленных в R. В этом примере используется автоматизированная модель arima. Чтобы узнать о дополнительных параметрах функции arima (), используйте команду ниже.

помощь ("арима")

В приведенном ниже коде прогнозирование выполняется с использованием библиотеки прогнозов, поэтому требуется установка библиотеки прогнозов.

# Weekly data of COVID-19 cases from
# 22 January, 2020 to 15 April, 2020
x < - c( 580 , 7813 , 28266 , 59287 , 75700 ,
87820 , 95314 , 126214 , 218843 ,
471497 , 936851 , 1508725 , 2072113 )
# library required for decimal_date() function
library(lubridate)
# library required for forecasting
library(forecast)
# output to be created as png file
png( file = "forecastTimeSeries.png" )
# creating time series object
# from date 22 January, 2020
mts < - ts(x, start = decimal_date(ymd( "2020-01-22" )),
frequency = 365.25 / 7 )
# forecasting model using arima model
fit < - auto.arima(mts)
# Next 5 forecasted values
forecast(fit, 5 )
# plotting the graph with next
# 5 weekly forecasted values
plot(forecast(fit, 5 ), xlab = "Weekly Data" ,
ylab = "Total Positive Cases" ,
main = "COVID-19 Pandemic" = "darkgreen" , col.main )
# saving the file
dev.off()

Выход :
После выполнения вышеуказанного кода получаются следующие прогнозируемые результаты:

         Прогноз точек Lo 80 Hi 80 Lo 95 Hi 95
2020.307 2547989 2491957 2604020 2462296 2633682
2020.326 2915130 2721277 3108983 2618657 3211603
2020.345 3202354 2783402 3621307 2561622 3843087
2020.364 3462692 2748533 4176851 2370480 4554904
2020.383 3745054 2692884 4797225 2135898 5354210

На графике ниже представлены оценочные прогнозируемые значения COVID-19, если он продолжит широко распространяться в течение следующих 5 недель.