2010-03-29 5 views
1

У меня есть данные о высокой частоте цен на сырьевые товары, которые мне нужно проанализировать. Моя цель - не предполагать какой-либо сезонный компонент и просто определять тенденцию. Здесь я сталкиваюсь с проблемами с R. Есть две основные функции, которые я знаю для анализа этого временного ряда: decose() и stl(). Проблема в том, что они оба берут тип объекта ts с частотным параметром, большим или равным 2. Есть ли какой-то способ, который я могу принять на частоту 1 в единицу времени и все еще анализировать этот временной ряд, используя R? Я боюсь, что если я предполагаю, что частота больше 1 за единицу времени, а сезонность рассчитывается с использованием частотного параметра, то мои прогнозы будут зависеть от этого предположения.Избегайте предположения о сезонности для stl() или разложения() в R

names(crude.data)=c('Date','Time','Price') 
names(crude.data) 
freq = 2 
win.graph() 
plot(crude.data$Time,crude.data$Price, type="l") 
crude.data$Price = ts(crude.data$Price,frequency=freq) 

Я хочу, чтобы частота составляла 1 раз в единицу времени, но затем разлагайте() и stl() не работают!

dim(crude.data$Price) 
decom = decompose(crude.data$Price) 
win.graph() 
plot(decom$random[2:200],type="line") 
acf(decom$random[freq:length(decom$random-freq)]) 

спасибо.

+0

Не уверен, что я понимаю это право, но «частота одного» будет линейной и/или параболической тенденцией? В противном случае это звучит как рассмотрение каждого наблюдения как своего собственного манекена. Суть сезонности состоит в том, что что-то должно повториться или должна быть какая-то цикличность, которая обязательно подразумевала бы период не менее 2. – isomorphismes

ответ

12

Оба stl() и decompose() являются для сезонного разложения, так что вы должны иметь сезонную составляющую. Если вы просто хотите оценить тренд, то любой непараметрический метод сглаживания будет выполнять эту работу. Например:

fit <- loess(crude.data$Price ~ crude.data$Time) 
plot(cbind(observed=crude.data$Price,trend=fit$fitted,random=fit$residuals),main="")