如果我从一组风向标中获得风向读数,是否可以对循环数据执行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 ...
答案 0 :(得分:1)
您可以在aov.circular
包中使用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)
答案 1 :(得分:0)
这就是我的意思:
> 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附近没有很多观察结果,这将有效。