2016-08-01 31 views
1

我不明白R中如何創建時間序列對象。 我有數據:data = c(101,99,97,95,93,91,89,87,85,83,81)(爲了簡潔起見,較小的數據集)。 這個數據是每天從2016-07-052016-07-15開始11天。根據docs,每天採樣數據的頻率應爲7.但我不明白startend參數的值。對於start,文檔說: the time of the first observation. Either a single number or a vector of two integers, which specify a natural time unit and a (1-based) number of samples into the time unit.我不明白1-based number of samples是什麼意思。我試圖谷歌它,但它沒有幫助。爲R中每日採樣的數據創建時間序列R

如果我只是用2016,7作爲開始和結束日期,我只是得到:

Time Series: 
Start = c(2016, 7) 
End = c(2016, 7) 
Frequency = 7 
[1] 101 

如果我使用2016,7,12016,7,11作爲開始和結束日期,我仍然得到同樣的輸出。

我在做什麼錯?

回答

1

我認爲最好的方法是切換到xt或動物園,因爲根據另一個問題here,ts()與日常觀測鬥爭,因爲天數在幾年之間變化。

+0

我使用的時間序列預測。我嘗試使用'xts',它保持數據的格式我預期(如時間戳和該時間戳的值)。但是我使用xts對象調用'forecast'的輸出是一個不再包含這些時間戳的ts對象。我只是看到了價值。 –

+0

解決此問題的唯一方法是通過手動添加日期返回到ts對象,如此處所述http://stackoverflow.com/a/10347205/5795592 不知道只是使用數據會更容易。帶日期列的框架。 – hannes101

0

據我瞭解,在ts()功能單位是年。因此,這裏frequency應該設置爲365(每年的天數)。因此,startend也應代表天。但是,(我相信)獲得時間安排的權利startend應該是從年初開始的期望時間間隔內(在您的具體情況下,分別爲186和196)。在這些數字的適當性與可檢查:

as.numeric(as.Date("2016-07-05") - as.Date("2016-01-01")) 
[1] 186 
as.numeric(as.Date("2016-07-15") - as.Date("2016-01-01")) 
[1] 196 

嵌入這些信息到你的代碼中調用ts()應該是:

data = c(101,99,97,95,93,91,89,87,85,83,81) 
ts(data, start = c(2016, 186), end = c(2016, 196), frequency = 365) 
# which yielded 
Time Series: 
Start = c(2016, 186) 
End = c(2016, 196) 
Frequency = 365 
[1] 101 99 97 95 93 91 89 87 85 83 81 

HTH