簡體   English   中英

僅在單變量時間序列上實現

[英]Only implemented on univariate time series

我正在嘗試對我的數據集進行時間序列分析。 最初我的數據集具有以下屬性。

[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"

但是我在我的數據集中只使用了Year&Sales來實現Time Series。 當我嘗試運行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年,其中有不同的銷售價值。

您收到錯誤是因為您在期望單變量時間序列時將數據幀傳遞給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年的第一個月開始有月度數據( frequency = 12 )( start = c(2016,1) )。 再舉一個例子,如果你有2016年4月開始的月度數據,你可以設置frequency = 12start = c(2016,4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM