`pracma`:为单个时间序列折叠`detrend`的矩阵结果

时间:2016-10-21 23:46:54

标签: r time-series

我正在使用R中的co2数据。我首先使用detrend()。它似乎已经起作用,但它将数据推出时间序列格式,我稍后尝试使用的R函数认为它是一个多变量时间序列而不是单个时间序列。我想把它作为一个单变量的时间序列。这是我的代码。我试过没有运气就改变了数据的格式。

data(co2)
co2
plot(co2)

dmn <- list(month.abb, unique(floor(time(co2))))
co2.m <- matrix(co2, 12, dimnames = dmn)

co2.dt <- pracma::detrend(co2.m, tt = 'linear')
co2.dt <- t(co2.dt)
co2.dt

以下是我遇到的错误之一:

plot.ts(co2.dt)
  

plotts中的错误(x = x,y = y,plot.type = plot.type,xy.labels = xy.labels,:             不能超过10个系列作为&#34;多个&#34;

使用ts.plot可以绘制它,但它认为这是一个多变量的时间序列。

我希望以co2绘图的方式绘制单个时间序列。理想情况下,我想将co2.dt的格式更改为co2

的格式
str(co2)
Time-Series [1:468] from 1959 to 1998: 315 316 316 318 318 ...

str(co2.dt)
Time-Series [1:39, 1:12] from 1959 to 1997: -1.74 -2.11 -2.11 -2.11 -1.99 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:12] "Jan" "Feb" "Mar" "Apr" ...

它们都是时间序列,但略有不同,这种差异似乎会破坏我后来尝试使用的很多功能。

1 个答案:

答案 0 :(得分:2)

  

我希望它以co2绘图的方式绘制为单个时间序列

co2.dt <- pracma::detrend(co2.m, tt = 'linear')
co2.dt <- ts(as.numeric(co2.dt), start = c(1959,1), frequency=12)

str(co2.dt)
# Time-Series [1:468] from 1959 to 1998: -1.741 -0.608 -0.176 1.127 1.94 ...

plot.ts(co2.dt)

enter image description here

原始答案(关于“{1}}无效的原因”

问题是plot.ts会在面板上绘制多个时间序列,而不是在单个图表上。然后有一个R可以轻松处理的最大系列数。错误消息告诉您不支持超过10个系列,而您有12个(因为在转置后您正在查看12个月中每年的年度数据)。请改用plot.ts

ts.plot

如果您不喜欢ts.plot(co2.dt) ,那么您需要将时间序列分成几个组,每个组都在一个新的图形窗口中。例如,您可以在一个窗口上绘制月份1-6,在另一个窗口上绘制月份7-12。

ts.plot