我每天有10年的气温系列时间:
x <- c(rep((seq(-3,5,by=0.85)),365),NA)
我将它转换为这样的时间序列对象:
x <- ts(x, frequency=10, start=1)
并跑了stlm
stlm(x, s.window=365, robust=TRUE, allow.multiplicative.trend=TRUE, level=0.95)
产生了错误
error in na.fail.default(as.ts(x)) : missing values in object
这很奇怪,因为气象时间序列是高度季节性的。我该怎么做才能解决这个问题?零有问题吗?
任何帮助表示赞赏。 更新:我的时间序列中有一个缺失值,产生错误。部分代码
robust=TRUE, allow.multiplicative.trend=TRUE, level=0.95
产生了另一个错误,显然无法使用这些参数。
为了确定10年来最终发生变化的趋势,我如何将我的时间序列充分分解为季节和趋势?
答案 0 :(得分:0)
您还可以尝试使用dsa软件包,该软件包专门用于处理日常数据。您必须先将数据转换为xts,但随后就可以了,
library(dsa); library(xts)
x <- c(rep((seq(-3,5,by=0.85)),365),NA) # I didn't change these strange looking data ;-)
# Converting to xts
dates <- seq(as.Date("2010-01-01"),length=length(x),by="days")
x <- xts(x, order.by=dates)
result <- dsa(x, fourier_number=24) # if no monthly recurring cycle is visible
# fourier_number can be reduced or left empty.
sa <- result$output[,1] # This is the seasonally adjusted series
xtsplot(result$output[,c(2,1)], names=c("original series", "seasonally adjusted series"))