Cálculo de la varianza

La varianza de n números x1, x2,…, xn es:

∑(xi-xm)²/(n-1)

donde xm es la media.

Vamos a hacer un algoritmo que lea una secuencia de números y calcule su varianza. Los números se introducirán usando el teclado y se acabarán con un 0, que obviamente no será tenido en cuenta para el cálculo de la varianza.

Solución

La fórmula de la varianza parece indicar que necesitamos hacer dos pasadas sobre los datos: una para calcular primero la media y otra para aplicar esa fórmula. Porque no es razonable pedir a quien use nuestro programa que escriba dos veces los mismos datos, parece que necesitamos almacenarlos internamente. Vamos a reescribir la fórmula de la varianza, para que se pueda calcular de una sola pasada. Si se desarrolla, tenemos:

1/(n-1)*∑xi-1/(n*(n-1))*(∑xi)²

Esta fórmula se implementa fácilmente en una sola pasada:

 public class Varianza {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
double acMedia = 0, acMedia2 = 0;
double x;
int n = 0;
System.out.println(“Escriba una serie de números, pulse 0 para terminar”);
x = sc.nextDouble();
while (x != 0) {
acMedia = acMedia + x;
acMedia2 = acMedia2 + x * x;
n++;
x=sc.nextDouble();
}
double varianza = acMedia2 / (n – 1) – (acMedia * acMedia) / (n * (n – 1));
System.out.println(“La varianza es: ” + varianza);
}

}

NOTA: Recuerda que en la varianza el sumatorio va desde 1 hasta n

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s