Estadística

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1232 bytes)next.gif (998 bytes)

Tratamiento de datos

Medidas estadísticas

Definición de la clase Estadistica

Uso de la clase Estadistica

El código fuente


Medidas estadísticas

La media de una serie estadística nos proporciona una idea de sus características, pero esta información es insuficiente. Por ejemplo, un país puede tener una determinada renta per cápita pero desigualmente distribuida, con algunos miembros muy ricos y otros pobres, y otro país puede tener la misma renta pero más homogéneamente repartida. De estas observaciones, surgen las medidas de dispersión, las más importantes son la desviación media y la desviación cuadrática media o desviación estándar.

Media aritmética

Una de las medidas que caracterizan a una distribución es la media aritmética, que se obtiene sumando los valores xi introducidos, y dividiendo entre el número total N, tal como vimos al estudiar la clase Lista.

Sea x es el array que guarda las n medidas. La codificación de la función valorMedio que calcula y devuelve el valor medio no reviste dificultad.

    double valorMedio(){
   	double suma=0.0;
	for(int i=0; i<n; i++){
	     suma+=x[i];
        }
	return suma/n;
    }

Medidas de dispersión

Se denomina desviación, a la diferencia entre un valor y la media aritmética de la serie estadística, di=xi-<x>. La desviación media es la media aritmética de los valores absolutos de todas las desviaciones. Su fórmula es

La codificación de esta fórmula es similar a la del valor medio. La función desviacionMedia ha de conocer el valor medio de la serie estadística que se guarda en la variable local media, para calcular después cada una de las desviaciones, sumar el valor absoluto de cada una de ellas y dividir el resultado entre el número de términos.

    double desviacionMedia(){
 	double suma=0;
	double media=valorMedio();
	for(int i=0; i<n; i++){
	     suma+=Math.abs(x[i]-media);
        }
	return suma/n;
    }

La desviación cuadrática media es la raíz cuadrada de la varianza, es decir, de la media aritmética de los cuadrados de las desviaciones respecto a la media.

La codificación de esta función es similar a la función miembro desviacionMedia. Para hallar la raíz cuadrada se llama a la función estática sqrt de la clase Math. Sin embargo, no se emplea ninguna función especial para hallar el cuadrado de un número, simplemente basta multiplicar dos veces el mismo número.

    double desviacionCuadratica(){
  	double suma=0;
	double media=valorMedio();
	for(int i=0; i<n; i++){
	    suma+=(x[i]-media)*(x[i]-media);
        }
	return Math.sqrt(suma/n);
    }

 

Definición de la clase Estadistica

Definimos una clase denominada Estadistica, con dos miembros dato: el array de datos x, y el número de datos n. Como funciones miembro: el constructor que inicializa los miembros dato, las funciones valorMedio, desviacionMedia y desviacionCuadratica.

Ponemos el control de acceso delante de la declaración de los miembros dato, y de las funciones miembro. Los miembros dato los declaramos privados (private) de modo que no se puedan modificar desde los objetos de dicha clase. Las funciones miembro las declaramos públicas (public)

Si los miembros dato son privados, podemos redefinir la función toString miembro de la clase base Object, para conocer los datos que guarda un objeto de la clase Estadistica. Como se puede ver en el listado que viene a continuación, la función toString devuelve un string que es la concatenación de un dato a continuación del otro separados por un tabulador, al final añade un retorno de carro para pasar a la siguiente línea.

La función toString se llama siempre que un objeto de la clase Estadistica se pone como argumento de la función System.out.println.

public class Estadistica {
    private double[] x;
    private int n;
    public Estadistica(double[] datos) {
        x=datos;
        n=datos.length;
    }
    public double valorMedio(){
   	    double suma=0;
	    for(int i=0; i<n; i++){
		    suma+=x[i];
        }
	    return suma/n;
    }
    public double desviacionMedia(){
 	    double suma=0;
	    double media=valorMedio();
	    for(int i=0; i<n; i++){
		    suma+=Math.abs(x[i]-media);
        }
	    return suma/n;
    }
    public double desviacionCuadratica(){
  	    double suma=0;
	    double media=valorMedio();
	    for(int i=0; i<n; i++){
		    suma+=(x[i]-media)*(x[i]-media);
        }
	    return Math.sqrt(suma/n);
    }
    public String toString(){
        String texto="";
        for(int i=0; i<n; i++){
            texto+="\t"+x[i];
        }
        texto+="\n";
        return texto;
    }
}

 

Uso de la clase Estadistica

La medida de la altura de los 10 alumnos de una clase ha sido la siguiente:

1.65, 1.82, 1.72, 1.75, 1.73, 1.85, 1.90, 1.74, 1.76, 1.77.

Hallar el valor medio, la desviación media y la desviación cuadrática media.

Creamos un array denominado datos, con los datos del problema

	double[] datos={1.65, 1.82, 1.72, 1.75, 1.73, 1.85, 1.90, 1.74, 1.76, 1.77};

Creamos un objeto es de la clase Estadistica pasándole el array datos a su constructor.

       Estadistica es=new Estadistica(datos); 

Desde el objeto es llamamos a las funciones miembro públicas para hallar e imprimir el valor medio, la desviación media y la desviación cuadrática media.

        System.out.println("media:                 "+es.valorMedio());
        System.out.println("desviación media:      "+es.desviacionMedia());
        System.out.println("desviación cuadrática: "+es.desviacionCuadratica());

Si además queremos saber qué datos guarda el objeto es, escribimos

         System.out.println("datos guardados: "+es);

Implícitamente, se llama a la función miembro toString.

 

El código fuente

disco.gif (1035 bytes) Estadistica.java, EstadisticaApp.java