在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:wind],start = start(x),frequency = f),季节性): 时间序列没有或少于2个句号“
即使gamma=0
。
在Windows 7 x64计算机上运行R 2.11.1(win32 x86)。
答案 0 :(得分:4)
ts
来自基础R附带的stats
软件包。对于常规时间序列非常有用,例如每月,每季度,每年,...系列常见政府统计。 ts
使用arima()
以及基本R及其stats
包提供的其他时间序列方法。您在此处使用的HoltWinters
就是一个这样的例子。
timeSeries
是许多附加时间序列类之一;这一个来自Rmetrics。有几个CRAN Task Views更多地讨论了这些问题:TimeSeries,Econometrics以及Finance。
尝试使用ts
和/或HoltWinters
上的文档来掌握所需的格式。 ts
使用固定的 delta (例如,每月数据为1/12)或频率。
答案 1 :(得分:4)
我发现了问题,研究了HoltWinters源代码。 事实证明,HoltWinters功能(对于gamma = 0,如果没有季节性组件),预计gamma是合乎逻辑的!! (零=假)
因此,输入gamma as.logical(0)可以解决错误。
乔瑞斯:谢谢你的回答,这很有启发性。答案 2 :(得分: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()
需要但缺少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"