时间序列预测之三:频谱分析(二)

关于谱分析的内容,参考我的另一篇文章:时间序列预测:谱分析

1. 简介

        由傅里叶理论可知,时域中的任何信号都可以由一个或多个具有适当频率、幅度和相位的正弦波叠加而成。也就是说,任何时域信号都可以变换成相应的频域信号,通过频域测量可以得到信号在某个特定频率上的能量值。频谱分析就是在频域上分析时间序列的方法,它使用傅里叶分析方法,将时域信号转换到频域,并从频域中找出信号频谱的变化规律。

2. R实现

      R语言包stats中spec.pgram函数通过平滑的周期图来估计时间序列的谱密度,且周期图由快速傅里叶变换计算而来。

       时间序列预测之三:频谱分析(二)_第1张图片 

使用AirPassengers数据集 ,计算其频谱图:

                    时间序列预测之三:频谱分析(二)_第2张图片 

plot(AirPassengers)

specOut<-spec.pgram(as.integer(AirPassengers),taper=0,log='no')
maxSpecFreq<-specOut$freq[which.max(specOut$spec)]
abline(v=maxSpecFreq,lty=2,col='red')  # lty 指定线条类型
period<-1/maxSpecFreq
period  # 12

效果图如下,红虚线标出了最大谱密度所在的频率位置maxSpecFreq,并求出了对应周期为12个月。

                       时间序列预测之三:频谱分析(二)_第3张图片

你可能感兴趣的:(时间序列,统计分析,机器学习)