我正在尝试对我的数据集进行时间序列分析。最初,我的数据集具有以下属性。
[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函数时,它给出这个错误“只对单变量时间序列执行”
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个观察结果。
Sales Year
[1,] 707 2016
[2,] 306 2016
[3,] 394 2016
[4,] 306 2016
[5,] 491 2016
[6,] 306 2016年份是2016年、2017年和2018年,这三个年份的销售额不同。
发布于 2019-04-24 07:23:26
您之所以收到这个错误,是因为您正在将一个数据帧传递给arima()函数,而它需要的是一个单变量时间序列。您可以通过正确定义时间序列来消除错误,如下所示:
data.ts <- as.ts(myData$Sales) 然后,您可以调用arima()函数。
fit <- arima(log(data.ts), c(0, 1, 0), seasonal = list(order = c(0, 1, 0), period = 1))然而,我不确定这是否就是你想要的结果。您的数据中有多个2016年的值,根据数据集中的列名,您可以获得每月的数据。如果是这种情况,我怀疑设置period = 1将导致不期望的结果,因为当您有每月数据时,您将指示周期1,而周期1通常表示年度数据。您可以查看?ts以了解更多信息,但如果您有每月数据,则需要以这种方式定义时间序列:
data.ts <- ts(myData$Sales, frequency = 12, start = c(2016,1))这表示您拥有从2016年第一个月(start = c(2016,1))开始的月度数据(frequency = 12)。再举一个例子,如果你的月度数据是从2016年4月开始的,你应该设置frequency = 12和start = c(2016,4)。
https://stackoverflow.com/questions/55785258
复制相似问题