首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在将数据集转换为用于时间序列分析的ts文件后,仍会收到此错误消息?

为什么在将数据集转换为用于时间序列分析的ts文件后,仍会收到此错误消息?
EN

Stack Overflow用户
提问于 2017-11-04 09:02:36
回答 1查看 1.3K关注 0票数 2

我打算对我的数据集进行time series分析。我从一个csv文件中导入了数据(从2015年1月到2017年12月的月度数据),我在RStudio中的代码如下:

代码语言:javascript
复制
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"

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

代码语言:javascript
复制
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

我真的不明白日期列中的值!日期似乎已经转换成数字格式了。

代码语言:javascript
复制
class(mydata2_ts)
[1] "mts"    "ts"     "matrix"

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

代码语言:javascript
复制
stlRes <- stl(mydata2_ts, s.window = "periodic")

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

我的过程怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 09:19:04

出现此错误的原因是试图将带有两个变量(date + pkgrev)的数据集输入到STL的参数中,该参数只接受一个单变量时间序列作为适当的参数。

要解决这个问题,您可以创建一个不带日期变量的单变量ts对象。在您的示例中,您需要在代码mydata2$pkgrev中使用mydata2["pkgrev"] (或者在将mydata2转换为dataframe之后使用mydata2),而不是使用mydata2。在参数中指定开始日期和频率时,ts对象已经提供了时间信息。

如果您想使用ts对象及其相应的date变量创建一个新的dataframe,我建议您使用以下代码:

代码语言:javascript
复制
mydata3 = cbind(as.Date(time(mydata2_ts)), mydata2_ts)
mydata3 = as.data.frame(mydata3)

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47109134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档