2011-11-17 33 views
6

Supongamos que se toman 5 muestras de matiz usando un modelo de HSV simple para el color, teniendo los valores 355, 5, 5, 5, 5, todos con un matiz rojo y "próximo" uno al otro en lo que a percepción se refiere. Pero el promedio simple es 75, que está muy lejos de 0 o 360, cerca de un amarillo-verde.¿Cómo calcular la media y la desviación estándar para los valores de tono de 0 a 360?

¿Cuál es una mejor manera de calcular esta media y la estándar asociada?

+0

Después de buscar mucho más con Google, encontré un enlace de regreso a Stackoverflow desde una publicación que realmente habla de la dirección promedio del viento: http://stackoverflow.com/questions/491738/how-do-you-calculate-the-average- of-a-set-of-angles/3651941 # 3651941 Pero no aborda el problema de la desviación estándar. – drb

+0

Una vez que tienes una media con la que estás contento, puedes calcular la desviación estándar de las desviaciones promedio, ¿no? – AakashM

+0

@AakashM, todavía estoy tratando de resolver esto. Sé código. Las estadísticas son un poco más confusas. – drb

Respuesta

10

La solución simple es convertir esos ángulos a un conjunto de vectores, desde coordenadas polares a coordenadas cartesianas.

Dado que está trabajando con colores, piense en esto como una conversión en el plano (a *, b *). Luego tome la media de esas coordenadas, y luego regrese nuevamente a la forma polar. Hecho en Matlab,

theta = [355,5,5,5,5]; 
x = cosd(theta); % cosine in terms of degrees 
y = sind(theta); % sine with a degree argument 

Ahora, toma la media de x e y, calcular el ángulo, a continuación, convertir de nuevo de radianes a grados.

meanangle = atan2(mean(y),mean(x))*180/pi 
meanangle = 
     3.0049 

Por supuesto, esta solución solo es válida para el ángulo medio. Como puede ver, produce un resultado consistente con la media de los ángulos directamente, donde reconozco que 355 grados realmente se ajusta a -5 grados.

mean([-5 5 5 5 5]) 
ans = 
    3 

para calcular la desviación estándar, es más sencilla de hacerlo como

std([-5 5 5 5 5]) 
ans = 
     4.4721 

Sí, eso me obliga a hacer la envoltura de forma explícita.

+1

+1, la solución simple, y podría decirse que es la más correcta. – rcollyer

+2

http://en.wikipedia.org/wiki/Mean_of_circular_quantities – job

+0

Gracias. Sí, los cálculos de la desviación estándar siempre deben tener en cuenta la envoltura, ya sea en 0, rojo, en grados o en Pi y Pi negativo, un verde azul, en radianes. También existen enfoques para caracterizar datos circulares distintos de std. Ver enlaces arriba. – drb

Cuestiones relacionadas