Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel R:反转时间序列对象中的数据_Excel_R_Reverse_Time Series - Fatal编程技术网

Excel R:反转时间序列对象中的数据

Excel R:反转时间序列对象中的数据,excel,r,reverse,time-series,Excel,R,Reverse,Time Series,我想出了一个用时间序列预测过去的方法。现在我正在为R语言的编程而挣扎 我想反转时间序列数据,以便预测过去。我该怎么做 假设原始时间序列对象如下所示: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2008 116 99 115 101 112 120 120 110 143 136 147 142 2009 117 114 133 134 139 147 147 131 125 143 136 129 我希望它在“回溯”中看起来像这

我想出了一个用时间序列预测过去的方法。现在我正在为R语言的编程而挣扎

我想反转时间序列数据,以便预测过去。我该怎么做

假设原始时间序列对象如下所示:

     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2008 116  99 115 101 112 120 120 110 143 136 147 142
2009 117 114 133 134 139 147 147 131 125 143 136 129
我希望它在“回溯”中看起来像这样:

     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2008 129 136 143 125 131 147 147 139 134 133 114 117
2009 142 147 136 143 110 120 120 112 101 115  99 116
请注意,我没有忘记更改年份-我基本上是镜像/反转数据并保留年份,然后进行预测


我希望这可以在R?或者我应该以某种方式导出并在Excel中执行它吗?

您可以将矩阵强制为向量,将其反转,然后使其再次成为矩阵。下面是一个例子:

mat <- matrix(seq(24),nrow=2,byrow=TRUE)
> mat

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    2    3    4    5    6    7    8    9    10    11    12
[2,]   13   14   15   16   17   18   19   20   21    22    23    24
> matrix( rev(mat), nrow=nrow(mat) )

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]   24   23   22   21   20   19   18   17   16    15    14    13
[2,]   12   11   10    9    8    7    6    5    4     3     2     1
mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    2    3    4    5    6    7    8    9    10    11    12
[2,]   13   14   15   16   17   18   19   20   21    22    23    24
>矩阵(版次(mat),nrow=nrow(mat))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]   24   23   22   21   20   19   18   17   16    15    14    13
[2,]   12   11   10    9    8    7    6    5    4     3     2     1
试试这个:

tt <- ts(1:24, start = 2008, freq = 12)
tt[] <- rev(tt)

我发现了这篇关于Hyndman的文章,基本上是在他的解决方案中粘贴的,在我看来,这为你的问题提供了一个完整的答案

library(forecast)
x <- WWWusage
h <- 20
f <- frequency(x)
# Reverse time
revx <- ts(rev(x), frequency=f)
# Forecast
fc <- forecast(auto.arima(revx), h)
plot(fc)
# Reverse time again
fc$mean <- ts(rev(fc$mean),end=tsp(x)[1] - 1/f, frequency=f)
fc$upper <- fc$upper[h:1,]
fc$lower <- fc$lower[h:1,]
fc$x <- x
# Plot result
plot(fc, xlim=c(tsp(x)[1]-h/f, tsp(x)[2]))
库(预测)

x谢谢-比@gsk3的方法快,但类似。(因此我将您的标记为正确,因为它更简单。希望这是根据Stackoverflow策略。)谢谢@gsk3:)尽管有一种使用
ts
数据的更快方法。请看上面的答案。@Osioso将G.G.的答案标记为正确是正确的,因为他对时间序列对象的处理效果更好。为了将来的参考,在你的问题上贴一个快速复制的例子会给你带来更好的答案。这通常不会花太长时间(见G.G.的第一行),它会让你试图解决的问题更加清晰。谢谢你的提示:)我会在以后的问题中记住它。哈哈哈!!!!!永远不要再建议导出并在Excel中执行“它”。这就像在梵蒂冈圣彼得斯教堂的祭坛上性交一样。你去地狱的代价比这还低。@Joris,如果你已经把你的灵魂卖给了全球的魔鬼,那该怎么办@除了开玩笑,乔里斯当然是对的。更多原因请参见。
library(forecast)
x <- WWWusage
h <- 20
f <- frequency(x)
# Reverse time
revx <- ts(rev(x), frequency=f)
# Forecast
fc <- forecast(auto.arima(revx), h)
plot(fc)
# Reverse time again
fc$mean <- ts(rev(fc$mean),end=tsp(x)[1] - 1/f, frequency=f)
fc$upper <- fc$upper[h:1,]
fc$lower <- fc$lower[h:1,]
fc$x <- x
# Plot result
plot(fc, xlim=c(tsp(x)[1]-h/f, tsp(x)[2]))