В R, в чем разница между классом ts и классом timeSeries? - PullRequest
1 голос
/ 02 октября 2010

В R, в чем разница между классом ts и классом timeSeries?Я думаю, что у меня проблема в HoltWinters из-за этого.Я получаю:

data(LakeHuron)
x <- LakeHuron
before <- window(x, end=1935)
after <- window(x, start=1935)
a <- .2
b <- 0
g <- 0
model <- HoltWinters(before, alpha=a, beta=b, gamma=g)

"Ошибка при разложении (ts (x [1L: ветер], start = start (x), частота = f), сезонная): временной рядили менее 2 периодов "

, хотя gamma=0.

Запуск R 2.11.1 (win32 x86) на компьютере с Windows 7 x64.

Ответы [ 3 ]

4 голосов
/ 03 октября 2010

Я нашел проблему, изучая исходный код HoltWinters.Оказывается, что функция HoltWinters (для гаммы = 0 и если нет сезонной составляющей) ожидает, что гамма будет логичной !!(ноль = ЛОЖЬ)

Итак, ввод гаммы as.logical (0) устраняет ошибку.

Йорис: спасибо за ответ, который освещал.

4 голосов
/ 02 октября 2010

ts взято из пакета stats, включенного в базу R. Он полезен для регулярных временных рядов, таких как ежемесячные, квартальные, годовые ... серии, общие в статистике правительства.ts используется arima() и другими методами временных рядов, предоставляемыми базой R и ее пакетами stats.HoltWinters, который вы использовали здесь, является одним из таких примеров.

timeSeries - один из многих дополнительных классов временных рядов;этот прибывает из Rmetrics .В нескольких видах задач CRAN обсуждаются следующие вопросы: TimeSeries , Эконометрика , а также Финансы .

Попробуйте документацию наts и / или HoltWinters чтобы справиться с требуемым форматом.ts использует либо фиксированную дельта (например, 1/12 для месячных данных), либо периодичность .

3 голосов
/ 03 октября 2010

Это два отдельных класса.ts содержится в базовой установке R, а функция HoltWinters() требует ts временных рядов.

timeSeries имеет совершенно другую структуру.Это также специально направлено на финансы.Большая разница с TS заключается в том, что он допускает нерегулярные временные ряды.Класс ts может содержать только одинаковые серии.

Внутри ts есть слот "tsp", который содержит начало, конец и частоту временных рядов.

> test <- ts(1:10, frequency = 4, start = c(1959, 2))
> slotNames(test)
[1] ".Data"    "tsp"      ".S3Class"
> slot(test,"tsp")
[1] 1959.25 1961.50    4.00

Именно этот слот нужен HoltWinters(), но ему не хватает timeSeries.Там информация о времени содержится в двух слотах, слоте позиции и слоте формата.Вместе они определяют время как timeDate объект.

> data = as.matrix(MSFT[, 4])
>    charvec = rownames(MSFT)
>    Close = timeSeries(data, charvec, units = "Close")
> slotNames(Close)
[1] ".Data"         "units"         "positions"     "format"        "FinCenter"     "recordIDs"     "title"         "documentation"
> head(slot(Close,"positions"))
[1] 970012800 970099200 970185600 970444800 970531200 970617600
> slot(Close,"format")
[1] "%Y-%m-%d"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...