130 votos

Averageing incremental

¿Hay una manera incremental calcular (o estimar) la media de un vector (un conjunto de números) sin saber su cuenta de antemano?

Por ejemplo tienes a = [4 6 3 9 4 12 4 18] y desea obtener una estimación de la media pero no tienes todos los valores a mano por lo que tienen un promedio de marcha sin tener todos los valores anteriores disponibles.

147voto

Nikolai Prokoschenko Puntos 2507

Usted necesita para mantener al menos dos piezas de información: el número de términos hasta el momento y la ejecución de la media (o algo equivalente).

Supongamos que el $$n ésima componente del vector es de $a_n$ y la ejecución de significar hasta el presente es de $m_n$ así $$m_n= \frac{1}{n}\sum_{i=1}^n a_i.$$

A partir de $m_0=0$, usted puede utilizar el obvio solo pase $$m_n = \frac{(n-1)m_{n-1}+a_n}{n}$$, pero los errores de precisión son propensos a ser menor si se utiliza el equivalente a $$m_n = m_{n-1} + \frac{a_{n}-m_{n-1}}{n}.$$

14voto

Mark Stocks Puntos 1

sí fáciles de hacer - yo lo llamo el medio viaje :)

Nota que tendrá que hacer un seguimiento de la 1. 'suma' de valores, 2. anterior 'significa' y 3. el nuevo valor. El algoritmo es:

en palabras: ('anterior significa' * '(cuenta -1)') + 'nuevo valor') / 'cuenta'

beneficio tiene una media de funcionamiento puede hacer lo mismo con 'desviación' sólo un poco más complejo

7voto

Michal Wolodzko Puntos 11

Aquí está la solución general para el problema. Comenzamos calculando el promedio de (m+1)-ésimo elemento de a (n+1)-ésimo elemento de los datos entrantes.
Dando de que:

  • $a_{n}$ es el n-ésimo elemento de los datos de entrada,
  • $a_{m}$ es el elemento desde el cual queremos iniciar el promedio,
  • $\widehat{a_{n-m}}$ es el promedio de la m-ésima de la n-ésimo elemento,
  • $\widehat{a_{n+1-(m+1)}}$ es el promedio de (m+1)-ésimo a (n+1)-ésimo elemento

Así, si inicialmente se tiene $a_{m}, a_{m+1}, a_{m+2}, \ldots, a_{n}$, un promedio de $n-m$ elementos pueden ser fácilmente calculada. Que es $$ \widehat{a_{n-m}} = \frac{a_{m}+a_{m+1}+a_{m+2}+\ldots+a_{n}}{n-m} $$

Después, cuando el $n+1$ elementh viene, queremos obtener el promedio calculado por el mismo número de elementos que es de $a_{m+1}$ $a_{n+1}$:
$$ \widehat{a_{(n+1)-(m+1)}} = \frac{a_{m+1} + a_{m+2} + \ldots + a_{n} + a_{n+1}}{(n+1) - (m+1)} $$

Luego de la primera ecuación $$ \widehat{a_{n-m}}(n-m) - a_{m} = a_{m+1}+a_{m+2}+\ldots+a_{n} $$

Sustituyendo esto a la ecuación 2 $$ \widehat{a_{(n+1)-(m+1)}} = \frac{\widehat{a_{n-m}}(n-m) - a_{m} + a_{n+1}}{n-m} $$

En fin dynamicaly calcular el promedio para el nuevo elemento necesitamos anterior un promedio de $\widehat{a_{n-m}}$, el primer elemento de la anterior un promedio de $a_{m}$, el número de los elementos que se incluyen en el promedio de $n-m$.
Espero que esta solución inspirador. Por favor, escriba si usted encuentra errores en el anterior razonamiento.

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