如果我有来自一组风叶的风向读数,是否有类似t.test (或其他显著性检验)的东西可以对循环数据执行?我假设一个正态分布(下面的数据来自这里)。我找到了CircStats包,但我想我应该在这里查找一些额外的指导。
以下是一些示例数据:
df1 <- data.frame(unit=letters, wind.direction=c(99,88,93,99,86,90,101,109,109,91,86,94,106,92,99,103,110,98,107,109,93,102,92,99,109,85))只使用标准的t.test就可以很好地工作,因为它不会绕过零。但,
df2 <- data.frame(unit=letters, wind.direction=c(1,350,355,1,348,352,3,11,11,353,348,356,8,3,1,5,12,0,9,11,355,4,354,1,11,347))没有,因为它的圆形平均值是~0,而线性平均值是~139…
发布于 2012-02-28 07:17:03
您可以在circular包中使用aov.circular。
# Sample data (with two groups, to compare the means)
library(circular)
x <- as.circular(
c(1,350,355,1,348,352,3,11,11,353,348,356,
8,3,1,5,12,0,9,11,355,4,354,1,11,347),
unit="degrees"
)
g <- sample(LETTERS[1:2], 26, replace=TRUE)
# Test
aov.circular(x, g)发布于 2012-02-28 07:28:11
这就是我想说的:
> df2$wd.scaled = apply(as.matrix(df2[,2]),1,function(x) ifelse(x>180,x-360,x))
> df2
unit wind.direction wd2 wd.scaled
1 a 1 1 1
2 b 350 -10 -10
3 c 355 -5 -5
4 d 1 1 1
5 e 348 -12 -12
6 f 352 -8 -8
> mean(df2$wd.scaled)
[1] 0.3846154如果你在180附近没有太多的观察值,这将会起作用。
https://stackoverflow.com/questions/9473545
复制相似问题