![](/img/trans.png)
[英]Error with ar() function in R - MLE only implemented for univariate series
[英]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 = 12
和start = c(2016,4)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.