5

我正在尝试分析 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")

这就是它的样子,原始数据绘制在顶部,周期图绘制在下方:

时间序列 CO2 数据的 R 周期图

在底部的图中,我可以看到四个或五个稍微不同的峰值,表示数据中的频率分量。我的问题是——它们都同样“重要”吗?有什么方法可以测试观察到的峰是否彼此显着不同或与零假设的预测有显着差异?我所知道的只是找到与这些峰值相关的频率,但我想要一种更客观的方法来确定数据中真正存在多少“重要”峰值。

4

1 回答 1

1

一种选择是在您的零假设下模拟数据集(没有您正在寻找的周期性,但仍然具有其他时间序列特征)。如果您有一个数值测试统计数据(峰值数量或其他度量),那么您可以为许多模拟数据集中的每一个计算这个,这将为您提供抽样分布,只需将您的实际数据的测试统计数据与抽样进行比较分配。如果您没有直接的数字测试统计数据,那么您可以考虑进行视觉测试,请参阅:

 Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne,
 D.F and Wickham, H. (2009) Statistical Inference for exploratory
 data analysis and model diagnostics Phil. Trans. R. Soc. A 2009
 367, 4361-4383 doi: 10.1098/rsta.2009.0120

R 包中的vis.test函数TeachingDemos有助于实现此测试(但也有其他方法)。

于 2011-10-21T16:43:47.167 回答