Как рассчитать стандартное отклонение круговых данных - PullRequest
3 голосов
/ 10 апреля 2019

Я следовал приведенному здесь совету для расчета среднего значения циклических данных:

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

Приведенное выше дает мне среднее значение, но я не знаю, как рассчитать SD

Я пытался просто взять среднее значение стандартного отклонения для синуса и cos, но я получаю разные ответы.

SinSD<-sd(Sin2)
CosSD<-sd(Cos2)
mean(CosSD, SinSD)

1 Ответ

3 голосов
/ 10 апреля 2019

Для этого вы можете использовать пакет 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.

См. Также здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...