首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在单变量时间序列上实现

仅在单变量时间序列上实现
EN

Stack Overflow用户
提问于 2019-04-22 01:51:20
回答 1查看 2.8K关注 0票数 0

我正在尝试对我的数据集进行时间序列分析。最初,我的数据集具有以下属性。

代码语言:javascript
复制
[1] "Customer"        "Customer.No"     "Shop"            "Invoice"        
[5] "Quantity"        "Sales"           "Cash.Amt"      "Credit.Card.Amt"
[9] "Net.Sales"       "Mens.Wear"       "Womens.Wear"     "Kids.Wear"      
[13] "Foot.Wear"       "Fragrant"        "Class"           "Date"           
[17] "Year"            "Month"

但我只在我的数据集中使用了一年&销售额来实现时间序列。当我尝试运行arima函数时,它给出这个错误“只对单变量时间序列执行”

代码语言:javascript
复制
data.ts<- as.ts(myData) 
is.ts(data.ts) 
class(data.ts) 
plot(data.ts) 
frequency(data.ts) 
plot(log(data.ts)) 
plot(diff(log(data.ts))) 
acf(data.ts) 
acf(diff(log(data.ts))) 
#p=0 
pacf(diff(log(AirPassengers)))
#q=0
fit <- arima(log(data.ts), c(0, 1, 0), seasonal = list(order = c(0, 1, 0), period = 1))

谁能告诉我,我是否采用了正确的属性来实现时间序列?另外,为什么会出现这个错误?我该如何解决这个问题呢?

这是我的数据集的前6个观察结果。

代码语言:javascript
复制
   Sales  Year
[1,]   707  2016
[2,]   306  2016
[3,]   394  2016
[4,]   306  2016
[5,]   491  2016
[6,]   306  2016

年份是2016年、2017年和2018年,这三个年份的销售额不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-24 07:23:26

您之所以收到这个错误,是因为您正在将一个数据帧传递给arima()函数,而它需要的是一个单变量时间序列。您可以通过正确定义时间序列来消除错误,如下所示:

代码语言:javascript
复制
data.ts <- as.ts(myData$Sales) 

然后,您可以调用arima()函数。

代码语言:javascript
复制
fit <- arima(log(data.ts), c(0, 1, 0), seasonal = list(order = c(0, 1, 0), period = 1))

然而,我不确定这是否就是你想要的结果。您的数据中有多个2016年的值,根据数据集中的列名,您可以获得每月的数据。如果是这种情况,我怀疑设置period = 1将导致不期望的结果,因为当您有每月数据时,您将指示周期1,而周期1通常表示年度数据。您可以查看?ts以了解更多信息,但如果您有每月数据,则需要以这种方式定义时间序列:

代码语言:javascript
复制
data.ts <- ts(myData$Sales, frequency = 12, start = c(2016,1))

这表示您拥有从2016年第一个月(start = c(2016,1))开始的月度数据(frequency = 12)。再举一个例子,如果你的月度数据是从2016年4月开始的,你应该设置frequency = 12start = c(2016,4)

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

https://stackoverflow.com/questions/55785258

复制
相关文章

相似问题

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