2013-07-19 25 views
1

我試圖在R中使用函數stl()來平滑存儲傳感器的時間與溫度的數據集。主要目標是從功能中消除噪音,以便找到環境溫度(基線曲線)。我在時間序列格式加載我的數據,當我試圖用STL(),它給了我這個錯誤:R - 將時間序列與頻率20分鐘放入函數stl()

Error in stl(timeseries[[1]]) : 
    series is not periodic or has less than two periods 

這裏是我的數據:

> head(stations[[1]]) 
       Date Unit Temp 
1 0013-06-30 10:00:01 C 32.5 
2 0013-06-30 10:20:01 C 32.5 
3 0013-06-30 10:40:01 C 33.5 
4 0013-06-30 11:00:01 C 34.5 
5 0013-06-30 11:20:01 C 37.0 
6 0013-06-30 11:40:01 C 35.5 

我已經轉成時間序列類:

timeseries[[1]] = as.ts(stations[[1]]$Temp,freq=26280) 

注:頻率高的數據取每20分鐘

與S錯誤t1()由於頻率不一致?我有一種感覺,當我將數據計算爲時間序列時,我可能做了一些錯誤,並且這已經拋棄了計算該系列的週期的能力。

我確實需要所有這些數據,因爲整個集合只覆蓋價值4天的數據(因此是高頻)

謝謝你的幫助!

+0

hi @ user2498712。你可能想回頭看看你的一些舊問題,並接受一些答案,如果他們解決了問題 –

回答

5

錯誤消息告訴您,爲了估計時間序列的季節性分量,您至少需要兩個季節的數據。如果您有4天的溫度數據,則您可能希望將季節性組件設置爲幾天。因此,您應該相應地設置您的時間序列。你每天有24 * 3次觀察,所以應該是頻率。

timeseries[[1]] <- ts(stations[[1]]$Temp, frequency=24*3) 

然後stl(timeseries[[1]], "periodic")應該工作,altough我不能測試它,因爲它需要的數據至少2天,即,2小時不夠。

+0

幾周前我遇到了這個問題,我可以確認你的解決方案是絕對正確的:-) – fdetsch

+0

非常好,這工作好,謝謝!一個問題是平滑後它仍然保持很多噪音。有沒有另一種方法可以更好地處理高頻時間序列? @陰影 – user2498712