Expresión para la media y la varianza en una corriente en curso

Tengamos un flujo continuo de números como x 1 ,x 2 ,x 3 ,…,x n .

La fórmula para calcular la media y la varianza en cualquier punto dado se da como: 

  • Media = E(x) = u = 1 / norte ∑ i =1 norte x yo
  • Desviación estándar = s = 1 / ni=1 n (x i – u) 2
  • Varianza = s 2

Sin embargo, sería un enfoque muy lento si calculamos estas expresiones recorriendo todos los números cada vez que aparece un nuevo número.

Solución efectiva

s2 = 1/ni=1n (xi - u) 2

    = 1/n (∑i=1n xi2 + ∑i=1n u2 - 2u ∑i=1n xi)

    = 1/n (∑xi2 + nu2 - 2u ∑xi)

    = ∑xi2/n + u2 - 2u ∑xi/n

    = ∑xi2/n - u2

    = E(x2) - u2

    = E(x2) - [E(x)]2

Por lo tanto, en esta implementación, tenemos que mantener una suma variable de todos los números actuales para la media y mantener la suma variable 2 de todos los números actuales para E(x 2 ) y tenemos que mantener otra variable n para el conteo de números presentes .

Código Python para la implementación:

Python3

sum=0    # To store sum of stream
sumsq=0  # To store sum of square of stream
n=0      # To store count of numbers
while(True):
      
    x=int(input("Enter a number : "))
      
    n+=1
    sum+=x
    sumsq+=(x*x)
      
    #Mean
    mean = sum/n
    #Variance
    var = (sumsq/n) - (mean*mean)
    print("Mean : ",mean)
    print("Variance : ",var)
    print()
Input and corresponding output : 

Enter a number : 1
Mean :  1.0
Variance :  0.0

Enter a number : 2
Mean :  1.5
Variance :  0.25

Enter a number : 5
Mean :  2.6666666666666665
Variance :  2.8888888888888893

Enter a number : 4
Mean :  3.0
Variance :  2.5

Enter a number : 3
Mean :  3.0
Variance :  2.0

Por lo tanto, podemos calcular la media y la varianza de un flujo continuo en cualquier punto dado en un tiempo constante.

Publicación traducida automáticamente

Artículo escrito por man_preet y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *