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: , , ,

8 comments so far

  1. Javier on

    Como ya te dije ayer, existe también una librería así para GWT, que no me va a servir de nada, pero me sorprendió encontrarla: http://code.google.com/p/gchart/

  2. Daniel on

    Gracias por la URL, la verdad es que tiene bastante buena pinta. Parece que soporta también varios tipos de gráficos: scatter-plot, bar-chart, etc. Aprovechando la ocasión, ¿gwt se puede utilizar en una aplicación java no web?

  3. Javier on

    GWT es esencialmente un compilador de Java a Javascript (Ajax), con que en principio es sólo para web. La parte que sí es Java puro es la mitad del servidor, que se comunica mediante RPC con la interfaz Ajax, pero en principio estas librerías se ocupan sólo de la parte cliente.

  4. carlos on

    Tengo la siguiente excepcion a la hora de ejecutar la clase que tiene arriba

    null
    Error: Unable to create IAnalysisFactory
    Error: No concrete IAnalysisFactory could be located
    Error: Please check your CLASSPATH and see the AIDA Users Guide
    ===============================================================
    Exception in thread “main” java.lang.RuntimeException: No concrete IAnalysisFactory could be located
    at hep.aida.IAnalysisFactory.create(IAnalysisFactory.java:97)
    at ufps.prototipo.ProfileCreate.main(ProfileCreate.java:18)
    Java Result: 1

    muchisimas gracias por la atencion…espero pronta respuesta

  5. Aura on

    Por favor comenten, esto es programacion a objetos, voy a hacer un proyecto y pero debe ser poo en java, mi idea es una aplicacion que muestre estadisticas y pronosticos

  6. Ana on

    Holaa ! tengo un trabajo sobre graficos matematico/estaditicos en java..
    me pueden sugerir alguna pagina de ayuda ?

  7. isis daniela on

    ay no no le entiendo a esta informacion esta inconpleta

  8. :S on

    import hed ?????
    da error


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

A %d blogueros les gusta esto: