【发布时间】:2011-12-12 16:50:13
【问题描述】:
我正在尝试分析 R 中的一些嘈杂的时间序列数据。这些数据基于动物的二氧化碳排放量,它们显示出我想要表征的一种循环周期性。我想检验这些假设:
H0:没有循环 CO2 排放(即不超过随机排放)。
H1:存在循环或脉冲的 CO2 排放模式。
为此,我将数据导入 R,将其转换为时间序列类,并绘制其周期图。
t25a <- read.table("data.txt", header=TRUE, sep="\t")
t1 <- ts(t25a$Co2)
plot(t1)
spec.pgram(t1, spans=4, log="no")
如下所示,原始数据绘制在顶部,周期图绘制在下方:
在底部的图中,我可以看到四个或五个稍微不同的峰值,表示数据中的频率分量。我的问题是——它们都同样“重要”吗?有什么方法可以测试观察到的峰是否彼此显着不同或与零假设的预测显着不同?我所知道的就是找到与这些峰值相关的频率,但我想要一种更客观的方法来确定数据中真正存在多少“重要”峰值。
【问题讨论】:
-
您了解功率谱的单位是什么,是吗? [单位**2/Hz] 您可以将积分频谱视为原始时间序列的方差,因此如果一个峰值大于另一个峰值,则它在该频率下的能量(信号)比另一个峰值更大。所以“重要性”并不是一个真正有意义的问题。你真的应该使用锥形方案,并绘制对数频率(在这种情况下)。
-
@AndyBarbour 首先,单位。我的理解是,上面周期图上的 y 轴是功率的量度,x 轴是反频率。 *2 在您的单位*2/Hz 中来自哪里?作为衡量信号不同分量相对显着性的指标,我是否可以考虑积分峰与总面积的比率?
-
看看 Parseval 定理,或对解析函数进行傅里叶变换以轻松演示单位。图中的单位可能是,对于 y,以 dB 为单位,相对于 1 个单位**2/Hz,对于 x,0 到奈奎斯特频率。这取决于您要回答什么问题,但峰值可能是数据中的真实周期(仅通过检查您的时间序列)。
-
我认为阅读时间序列文献可能是个好主意(或者可能在 Stack Exchange 上询问这个问题的变体)。关于光谱分析有大量(而且很复杂)文献,其中包含各种不同类型的假设检验框架。我个人喜欢 Diggle 的时间序列分析书:amazon.com/Time-Biostatistical-Introduction-Peter-Diggle/dp/…
-
PS 我强烈建议检查对数刻度上的周期图 - 并查看默认情况下由
plot.spec绘制的 95% 置信区间。请注意,@AndyBarbour 是在讨论 平方 单位,而不是将它们乘以 2。积分峰的比率确实是合理的——如果你正确归一化,它们代表了各种频率范围所解释的总体方差的分数。例如查看math.mcmaster.ca/~bolker/bbpapers/BolkerGrenfell1995.pdf(用户名:“bbpapers”,密码“research”)
标签: r time-series time-frequency