Я последовал совету, изложенному здесь, для расчета среднего значения круговых данных:
https://en.wikipedia.org/wiki/Mean_of_circular_quantities
Но я также хотел бы рассчитать стандартное отклонение.
#A vector of directional data (separated by 20 degrees each)
Dir2<-c(350,20,40)
#Degrees to Radians
D2R<-0.0174532925
#Radians to Degrees
Rad2<-Dir2 * D2R
Sin2<-sin(Rad2)
SinAvg<-mean(Sin2)
Cos2<-cos(Rad2)
CosAvg<-mean(Cos2)
RADAVG<-atan2(SinAvg, CosAvg)
DirAvg<-RADAVG * R2D
Вышеприведенное дает мне среднее значение, но я не знаю, как рассчитать стандартное отклонение.
Я пытался просто взять среднее значение стандартного отклонения как для синуса, так и для кос, но получаю разные ответы.
SinSD<-sd(Sin2)
CosSD<-sd(Cos2)
mean(CosSD, SinSD)
Для этого вы можете использовать пакет circular
:
x <- circular(Rad2)
mean(x)
# Circular Data:
# Type = angles
# Units = radians
# Template = none
# Modulo = asis
# Zero = 0
# Rotation = counter
# [1] 0.2928188 # The same as yours
sd(x)
# [1] 0.3615802
Вручную,
sqrt(-2 * log(sqrt(sum(Sin2)^2 + sum(Cos2)^2) / length(Rad2)))
# [1] 0.3615802
что видно из исходного кода sd.circular
.
В этом тоже может помочь Википедия. Directional_statistics#Measures_of_location_and_spread