"circular" R 中的意思

"circular" mean in R

给定月份数据集,考虑到月份是循环的,我如何计算 "average" 月份?

months = c(1,1,1,2,3,5,7,9,11,12,12,12)
mean(months)
## [1] 6.333333

在此虚拟示例中,平均值应为一月或十二月。看到有循环统计的包,不知道合不合我的需求

我觉得

months <- c(1,1,1,2,3,5,7,9,11,12,12,12)
library("CircStats")
conv <- 2*pi/12 ## months -> radians

现在将月数转换为弧度,计算循环平均值,然后再转换回月数。我在这里减去 1,假设 1 月在“0 弧度”/12 点钟...

(res1 <- circ.mean(conv*(months-1))/conv)

结果是-0.3457。你可能想要:

(res1 + 12) %% 12

给出 11.65,即 12 月的中途(因为我们仍在 0=1 月,11=12 月的尺度上)

认为这个是对的,但没有仔细检查。

就其价值而言,CircStats::circ.mean 功能非常简单——如果这就是您所需要的,加载包的开销可能不值得:

function (x) 
{
    sinr <- sum(sin(x))
    cosr <- sum(cos(x))
    circmean <- atan2(sinr, cosr)
    circmean
}

结合@A.Webb评论中的巧妙选择:

 m <- mean(exp(conv*(months-1)*1i))
 12+Arg(m)/conv%%12  ## 'direction', i.e. average month
 Mod(m)              ## 'intensity'