我正在尝试分析R中的一些嘈杂的时间序列数据.数据基于动物的二氧化碳排放,它们显示出我想要表征的一种循环周期性.我想测试一下假设:
H0:没有循环CO2排放(即不超过随机).
H1:循环或脉冲中存在二氧化碳排放模式.
为此,我将数据导入R,将其转换为时间序列类,并绘制其周期图.
t25a <- read.table("data.txt", header=TRUE, sep="\t")
t1 <- ts(t25a$Co2)
plot(t1)
spec.pgram(t1, spans=4, log="no")
Run Code Online (Sandbox Code Playgroud)
这是看起来的样子,原始数据绘制在顶部,下面的周期图如下:

在下图中,我可以看到四个或五个略微不同的峰值,表示数据中的频率成分.我的问题是 - 他们都同样"重要"吗?有没有办法测试观察到的峰值是否彼此显着不同或者是否与零假设的预测有显着差异?我所知道的是找到与这些峰值相关的频率,但我想要一个更客观的方法来确定数据中确实存在多少"重要"峰值.
我们正在为生物学学生教授统计课程,并试图将R用作计算和数据可视化平台.尽可能地,我们希望避免使用额外的包并在R中做任何非常"花哨"的事情; 课程的重点是统计,而不是编程.然而,对于双因素ANOVA设计,我们还没有找到在R中生成误差条图的非常好的方法.我们使用ggplot2包来制作绘图,虽然它确实有一个生成95%CI错误栏的内置stat_summary方法,但这些计算方式可能并不总是正确的方法.下面,我手动完成ANOVA的代码并手动计算95%CI(从总残差方差估算标准误差,而不仅仅是组内方差ggplot的汇总方法会使用).最后,实际上是一个情节.
所以问题是......有更简单/更快/更简单的方法来完成所有这些吗?
# LIZARD LENGTH DATA
island.1 <- c(0.2, 5.9, 6.1, 6.5)
island.2 <- c(5.6, 14.8, 15.5, 16.4)
island.3 <- c(0.8, 3.9, 4.3, 4.9)
sex.codes <- c("Male", "Female", "Male", "Female")
# PUTTING DATA TOGETHER IN A DATA FRAME
df.1 <- data.frame(island.1, island.2, island.3, sex.codes)
# MELTING THE DATA FRAME INTO LONG FORM
library(reshape)
df.2 <- melt(df.1)
# MEAN BY CELL
mean.island1.male <- with(df.2, mean(value[variable == "island.1" & sex.codes == "Male"]))
mean.island1.female <- with(df.2, mean(value[variable == "island.1" & sex.codes == …Run Code Online (Sandbox Code Playgroud)