r中的平均风向

时间:2019-11-11 15:29:11

标签: r computational-geometry

我有每小时的u和v风力分量,并且很难将其汇总到每日水平。

原则上,我认为我可以取U和V风分量的平均值,并找到这些平均值的方向,但是使用此算法得到的结果与使用专用软件包CircStat时的结果不同。在下面的代码中,变量dir_rwind是根据平均U和V分量计算的方向,而dir_CircStat是使用CircStat计算的平均方向。

set.seed(123)

uc <- rnorm(300,0,2)
vc <- rnorm(300,0,2)

df <- data.frame(uc=uc, vc=vc,id=1:10)

df <- cbind(df,as.data.frame(rWind::uv2ds(df$uc,df$vc)))

agg  <- df %>%
  group_by(id)%>%
  summarise(mean_u10 = mean(uc),
            mean_v10 = mean(vc),

            dir_rwind = rWind::uv2ds(mean_u10, mean_v10)[1],

            dir_CircStat = (180/pi)*CircStats::circ.mean(dir*pi/180))
agg

为什么我得到不同的平均风向?我是否应该使用尝试过的第一个算法(取每个分量的平均值:就像变量dir_rwind)?如果是,我什么时候应该使用每种计算算法?

非常感谢

1 个答案:

答案 0 :(得分:1)

更多的是数学问题,而不是r问题。问题是您不能说n个向量的平均方向等于平均向量的方向。考虑例如两个向量:(1, 0)(0, 10000)。第一个角度为0度,第二个角度为90度。因此,平均方向为45度。但是均值向量是(.5, 5000),实际上它的角度与90度几乎没有区别。