9 votos

Calcular la dirección media del viento

¿Cuál es la mejor manera de promediar la dirección del viento? He encontrado muchas sugerencias conflictivas en otros lugares. La mejor que he visto es promediar los SINs de todos los ángulos en radianes y tomar el SIN inverso del resultado.

La entrada debe tener un registro por hora, pero los datos proporcionados tienen varios registros por hora.

3 votos

Las verdaderas preguntas, creo, son: 1) ¿qué se entiende por una dirección media? 2) ¿para qué quieres usar esto?

14voto

Mike Puntos 1113

Aunque el promedio de la dirección del viento no carece de sentido, está mal definido en muchos casos (¡imagina que tienes un viento del este perfecto y un viento del oeste perfecto y quieres encontrar la dirección de su promedio! Asumiendo que tienes datos de velocidad del viento así como datos de dirección, lo mejor es convertir la velocidad+dirección en un vector , sumando esos vectores, y luego si necesitas una dirección al final, tomando la dirección del resultado. En el caso de que tu viento tenga siempre la misma velocidad (o al menos se pueda suponer que tiene una velocidad constante), esto es mejor que el mecanismo que sugieres: por ejemplo, en tu método un viento del este ( $\theta_0=0^{\circ}$ ) y un viento del norte ( $\theta_1=90^{\circ}$ ) dará $s_0 = \sin(0^{\circ}) = 0$ y $s_1 = \sin(90^{\circ}) = 1$ Así que $s_{avg} = 0.5$ y $\theta_{avg} = \sin^{-1}(s_{avg}) = 30^{\circ}$ mientras que el método de la media de los vectores da como resultado $v_0 = (\cos(\theta_0),\sin(\theta_0)) = (1,0), v_1 = (0,1), v_{avg} = (0.5, 0.5)$ y $\theta_{avg} = 45^{\circ}$ . También tiene la ventaja de que es invariante por rotación Si se rota todo el conjunto por cualquier valor constante (por ejemplo, haciendo que el viento del norte sea un viento del noreste y el del este un viento del sureste) se obtendrá un promedio que es el promedio de los datos iniciales rotado por esa cantidad. Ten en cuenta que en el caso de que la media esté mal definida, este método dará un vector cero para la dirección del viento combinado, por lo que se rompe (correctamente) al intentar encontrar un ángulo a partir de ese resultado.

0 votos

Tienes razón, el método del seno es sencillamente erróneo. Gracias por la sugerencia del vector. +1

0 votos

Sé que es tarde, pero el método de descomponer las direcciones en componentes u y v es correcto, aunque lo mejor sería trabajar con números complejos, ya que es mucho más sencillo (automático, en realidad).

0 votos

TomCho eso suena intrigante - ¿te importaría dar más detalles, por favor?

6voto

patricktokeeffe Puntos 131

Suponiendo que se utilice la convención meteorológica estándar de que la dirección del viento es la fuente dirección de los vientos (es decir, 270º significa que sopla hacia el oeste → "aquí"):

Dadas dos matrices que contienen la velocidad del viento ( WS ) y la dirección del viento ( WD en grados), la dirección media del viento vectorial se calcula como sigue:

V_east[i] = mean(WS[i] * sin(WD[i] * pi/180))
V_north[i] = mean(WS[i] * cos(WD[i] * pi/180))

mean_WD = arctan2(V_east, V_north)) * 180/pi
mean_WD = (360 + mean_WD) % 360

La última línea reasigna el rango ( $-\pi$ a $\pi$ ) ( $-$ 180 a 180) → (0 a 359).

Alternativamente, la dirección media del viento del vector unitario puede calcularse omitiendo los componentes de la velocidad del viento. La dirección del viento media vectorial unitaria suele ser una buena aproximación a la dirección del viento media escalar (que es un cálculo más complicado).

u_east = mean(sin(WD * pi/180))
u_north = mean(cos(WD * pi/180))
unit_WD = arctan2(u_east, u_north) * 180/pi
unit_WD = (360 + unit_WD) % 360

N.B. La aplicación de la arctan2 o atan2 es importante: la mayoría de los lenguajes de programación respetan la atan2(y, x) pero las hojas de cálculo tienden a invertir los argumentos como atan2(x, y) .

Editado para aclarar el cálculo del array. ¡Gracias comentarios!

3 votos

¿Por qué la media no tiene en cuenta WS ? ¿No debería la media ser ponderada por las velocidades del viento, con las velocidades del viento dentro de el mean() ?

1 votos

He añadido subíndices para aclarar el cálculo de la matriz. Gracias @AF7

0 votos

@patricktokeeffe ¿Sería posible mostrar cómo crear la función de viento usando ATAN y no ATAN2? Estoy tratando de implementar esto en un dispositivo que no tiene una función ATAN2. Gracias

5voto

Knox Puntos 1543

Promediar los senos de las entradas y tomar el seno inverso del resultado no puede dar una respuesta sensata, ya que el rango de la función seno inverso es $180^\circ$ en lugar de $360^\circ$ .

Probablemente quieras tener en cuenta la magnitud del viento. Por ejemplo, si tiene un viento que sopla hacia el este (a $0^\circ$ ) a 10 mph durante la mitad del tiempo y hacia el norte (a $90^\circ$ ) a 2 mph la mitad del tiempo, la media probablemente no debería ser $45^\circ$ sino algo mucho más cercano a $0^\circ$ .

Una buena solución sería tomar el vectores de la dirección del viento, sumarlos todos y dividirlos por el número de muestras. Por ejemplo, en el caso anterior la velocidad media sería

$$\frac{(10,0) + (0,2)}{2} = (5,1)$$

que, si lo introducimos en la función atan2 da una dirección del viento de $11.31^\circ$ o un poco al norte del este. Este método también tiene la agradable propiedad de que se generaliza fácilmente a dimensiones superiores, lo que, aunque puede no ser relevante para su trabajo, suele ser un indicador de que va por buen camino.

5voto

heltonbiker Puntos 135

La pregunta es vieja, pero encontré esto en Wikipedia, que podría ser el "promedio del pecado" que escribiste en tu pregunta:

"Una forma sencilla de calcular la media de una serie de ángulos (en el intervalo intervalo [0°, 360°)) es calcular la media de los cosenos y senos de cada ángulo, y obtener el ángulo calculando la tangente inversa tangente. Consideremos como ejemplo los tres ángulos siguientes: 10, 20 y 30 grados. Intuitivamente, el cálculo de la media consistiría en sumar estos tres ángulos y dividirlos por 3, en este caso sí dando como resultado un ángulo medio correcto de 20 grados. Al girar este girando este sistema 15 grados en sentido contrario a las agujas del reloj, los tres ángulos se convierten en 355 grados, 5 grados y 15 grados. La media ingenua es ahora de 125 grados, que es la respuesta incorrecta, ya que debería ser de 5 grados".

http://en.wikipedia.org/wiki/Directional_statistics#The_fundamental_difference_between_linear_and_circular_statistics

6 votos

Este método de promediar los ángulos se ha trasladado a una página diferente en Wikipedia: es.wikipedia.org/wiki/Mean_of_circular_quantities

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X