我正在尝试分析R中的一些嘈杂的时间序列数据。数据基于动物的二氧化碳排放,它们显示出我想表征的一种循环周期性。我想测试一下假设:
H0:没有循环二氧化碳排放(即不超过随机)。
H1:循环或脉冲中存在二氧化碳排放模式。
为此,我将数据导入R,将其转换为时间序列类,并绘制其周期图。
t25a <- read.table("data.txt", header=TRUE, sep="\t")
t1 <- ts(t25a$Co2)
plot(t1)
spec.pgram(t1, spans=4, log="no")
这就是看起来的样子,原始数据绘制在顶部,周期图位于下方:
在下图中,我可以看到四个或五个略微不同的峰值,表示数据中的频率成分。我的问题是 - 他们都同样“重要”吗?有没有办法测试观察到的峰值是否彼此显着不同或者是否与零假设的预测有显着差异?我所知道的是找到与这些峰值相关的频率,但我想要一个更客观的方法来确定数据中确实存在多少“重要”峰值。
答案 0 :(得分: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
函数有助于实现此测试(但还有其他方法)。