1

ts在 R 中,class和 class有什么区别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:wind],开始 = 开始(x),频率 = f),季节性):时间序列没有或少于 2 个周期”

即使gamma=0.

在 Windows 7 x64 机器上运行 R 2.11.1 (win32 x86)。

4

3 回答 3

4

我发现了问题,研究了 HoltWinters 源代码。事实证明,HoltWinters 函数(对于 gamma=0,并且如果没有季节性分量)期望 gamma 是合乎逻辑的!(零 = 假)

所以,输入 gamma as.logical(0) 解决了这个错误。

Joris:谢谢你的回答,这很有启发性。

于 2010-10-02T21:24:23.120 回答
4

ts来自stats基本 R 的软件包。它对于政府统计中常见的每月、每季度、每年等常规时间序列很有用。 tsarima()基础 R 及其stats包提供的其他时间序列方法使用。HoltWinters你在这里使用的就是一个这样的例子。

timeSeries是许多附加时间序列课程之一;这个来自Rmetrics。几个CRAN 任务视图对这些进行了更多讨论:时间序列计量经济学以及金融

尝试使用文档ts和/或HoltWinters掌握所需的格式。 ts使用固定的增量(例如每月数据的 1/12)或频率

于 2010-10-02T19:54:21.193 回答
3

这是两个不同的班级。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()序列需要但缺乏时间序列。那里的时间信息包含在两个槽中,一个位置槽和一个格式槽。他们一起将时代定义为一个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"
于 2010-10-02T20:10:43.610 回答