viernes, 29 de noviembre de 2013

Métodos de distribución de Poisson e Hipergeometrica.

Clase Main.
package Estadistica;


public class Main {
public static void main(String[]argc) {
Estadistica p = new Estadistica ();
System.out.printf ("Factorial de 5 = %f\n", p.Factorial(5));
System.out.printf("Permutacion 5,  3 = %.0f\n", p.Permutacion(5, 3));
System.out.printf("Combinacion 5,  3 = %.0f\n", p.Combinacion(5, 3));
System.out.printf("Binomial 20,  3, 0.5 puntual = %f\n", p.Binomial(20, 3, 0.5, false));
System.out.printf("Binomial 20,  14, 0.5 acumulado = %f\n", p.Binomial(20, 14, 0.5, true));
System.out.printf("Normal 1.75, 1.85, 1.80, 0.5 = %f\n", p.Normal(1.75, 1.85, 1.80, 0.05));
System.out.printf( "Hipergeometrica 4, 6, 3, 1 = %f\n", p.Hipergeometrica(4, 6, 3, 1));
System.out.printf( "Poisson 5,8 = %f\n", p.Poisson(5,8));
}

}


Clase Estadistica.

package Estadistica;

public class Estadistica {
final static double e  = 2.7182;

//double es el tipo de dato que regresara la pc
public double Factorial(double args) {
       if (args <= 0.0) {
           return 1.0;
       }
       return(args * Factorial(args - 1.0));
   }
public double Permutacion (int n, int r) {
return (this.Factorial(n) / this.Factorial(n-r));
}
public double Combinacion (double n, double n2) {
return (this.Factorial (n) / (this.Factorial(n-n2) * this.Factorial(n2)));
}
public double Binomial (int n, int r, double p, boolean acum){
double acumulado;
if( acum ){
acumulado=0.0;
for (int i =0; i <= r; i++){
acumulado += (this.Combinacion( n, i ) *  Math.pow(p,i) * Math.pow (1.0-p, (n-i)));
}
return acumulado;

}
else {
return (this.Combinacion( n, r ) *  Math.pow(p,r) * Math.pow (1.0-p, (n-r)));
}
}

   
    public double Normal( double linf, double lsup, double media, double sigmma) {
    double parte1, parte2, dx, area1 = 0.0, area2 = 1.0;
    int celdas = 50;
    parte1 = 1.0 / ( sigmma * Math.sqrt(2.0 * Math.PI));
    while(Math.abs(area1 - area2) > 0.0000001) {
    area2 = area1;
    area1 = 0.0;
    celdas *= 2;
    dx = (double)Math.abs(linf - lsup) / celdas;
    for( double i = linf; i < lsup; i += dx ) {
    parte2 = (i - media) / sigmma;
    area1 += ( parte1 * Math.pow(Math.E, ( -1.0/2.0 * Math.pow(parte2, 2) ))) * dx;
    }
    }
    return area1;
}
public double Hipergeometrica (double N, double n, double d, double x) {

return(this.Combinacion(d, x) * this.Combinacion(N - d, n - x) / this.Combinacion(N, n));
}
public double Poisson (double K, double A) {
return ((Math.pow (e,-A)) * ( Math.pow( A, K))) / (this.Factorial(K));

}

}





No hay comentarios:

Publicar un comentario