"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'
给定月份数据集,考虑到月份是循环的,我如何计算 "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'