【问题标题】:Why am I getting this error message even after transforming my data set into a ts file for time series analysis?为什么即使在将我的数据集转换为 ts 文件以进行时间序列分析后,我仍会收到此错误消息?
【发布时间】:2017-12-13 00:31:19
【问题描述】:

我打算对我的数据集执行time series 分析。我已从csv 文件中导入数据(从 2015 年 1 月到 2017 年 12 月的每月数据),RStudio 中的代码如下所示:

library(timetk)
library(tidyquant)
library(timeSeries)
library(tseries)    
library(forecast)

mydata1 <- read.csv("mydata.csv", as.is=TRUE, header = TRUE)
mydata1
        date   pkgrev
1   1/1/2015 39103770
2   2/1/2015 27652952
3   3/1/2015 30324308
4   4/1/2015 35347040
5   5/1/2015 31093119
6   6/1/2015 20670477
7   7/1/2015 24841570

mydata2 <- mydata1 %>% 
           mutate(date = mdy(date))
mydata2

         date   pkgrev
1  2015-01-01 39103770
2  2015-02-01 27652952
3  2015-03-01 30324308
4  2015-04-01 35347040
5  2015-05-01 31093119
6  2015-06-01 20670477
7  2015-07-01 24841570

class(mydata2)
[1] "data.frame"

在运行这段代码时,事情变得有点奇怪(至少对我来说):

mydata2_ts <- ts(mydata2, start=c(2015,1), freq=12)
mydata2_ts

          date   pkgrev
Jan 2015 16436 39103770
Feb 2015 16467 27652952
Mar 2015 16495 30324308
Apr 2015 16526 35347040
May 2015 16556 31093119
Jun 2015 16587 20670477
Jul 2015 16617 24841570

我不太了解日期列中的值!日期似乎已转换为数字格式。

class(mydata2_ts)
[1] "mts"    "ts"     "matrix"

现在,运行以下代码给我一个错误:

stlRes <- stl(mydata2_ts, s.window = "periodic")

Error in stl(mydata2_ts, s.window = "periodic") : 
  only univariate series are allowed

我的流程有什么问题?

【问题讨论】:

    标签: r dataframe time-series


    【解决方案1】:

    您收到此错误的原因是因为您尝试将具有两个变量(日期 + pkgrev)的数据集输入到 STL 的参数中,该参数仅将单变量时间序列作为适当的参数。

    要解决这个问题,您可以创建一个不带日期变量的单变量 ts 对象。在您的情况下,您需要在代码mydata2_ts &lt;- ts(mydata2, start=c(2015,1), freq=12) 中使用mydata2$pkgrev(或mydata2 转换为数据帧后的mydata2["pkgrev"])而不是mydata2。当您在参数中指定开始日期和频率时,已经为 ts 对象提供了时间信息。

    如果您想使用 ts 对象及其对应的日期变量创建一个新的数据框,我建议您使用以下代码:

    mydata3 = cbind(as.Date(time(mydata2_ts)), mydata2_ts)
    mydata3 = as.data.frame(mydata3)
    

    但是,为了STL分解,第一个参数的输入应该是一个ts对象,即mydata2_ts

    【讨论】:

    • 如果我正确理解了您的 cmets,我的代码应如下所示:mydata2_ts
    • 太棒了!非常感谢!
    猜你喜欢
    • 2018-04-11
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多