Archivo de 11/12/07|Página de archivo diario

JAIDA – Estadísticas con Java

Pensando sobre todo en la realización de proyectos personales, prácticas de asignaturas o simplemente para ver cómo esta funcionando un programa que hemos desarrollado, una de las cosas más útiles es calcular las estadísticas e intentar visualizarlas para ver el comportamiento deseado. El problema principal muchas veces es cómo evitar hacer el típico copy & paste a una hoja de cálculo e intentar ahí hacer los gráficos, señalando además lo de intentar porque hay muchos gráficos estadísticos que no hacen las hojas de cálculo comunes.

Partiendo de esta problemática, encontré hace poco tiempo JAIDA (Java implementation of the Abstract Interfaces for Data Analysis). JAIDA en modo resumido es un paquete que nos permite generar gráficos estadísticos mediante código en Java. La verdad es que lo he estado probando estos últimos días y los resultados son bastante buenos.

El código es bastante fácil y hay multitud de ejemplos en la página de referencia. A modo de ejemplo, el siguiente código crea dos histogramas y muestra por pantalla la suma, resta, multiplicación y división de los dos histogramas.

import hep.aida.*;
import java.util.Random;

public class HistogramArithmetic
{
public static void main(String[] argv)
{
IAnalysisFactory af = IAnalysisFactory.create();
IHistogramFactory hf = af.createHistogramFactory(af.createTreeFactory().create());

IHistogram1D h1 = hf.createHistogram1D("test 1d",50,-3,6);
IHistogram1D h2 = hf.createHistogram1D("test 2d",50,-3,6);

Random r = new Random();
for (int i=0; i<10000; i++)
{
h1.fill(r.nextGaussian());
h2.fill(3+r.nextGaussian());
}
IHistogram1D plus = hf.add("h1+h2",h1,h2);
IHistogram1D minus = hf.subtract("h1-h2",h1,h2);
IHistogram1D mul = hf.multiply("h1*h2",h1,h2);
IHistogram1D div = hf.divide("h1 over h2",h1,h2);

IPlotter plotter = af.createPlotterFactory().create("Plot");
plotter.createRegions(2,2,0);
plotter.region(0).plot(plus);
plotter.region(1).plot(minus);
plotter.region(2).plot(mul);
plotter.region(3).plot(div);
plotter.show();
}
}

El resultado es la siguiente pantalla:

Además de histogramas, hay muchos más tipos de gráficos, como nubes de puntos, diagramas de correlación, etc.

En cuanto a su uso, simplemente descargar los jars del ftp o mediante subversion. Añadir los jars al proyecto en eclipse o en el classpath del proyecto si no utilizamos eclipse y listo para usar.

Referencias:

Tags: , , ,