[英]Time series analysis applicability?
我有一個像這樣的示例數據框(日期列格式為mm-dd-YYYY
):
date count grp
01-09-2009 54 1
01-09-2009 100 2
01-09-2009 546 3
01-10-2009 67 4
01-11-2009 80 5
01-11-2009 45 6
我想使用ts()
將此數據幀轉換為時間序列,但問題是:當前數據幀在同一日期具有多個值。 在這種情況下,我們可以應用時間序列嗎?
我可以將數據幀轉換為時間序列,並建立一個可以每天預測計數值的模型(ARIMA)嗎?
或者我應該基於grp預測計數值,但是在那種情況下,我必須只選擇grp並計數數據幀的列。 因此,在這種情況下,我必須跳過日期列,並且無法對計數值進行每日預測?
假設我想每天匯總計數值。 我嘗試使用匯總函數,但是必須指定日期值,但是我有非常大的數據集? r中還有其他可用選項嗎?
有人可以建議是否有更好的方法嗎? 我的假設是時間序列預測僅適用於雙變量數據? 這個假設正確嗎?
您的問題似乎有兩個方面:
我想使用
ts()
將此數據幀轉換為時間序列,但問題是-當前數據幀在同一日期具有多個值。 在這種情況下,我們可以應用時間序列嗎?
如果您樂於使用xts
包,則可以嘗試:
dta2$date <- as.Date(dta2$date, "%d-%m-%Y")
dtaXTS <- xts::as.xts(dta2[,2:3], dta2$date)
這將導致:
>> head(dtaXTS)
count grp
2009-09-01 54 1
2009-09-01 100 2
2009-09-01 546 3
2009-10-01 67 4
2009-11-01 80 5
2009-11-01 45 6
以下類別中的一個:
>> class(dtaXTS)
[1] "xts" "zoo"
然后,您可以將時間序列對象用作單變量時間序列,並引用選定的變量或多變量時間序列,例如使用PerformanceAnalytics
包:
PerformanceAnalytics::chart.TimeSeries(dtaXTS)
關於第二個問題:
有人可以建議我遵循什么更好的方法,我的假設是時間序列預測僅適用於雙變量數據? 這個假設對嗎?
恕我直言,這是相當廣泛的。 我建議您使用創建的xts
對象並詳細說明要使用的模型,以及為什么,如果這是有關時間序列分析性質的概念性問題,您可能更願意將后續問題發布到CrossValidated上 。
數據來自: dta2 <- read.delim(pipe("pbpaste"), sep = "")
使用提供的示例。
由於需要每日預報,因此我們需要匯總到每天。 使用末尾Note中的DF
,使用read.zoo
和參數aggregate=sum
將數據的前兩列讀入zoo系列z
。 我們可以選擇將其轉換為"ts"
系列( tser <- as.ts(z)
),盡管這對於許多預測功能而言都是不必要的。 特別是,檢查出auto.arima
的源代碼后,我們看到它在進一步處理之前在其輸入上運行x <- as.ts(x)
。 最后運行auto.arima
, forecast
或其他預測功能。
library(forecast)
library(zoo)
z <- read.zoo(DF[1:2], format = "%m-%d-%Y", aggregate = sum)
auto.arima(z)
forecast(z)
注意: DF
在此處可重現:
Lines <- "date count grp
01-09-2009 54 1
01-09-2009 100 2
01-09-2009 546 3
01-10-2009 67 4
01-11-2009 80 5
01-11-2009 45 6"
DF <- read.table(text = Lines, header = TRUE)
更新:重新閱讀問題后修訂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.