我正在尝试使用R中的函数stl()来平滑一个数据集,该数据集存储传感器的时间与温度.主要目标是从功能中去除噪声,以便找到环境温度(基线曲线).我已经按时间序列格式加载了我的数据,当我尝试使用stl()时,它给了我这个错误:
Error in stl(timeseries[[1]]) :
series is not periodic or has less than two periods
Run Code Online (Sandbox Code Playgroud)
这是我的数据:
> 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
Run Code Online (Sandbox Code Playgroud)
我已经转换为时间序列类:
timeseries[[1]] = as.ts(stations[[1]]$Temp,freq=26280)
Run Code Online (Sandbox Code Playgroud)
注意:频率很高,因为每20分钟就会收集一次数据
由于频率的不一致,stl()的错误是什么?我觉得在将数据制作成时间序列时我可能做错了什么,并且这已经抛弃了计算系列周期的能力
我确实需要所有这些数据,因为整套数据仅涵盖4天的数据(因此频率很高)
谢谢您的帮助!
错误消息告诉您,为了估计时间序列的季节性成分,您需要至少两个季节的数据.如果您有4天的温度数据,您可能希望季节性成分为几天.因此,您应该相应地设置时间序列.你每天有24*3次观察,所以这应该是频率.
timeseries[[1]] <- ts(stations[[1]]$Temp, frequency=24*3)
Run Code Online (Sandbox Code Playgroud)
然后stl(timeseries[[1]], "periodic")应该工作,尽管我无法测试它,因为它需要至少2天的数据,即2小时是不够的.