سری های زمانی : تعریف، آنالیز، پیش بینی، کلاسترینگ و کلسیفایینگ در R

/
/
/

سری های زمانی : تعریف، آنالیز، پیش بینی، کلاسترینگ و کلسیفایینگ در R

یک سری زمانی یکی از روش های پیش بینانه در داده کاوی و مجموعه مشاهداتی است که بر اساس زمان مرتب شده باشند. مانند:
میزان شاخص های مختلف بورس
میزان بارش های فصلی در مناطق شمالی ایران
پیش بینی تغییرات جمعیت در مدت زمان ده تا بیست سال آینده
سری زمانی توالی از مشاهدات بر روی یک متغیر است که در نقاط متوالی از زمان یا دوره های متوالی در زمان محاسبه می شود. این محاسبه ممکن است هر ساعت، هر روز، هر هفته ، هر ماه یا هر سال و یا در هر فاصله زمانی دیگری انجام شود. الگوی داده ها در درک اینکه سری زمانی در گذشته چگونه رفتار کرده بسیار مهم است. اگر انتظار رود که چنین رفتاری در آینده هم ادامه پیدا کند، می توان از الگوهای گذشته برای راهنمایی بهتر در انتخاب روش پیش بینی مناسب برای آینده هم استفاده کرد.
اگر زمان را متغیر مستقل و متغیر سری های زمانی را متغیر وابسته در نظر بگیریم، آنالیز رگرسیون را نیز می توان به عنوان یک روش سری زمانی در نظر گرفت.
هدف آنالیز سری های زمانی کشف الگویی در داده های گذشته یا سری های زمانی و سپس پیش بینی الگویی برای آینده است؛ این پیش بینی تنها بر مقادیر گذشته متغیر و/ یا خطاهای پیش بینی های گذشته تکیه دارد.
برای تعیین الگوهای داده یکی از راه های مفیدی که وجود دارد ساخت پلات سری زمانی است. پلات سری زمانی نمایش گرافیکی متغیرهای زمان و سری های زمانی است، متغیر زمان در محور افقی و مقادیر سری های زمانی در محور عمودی نمایش داده می شود. برخی انواع متداول الگوهای داده ای که می توان هنگام بررسی پلات سری زمانی مشخص کرد عبارتند از:
Horizontal Pattern
Trend Pattern
Seasonal Pattern
Trend and Seasonal Pattern
Cyclical Pattern
روش های پیش بینی که مورد بحث قرار می گیرند بر اساس این است که کدام یک از این الگوها در سری های زمانی موجود هستند.
Horizontal pattern
الگوی افقی، زمانی وجود دارد که داده حول یک میانگین ثابت نوسان داشته باشد.
برای یک سری زمانی با الگوی افقی یا horizontal pattern از انتقال میانگین یا هموار سازی نمایی برای ایجاد پیش بینی استفاده می شود. روش انتقال میانگین شامل محاسبه میانگین مقادیر داده های گذشته و سپس استفاده از آن میانگین به عنوان پیش بینی دوره بعدی می باشد. در روش هموارسازی نمایی میانگین وزنی مقادیر سری های زمانی قبلی برای محاسبه پیش بینی استفاده می شود. این روش ها زمانی که یک الگوی افقی به یک سطح جدید منتقل میشود به خوبی تطبیق می یابند.
یک عامل مهم در تعیین روش پیش بینی مورد استفاده دقت روش است. سه عامل دقت پیش بینی مورد بحث قرار می گیرند: mean absolute error (MAE)، mean squared error (MSE) و mean absolute percentage error (MAPE). هریک از این معیارها برای تعیین اینکه یک روش پیش بینی تا چه حد می تواند داده های سری های زمانی را که اکنون در دست هستند مجددا تولید کند، طراحی شده اند. با انتخاب روشی که بهترین دقت را برای داده های شناخته شده فعلی دارد، امیدواریم احتمال به دست آوردن پیش بینی های بهتر برای دوره های زمانی آتی را افزایش دهیم.
Trend pattern
این نوع الگو، زمانی وجود دارد که پلات سری های زمانی شیفت تدریجی به مقادیر نسبتا بالاتر یا پایین تر در دوره های زمانی طولانی تری نشان دهند.
برای سری های زمانی که تنها یک روال خطی بلند مدت دارند (Trend Pattern) می توان از رگرسیون خطی ساده برای انعکاس این روال استفاده کرد. برای سری های زمانی با روال غیر خطی یا دارای انحنا می توان از رگرسیون چندگانه برای انطباق یک معادله کوادراتیک یا نمایی با داده استفاده کرد.
Seasonal pattern
زمانی این نوع الگو وجود دارد که پلات سری های زمانی یک الگوی تکرار شونده در دوره های متوالی نشان دهد. دوره های متوالی معمولا وقفه های یک ساله هستند به این دلیل به آن فصلی می گویند.
برای سری زمانی با الگوی seasonal (فصلی) استفاده از dummy variables در مدل رگرسیون چندگانه برای ایجاد یک معادله رکرگسیون تخمینی با تاثیرات فصلی پیشنهاد می شود.
در صورتی که رویکرد رگرسیون گسترش یافته و موقعیت هایی را نیز شامل شود که سری های زمانی شامل تاثیر فصلی و روال خطی می شوند می توان رویکرد dummy variables برای کنترل فصلی بودن به علاوه رویکرد رگرسیون سری های زمانی برای کنترل روال خطی را ترکیب کرد.
آخرین گام در ایجاد یک پیش بینی زمانی که هم اجزای trend و هم اجزای seasonal حاضر هستند استفاده از شاخص های فصلی برای تنظیم نمایش روال است.
Stationary time series
سری های زمانی که مشخصه های آماری آنها مستقل از زمان است. در این سری های زمانی فرایند تولید داده یک میانگین ثابت دارد و تغییر سری های زمانی در طول زمان ثابت است.
Cyclical pattern
این نوع الگو زمانی به وجود می آید که پلات سری زمانی تناوبی از نقاطی بالا و پایین خط trend نشان دهد که برای مدت بیش از یک سال باقی مانده است.
Classification و کلاسترینگ سری های زمانی
در این قسمت دسته بندی و خوشه بندی سری های زمانی را با کد R نشان می دهیم.
کلاسترینگ سری های زمانی:
کلاسترینگ سری های زمانی پارتیشن بندی داده های سری های زمانی به چند گروه و بر اساس شباهت و یا فاصله آنهاست بطوری که سری های زمانی داخل یک کلاستر مشابه هم باشند. برای کلاسترینگ سریهای زمانی در R اولین گام انتخاب یک معیار شباهات/فاصله مناسب و سپس در گام بعدی استفاده از تکنیک های کلاسترینگ موجود مانند kmeans ، خوشه بندی سلسله مراتبی، خوشه بندی مبتنی بر density یا subspace clustering برای پیدا کردن ساختارهای خوشه بندی است.
Dynamic Time Warping (DTW) تنظیمات بهینه میان دو سری زمانی را پیدا می کند و فاصله DTW به عنوان یک معیار مسافت در مثال پایین استفاده شده است. دیتاستی که در اینجا به کار برده شده Synthetic Control Chart Time Series است که شامل 600 مثال از چارت های کنترلی است. هر چارت کنترلی یک سری زمانی با 60 مقدار است. 6 کلاس وجود دارد: 1) 1-100 نرمال 2)101-200 چرخه ای 3) 201-300 روند افزایشی 4) 301-400 روند کاهشی 5) 401 – 500 شیفت به بالا و 6) 501-600 شیفت به پایین.
این دیتاست از لینک زیر قابل دانلود است:
http://kdd.ics.uci.edu/databases/synthetic_control/synthetic_control.html
sc <- read.table(“E:/Rtmp/synthetic_control.data”, header=F, sep=””)
# بصورت رندوم از هر کلاس n نمونه برمیداریم تا ترسیم پلات راحت تر شود
n <- 10
s <- sample(1:100, n)
idx <- c(s, 100+s, 200+s, 300+s, 400+s, 500+s)
sample2 <- sc[idx,]
observedLabels <- c(rep(1,n), rep(2,n), rep(3,n), rep(4,n), rep(5,n), rep(6,n))
# محاسبه فاصله DTW
library(dtw)
distMatrix <- dist(sample2, method=”DTW”)
# hierarchical clustering
hc <- hclust(distMatrix, method=”average”)
plot(hc, labels=observedLabels, main=””)
Classification سری های زمانی
classification ساخت مدل دسته بندی بر اساس سری های زمانی برچسب گذاری شده و سپس استفاده از آن مدل برای پیش بینی برچسب سری های زمانی بدون برچسب است. برای دسته بندی سری های زمانی در R باید ابتدا از داده های سری های زمانی را فیچرهایی استخراج کرده و ساخت و سپس از تکنیک های دسته بندی موجود مثل SVM، k-NN، شبکه های عصبی ، رگرسیون و درخت تصمیم بر روی آن مجموعه فیچرها استفاده کرد.
Discrete Wavelet Transform (DWT) در مثال زیر استفاده شده که نمایش multi-resolution ارائه می دهد. یکی دیگر از تکنیک های محبوب در استخراج ویژگی Discrete Fourier Transform (DFT) یا تبدیل فوریه گسسته است.
# استخراج ضرایب DWT(با فیلتر Haar)
library(wavelets)
wtData <- NULL
for (i in 1:nrow(sc)) {
+ a <- t(sc[i,])
+ wt <- dwt(a, filter=”haar”, boundary=”periodic”)
+ wtData <- rbind(wtData, unlist(c(wt@W,wt@V[[wt@level]])))
+ }
wtData <- as.data.frame(wtData)
# تبدیل لیبل های کلاس ها به مقادیر کتگوریکال
classId <- c(rep(“1″,100), rep(“2″,100), rep(“3″,100),
+ rep(“4″,100), rep(“5″,100), rep(“6″,100))
wtSc <- data.frame(cbind(classId, wtData))
#ساخت درخت تصمیم با تابع ctree از پکیج party
library(party)
ct <- ctree(classId ~ ., data=wtSc,
+ controls = ctree_control(minsplit=30, minbucket=10, maxdepth=5))
pClassId <- predict(ct)
# بررسی کلاسهای پیش بینی شده با کلاس های لیبل دار اصلی
table(classId, pClassId)
خروجی:

# accuracy
(sum(classId==pClassId)) / nrow(wtSc)
خروجی:
[1] 0.8716667

plot(ct, ip_args=list(pval=FALSE), ep_args=list(digits=0))

خروجی:

مثالی دیگر:
class ts

نشان دهنده داده ای است که در نقاط زمانی با فواصل یکسان نمونه برداری شده
frequency=7: سری هفتگی
frequency=12: سری های ماهانه
frequency=4: سریهای سه ماهه
Time Series Data in R
a <- ts(1:20, frequency = 12, start = c(2011, 3))
print(a)
خروجی

## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2011 1 2 3 4 5 6 7 8 9 10
## 2012 11 12 13 14 15 16 17 18 19 20
str(a)

خروجی:
## Time-Series [1:20] from 2011 to 2013: 1 2 3 4 5 6 7 8 9 10…
attributes(a)
خروجی:
## $tsp
## [1] 2011 2013 12
##
## $class
## [1] “ts”
Decomposition سری های زمانی

به تجزیه سری های زمانی به چند جزء یا کامپوننت می گویند Decomposition سری های زمانی که عبارتند از:
Trend component یا مولفه روند : روند بلند مدت
Seasonal component یا کامپوننت فصلی: تغییرات فصلی
Cyclical component یا کامپوننت چرخه ای: نوسانات تکرار شونده ولی غیر دوره ای
Irregular component یا کامپوننت های نامنظم: سایر کامپوننت ها
Data AirPassengers

برای مثال در این قسمت داده های مسافرین هوایی در R یپاده سازی می شود

f <- decompose(AirPassengers)
# seasonal figures
f$figure
plot(f$figure, type=”b”, xaxt=”n”, xlab=””)
# گرفتن نام 12 ماه به انگلیسی
monthNames <- months(ISOdate(2011,1:12,1))
# نام کذاری 12 محور با نام ماه ها
axis(1, at=1:12, labels=monthNames, las=2)

> plot(f)

در شکل بالا اولین چارت سری زمانی اصلی، دومین چارت trend سومین چارت فاکتورهای seasonal و آخرین چارت سایر کامپوننت ها را نشان می دهد.
برخی دیگر از توابع decomposition سری های زمانی stl() در پکیج stats، decomp() در پکیج timsac و tsr() در پکیج ast می باشد.
Dynamic Time Warping (DTW)

library(dtw)
idx <- seq(0, 2 * pi, len = 100)
a <- sin(idx) + runif(100)/10
b <- cos(idx)
align <- dtw(a, b, step = asymmetricP1, keep = T)
dtwPlotTwoWay(align)

کلاسترینگ سلسله مراتبی با فاصله اقلیدسی

# گرفتن n نمونه از هر کلاس
n <- 10
s <- sample(1:100, n)
idx <- c(s, 100 + s, 200 + s, 300 + s, 400 + s, 500 + s)
sample2 <- sc[idx, ]
observedLabels <- rep(1:6, each = n)

# کلاسترنیگ
hc <- hclust(dist(sample2), method = “ave”)
plot(hc, labels = observedLabels, main = “”)
# تقسیم درخت برای رسیدن به 8 کلاستر
memb <- cutree(hc, k = 8)
table(observedLabels, memb)
خروجی:
memb
observedLabels 1 2 3 4 5 6 7 8
1 10 0 0 0 0 0 0 0
2 0 3 1 1 3 2 0 0
3 0 0 0 0 0 0 10 0
4 0 0 0 0 0 0 0 10
5 0 0 0 0 0 0 10 0
6 0 0 0 0 0 0 0 10
کلاسترینگ سلسله مراتبی با فاصله DTW
myDist <- dist(sample2, method = “DTW”)
hc <- hclust(myDist, method = “average”)
plot(hc, labels = observedLabels, main = “”)

# تقسیم درخت برای رسیدن به 8 کلاستر
memb <- cutree(hc, k = 8)
table(observedLabels, memb)
memb
observedLabels 1 2 3 4 5 6 7 8
1 10 0 0 0 0 0 0 0
2 0 4 3 2 1 0 0 0
3 0 0 0 0 0 6 4 0
4 0 0 0 0 0 0 0 10
5 0 0 0 0 0 0 10 0
6 0 0 0 0 0 0 0 10
کلاسیفیکیشن:

استخراج ویژگی:

Singular Value Decomposition (SVD)
Discrete Fourier Transform (DFT)
Discrete Wavelet Transform (DWT)
Piecewise Aggregate Approximation (PAA)
Perpetually Important Points (PIP)
Piecewise Linear Representation
Symbolic Representation

Decision Tree (ctree)
classId <- rep(as.character(1:6), each = 100)
newSc <- data.frame(cbind(classId, sc))
library(party)
ct <- ctree(classId ~ ., data = newSc,
controls = ctree_control(minsplit = 20,
minbucket = 5, maxdepth = 5))
pClassId <- predict(ct)
table(classId, pClassId)

خروجی:

pClassId
classId 1 2 3 4 5 6
1 100 0 0 0 0 0
2 1 97 2 0 0 0
3 0 0 99 0 1 0
4 0 0 0 100 0 0
5 4 0 8 0 88 0
6 0 3 0 90 0 7

# دقت
(sum(classId == pClassId))/nrow(sc)

خروجی:
[1] 0.8183
Decision Tree with DWT
ct <- ctree(classId ~ ., data = wtSc,
controls = ctree_control(minsplit=20, minbucket=5,
maxdepth=5))
pClassId <- predict(ct)
table(classId, pClassId)

plot(ct, ip_args = list(pval = F), ep_args = list(digits = 0))

کلاسیفیکیشن k-NN
پیدا کردن k نزدیک ترین همسایه از یک نمونه و برچسب گذرای آن با اکثر آرا. این روش نیازمند ساختار شاخص گذاری مناسبی برای دیتاست های بزرگ است.
k <- 20
newTS <- sc[501, ] + runif(100) * 15
distances <- dist(newTS, sc, method = “DTW”)
s <- sort(as.vector(distances), index.return = TRUE)

# class id های k نزدیک ترین همسایه
table(classId[s$ix[1:k]])

خروجی:
4 6
3 17

نتیجه حداکثر آرا= کلاس 6
برای کلاسترینگ سری های زمانی در R پکیج TSclust می تواند استفاده شود که عدم شباهت میان سری های زمانی را برای اجرای کلاسترینگ اندازه گیری می کند.

پیش بینی سری های زمانی

همان طور که قبلا گفته شد Time series forecasting پیش بینی رویدادهای آتی بر اساس داده های شناخته شده گذشته است. در ادامه مثالی برای پیش بینی سری های زمانی با مدل autoregressive integrated moving average یا ARIMA آورده شده است.
fit <- arima(AirPassengers, order=c(1,0,0), list(order=c(2,1,0), period=12))
fore <- predict(fit, n.ahead=24)
U <- fore$pred + 2*fore$se
L <- fore$pred – 2*fore$se
ts.plot(AirPassengers, fore$pred, U, L, col=c(1,2,4,4), lty = c(1,1,2,2))
legend(“topleft”, c(“Actual”, “Forecast”, “Error Bounds (95% Confidence)”), col=c(1,2,4), lty=c(1,1,2))

پیش بینی نرخ مبادلات ارز با ARIMA و STL
این مثال سری های زمانی پیش بینی نرخ مبادلات ارزهای یورو و دلار استرالیا را با مدل های ARIMA و STL نشان می دهد. داده ای که در این پیاده سازی استفاده شده مربوط به مبادلات ارز از ژانویه 1999 تا ژوئن 2014 است که توسط بانک مرکزی اروپا ارائه شده و ازلینک زیر دانلود شده است:
http://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html.
url <- “http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip”
download.file(url, “eurofxref-hist.zip”)

بررسی داده ها
rates <- read.csv(unz(“eurofxref-hist.zip”, “eurofxref-hist.csv”),
header = T)
rates[1:2, ]
خروجی :
## Date USD JPY BGN CYP CZK DKK EEK GBP HUF LTL LVL
## 1 2014-07-01 1.369 139.0 1.9558 N/A 27.43 7.456 N/A 0.7981 310.4 3.453 N/A
## 2 2014-06-30 1.366 138.4 1.9558 N/A 27.45 7.456 N/A 0.8015 309.3 3.453 N/A
## MTL PLN ROL RON SEK SIT SKK CHF ISK NOK HRK RUB TRL
## 1 N/A 4.158 N/A 4.3881 9.160 N/A N/A 1.214 N/A 8.438 7.58 46.895 N/A
## 2 N/A 4.157 N/A 4.383 9.176 N/A N/A 1.216 N/A 8.403 7.576 46.3779 N/A
## TRY AUD BRL CAD CNY HKD IDR INR KRW MXN
## 1 2.9066 1.448 3.0349 1.459 8.4883 10.61 16251.94 82.2307 1385 17.7759
## 2 2.8969 1.454 3.0002 1.459 8.4722 10.59 16248.15 82.2023 1382 17.7124
## MYR NZD PHP SGD THB ZAR ILS X
## 1 4.3893 1.562 59.764 1.705 44.367 14.58 4.692 NA
## 2 4.3856 1.563 59.652 1.705 44.323 14.46 4.696 NA
str(rates$Date)

خروجی:
## Factor w/ 3968 levels “1999-01-04″,”1999-01-05”,..: 3968 3967 3966 3965 3964 3963 3962 3961 3960 3959 …
## تبدیل به فرمت تاریخ
rates$Date <- as.Date(rates$Date, “%Y-%m-%d”)
str(rates$Date)

خروجی:
## Date[1:3968], format: “2014-07-01” “2014-06-30” “2014-06-27” “2014-06-26” …
range(rates$Date)
خروجی:
## [1] “1999-01-04” “2014-07-01”

rates <- rates[order(rates$Date), ]
## ترسیم سری های زمانی
plot(rates$Date, rates$AUD, type = “l”)

پیش بینی با ARIMA
کد زیر نشان می دهد که داده برای آخر هفته ها یا تعطیلات عمومی وجود ندارد.
head(rates$Date, 20)

## [1] “1999-01-04” “1999-01-05” “1999-01-06” “1999-01-07” “1999-01-08”
## [6] “1999-01-11” “1999-01-12” “1999-01-13” “1999-01-14” “1999-01-15”
## [11] “1999-01-18” “1999-01-19” “1999-01-20” “1999-01-21” “1999-01-22”
## [16] “1999-01-25” “1999-01-26” “1999-01-27” “1999-01-28” “1999-01-29”
years <- format(rates$Date, “%Y”)
tab <- table(years)
tab
## years
## 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
## 259 255 254 255 255 259 257 255 255 256 256 258 257 256 255
## 2014
## 126
## تعداد روزهای هر سال پس از حذف 2014
mean(tab[1:(length(tab) – 1)])
## [1] 256.1

بر اساس نتایج فوق حدود 256 مقدار در هر سال وجود دارد. در نتیجه اندازه پنجره باید در آنالیز سری های زمانی در قسمت زمان 256 در نظر گرفته شود. راه دیگر این است که آخر هفته ها و تعطیلات عمومی با روزهای پر شده قبلی پر شوند.

source(“forecast.R”) ## see code file in section 5
result.arima <- forecastArima(rates, n.ahead = 90)

source(“plotForecastResult.R”)
plotForecastResult(result.arima, title = “Exchange rate forecasting with ARIMA”)
پیش بینی با STL

result.stl <- forecastStl(rates, n.ahead = 90)
plotForecastResult(result.stl, title = “Exchange rate forecasting with STL”)

## نرخ مبادلات در 2014
result <- subset(result.stl, date >= “2014-01-01”)
plotForecastResult(result, title = “Exchange rate forecasting with STL (2014)”)

توابع
کدهای مرجعی که در بالا استفاده شده در ادامه آورده شده است:
کدی که شامل توابع پیش بینی با ARIMA و STL است بصورت زیر است که در کتابخانه forecast موجود می باشد.

library(forecast)

forecastStl <- function(x, n.ahead = 30) {
+ myTs <- ts(x$AUD, start = 1, frequency = 256)
+ fit.stl <- stl(myTs, s.window = 256)
+ sts <- fit.stl$time.series
+ trend <- sts[, “trend”]
+ fore <- forecast(fit.stl, h = n.ahead, level = 95)
+ plot(fore)
+ pred <- fore$mean
+ upper <- fore$upper
+ lower <- fore$lower
+ output <- data.frame(actual = c(x$AUD, rep(NA, n.ahead)),
+ trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA,
+ nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower),
+ upper = c(rep(NA, nrow(x)), upper), date = c(x$Date,
+ max(x$Date) + (1:n.ahead)))
+ return(output)
+ }

forecastArima <- function(x, n.ahead = 30) {
+ myTs <- ts(x$AUD, start = 1, frequency = 256)
+ fit.arima <- arima(myTs, order = c(0, 0, 1))
+ fore <- forecast(fit.arima, h = n.ahead)
+ plot(fore)
+ upper <- fore$upper[, “95%”]
+ lower <- fore$lower[, “95%”]
+ trend <- as.numeric(fore$fitted)
+ pred <- as.numeric(fore$mean)
+ output <- data.frame(actual = c(x$AUD, rep(NA, n.ahead)),
+ trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA,
+ nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower),
+ upper = c(rep(NA, nrow(x)), upper), date = c(x$Date,
+ max(x$Date) + (1:n.ahead)))
+ return(output)
+ }

تابع ترسیم نتایج پیش بینی سری های زمانی بصورت زیر است:
plotForecastResult <- function(x, title = NULL) {
+ x <- x[order(x$date), ]
+ max.val <- max(c(x$actual, x$upper), na.rm = T)
+ min.val <- min(c(x$actual, x$lower), na.rm = T)
+ plot(x$date, x$actual, type = “l”, col = “grey”, main = title,
+ xlab = “Time”, ylab = “Exchange Rate”, xlim = range(x$date),
+ ylim = c(min.val, max.val))
+ grid()
+ lines(x$date, x$trend, col = “yellowgreen”)
+ lines(x$date, x$pred, col = “green”)
+ lines(x$date, x$lower, col = “blue”)
+ lines(x$date, x$upper, col = “blue”)
+ legend(“bottomleft”, col = c(“grey”, “yellowgreen”, “green”,
+ “blue”), lty = 1, c(“Actual”, “Trend”, “Forecast”, “Lower/Upper Bound”))
+ }

مراجع:
Time Series Analysis and Forecasting: Chapter 15

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CD0QFjAE&url=http%3A%2F%2Fwww.irdatamining.com%2Fattachments%2Farticle%2F92%2F4th%2520seminar.pdf&ei=ML6WVY6tDYupsgGmzaZA&usg=AFQjCNEJAwlT21Gb_iYc9ivUvgSJ_5-aKA&sig2=fT06ZBGTrusY_XFoHi_l6g&bvm=bv.96952980,d.bGg&cad=rja
http://www.rdatamining.com/examples/time-series-forecasting

http://www.rdatamining.com/examples/time-series-clustering-classification

http://cran.r-project.org/web/packages/TSclust

http://www.rdatamining.com/docs/time-series-analysis-and-mining-with-r

1 نظرات

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

It is main inner container footer text