/**
*
* @author Rafael Angel Montero Fernández.
* Son algunas formulas y funciones basicas de estadistica.
* Para sacar un porcentaje cuando se usan más de 100, por ejemplo 1000 es una poblacion muy grande y cuando son millones se usan 100000. A esto se le llama ampliacion.
*/
public class Elementos_de_estadistica
{
/**
*
* @param a_b_c_y_hasta_el_infinito Los numeros que se usaran para la operacion de la proporcion.
* @param indice_al_cual_sacarle_la_proporcion
* @return El resultado de una operacion matematica llamado proporcion.
* Es una razon pero con dos propiedades más dentro de la operacion.
* 1) Relaciona dos numero del mismo universo de numeros.
* 2) Relaciona una parte con el todo.
* Numeros A, B, C del mismo universo de numeros; la proporcion es:
* B/A+B+C=Total.
* Parte de la fraccion (A+B+C) representa al numero B.
* B varia entre cero o uno.
*/
public double proporcion(double a_b_c_y_hasta_el_infinito[], int indice_al_cual_sacarle_la_proporcion)
{
return (a_b_c_y_hasta_el_infinito[indice_al_cual_sacarle_la_proporcion]/this.sumatoria_de_nuemros(a_b_c_y_hasta_el_infinito));
} //proporcion
/**
*
* @param numeros_para_la_sumatoria vector de numeros para realizar una sumatoria.
* @return retorna el resultado de la sumatoria.
*/
public double sumatoria_de_nuemros(double numeros_para_la_sumatoria[])
{
double sumatoria=0.0;
for(int i=0; i<=numeros_para_la_sumatoria.length-1; i++)
{
sumatoria+=numeros_para_la_sumatoria[i];
} //for
return sumatoria;
}//sumatoria_de_nuemros
/**
*
* @return Retorna el resultado de una operacion matematica llamada Razon.
* Es la relacion entre dos numeros.
* La razon es A/B, indicando cuantas veces cabe B en A.
*/
public double razon(double a, double b)
{
return a/b;
}//razon
/**
*
* @param a_b_c_y_hasta_el_infinito vector de numeros para la sumatoria.
* @param indice_al_cual_sacarle_la_proporcion un numero del vector que será el que se use para saber su proporcion.
* @param por_cien_por_mil_por_diez_mil_por_cien_mil el resultado multiplicado por uno de los indicados en el parametro o mayor para dar un porcentaje.
* Nota cuando son poblaciones muy grandes no se usa 100, sino que se usa de 1000 en adelante.
* O sea uno entre mil, uno entre diez mil...
* @return retorna un valor absoluto que indica el porcentaje. Usted le pondra el simbolo con un string.
*/
public double proporcion_en_la_practica(double a_b_c_y_hasta_el_infinito[], int indice_al_cual_sacarle_la_proporcion, int por_cien_por_mil_por_diez_mil_por_cien_mil)
{
return this.proporcion(a_b_c_y_hasta_el_infinito, indice_al_cual_sacarle_la_proporcion) * por_cien_por_mil_por_diez_mil_por_cien_mil;
}//proporcion_en_la_practica
/**
*
* @param a Un nuero a.
* @param b Un numero b.
* @param por_cien_por_mil_por_diez_mil_por_cien_mil el resultado multiplicado por uno de los indicados en el parametro o mayor para dar un porcentaje.
* Nota cuando son poblaciones muy grandes no se usa 100, sino que se usa de 1000 en adelante.
* O sea uno entre mil, uno entre diez mil...
* @return el valor retornado representa un porcentaje.
*/
public double razon_en_la_practica(double a, double b, int por_cien_por_mil_por_diez_mil_por_cien_mil)
{
return this.razon(a, b) * por_cien_por_mil_por_diez_mil_por_cien_mil;
}//razon_en_la_practica
/**
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @return retorna el resultado. La tasa de interes por periodo.
*/
public double interes_simple(double monto_inicial_invertido, double tasa_de_interes_por_periodo)
{
return monto_inicial_invertido*tasa_de_interes_por_periodo;
}//interes_simple
/**
*
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return retorna el resultado. La tasa de interes en todos los periodos.
*/
public double interes_simple_por_periodo(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return this.interes_simple(monto_inicial_invertido, tasa_de_interes_por_periodo) *numero_de_periodos;
}//interes_simple
/**
*
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return retorna el resultado. La suma total de intereses en todo el periodo considerado.
* Esto corresponde al modelo aritmetico.
*/
public double suma_total_ganada_en_intereses_en_todo_el_periodo(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return monto_inicial_invertido+this.interes_simple_por_periodo(monto_inicial_invertido, tasa_de_interes_por_periodo, numero_de_periodos);
}//suma_total_ganada_en_intereses_en_todo_el_periodo
/**
*
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return retorna el resultado. La suma total de intereses en todo el periodo considerado.
* Esto corresponde al modelo aritmetico.
*/
public double modelo_de_interes_compuesto(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return monto_inicial_invertido*(1+(tasa_de_interes_por_periodo*numero_de_periodos));
}//suma_total_ganada_en_intereses_en_todo_el_periodo_simplificado
//El siguiente es el modelo compuesto.
/**
*
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return retorna el resultado. La suma total de intereses en todo el periodo considerado en el modelo compuesto.
*/
public double modelo_geometrico(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return monto_inicial_invertido*Math.pow(1+tasa_de_interes_por_periodo, numero_de_periodos);
}//modelo_geometricomodelo_geometrico
//tasa_de_cresimiento_aritmetico
/**
*
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return El valor de crecimiento aritmetico.
*/
public double tasa_de_cresimiento_aritmetico(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return (1/numero_de_periodos)*((this.mt_monto_al_final_del_periodo(monto_inicial_invertido, tasa_de_interes_por_periodo, numero_de_periodos)/monto_inicial_invertido)-1);
}//tasa_de_cresimiento_aritmetico
/**
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return el Mt o monto al final del periodo.
* Es más que todo para usarse dentro de tasa_de_cresimiento_aritmetico, pero la hice publica para poderse usar en otras tareas.
* Y en tasa_de_cresimiento_geometrico.
*/
public double mt_monto_al_final_del_periodo(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return this.modelo_geometrico(monto_inicial_invertido, tasa_de_interes_por_periodo, numero_de_periodos);
}//mt_monto_al_final_del_periodo
/**
*
* @param monto_inicial_invertido Mo monto inicial invertido. Muchas veces Mo vale 1.
* @param tasa_de_interes_por_periodo r tasa de interes por periodo.
* @param numero_de_periodos t es tiempo (Numero de tiempos o periodos).
* @return el Mt o monto al final del periodo.
*/
public double tasa_de_cresimiento_geometrico(double monto_inicial_invertido, double tasa_de_interes_por_periodo, int numero_de_periodos)
{
return Math.pow((this.mt_monto_al_final_del_periodo(monto_inicial_invertido, tasa_de_interes_por_periodo, numero_de_periodos)/monto_inicial_invertido),1/numero_de_periodos)-1;
}//tasa_de_cresimiento_geometrico
/**
* Se usará en la formula exponencial.
* Es el numero e.
*/
private final double neper=2.7182818228;
/**
*
* @param valor_inicial Corresponde a algun valor inicial. Simbolo N0.
* @param valor_futuro corresponde a un valor futuro tirando hacia el infinito. Simbolo t
* @return retorna el crecimiento exponencial que ha sucedido desde el inicio hasta la fecha futura o valor futuro.
*/
public double modelo_de_cresimiento_exponencial(double valor_inicial, double valor_futuro)
{
return ln(valor_inicial/valor_futuro);
}//modelo_de_cresimiento_exponencial
/**
*
* @param numero cuaquier numero para pasarlo por el ln logaritmo natural de base Neper.
* @return retorna el resultado del numero pasado por el logaritmo natural con base e (Neper).
*/
public double ln(double numero)
{
return (Math.log10(numero)/Math.log10(neper) );
} //ln
/**
* Esta trae los parametros opcionales.
* @param numero_de_tabla Numero de la tabla, por ejemplo podria ser un texto donde se presentan cinco tablas diferentes.
* @param titulo_de_la_tabla El titulo debe ser telegrafico, solo lo necesario y descriptivo.
* @param nota_introductoria Opcional. Esta nota puede usarse como titulo largo o como aclaraciones de algunos valores en la tabla.
* @param columna_matriz Es donde van las etiquetas principales.
* @param encabezado_superior Etiquetas de nivel superior dentro del encabezado.
* @param encabezado_inferior Etiquetas de nivel inferior dentro del encabezado. Por lo general pueden ser más que las superiores.
* @param cuerpo Es donde va toda la informacion en numeros, porcentages, valores, o datos de texto.
* @param nota_al_pie Son notas finales acerca de la tabla y su contenido.
* @param fuente Fuente APA de donde se tomaron los datos, o la investigacion. O si es de una investigacion propia pero anterior igual debe citarse a si mismo.
* @return retorna un texto con un formato lo más similar posible a una tabla estadistica.
*/
public String tabla_estasdistica(int numero_de_tabla, String titulo_de_la_tabla, String nota_introductoria, String columna_matriz[], String encabezado_superior[], String encabezado_inferior[], String cuerpo[], String nota_al_pie, String fuente)
{
int i=0;
//columna_matriz
String fila_del_encavezado_superior="", fila_del_encavezado_inferior="";
for (i=0; i<=encabezado_superior.length-1; i++)
{
fila_del_encavezado_superior+=encabezado_superior [i]+" | ";
}//for
for (i=0; i<=encabezado_inferior.length-1; i++)
{
fila_del_encavezado_inferior+=encabezado_inferior [i]+" | ";
}//for
String espacios="";
for (i=0; i<=columna_matriz[0].length()-1; i++)
{
espacios+=" ";
}//for
String cuerpo_informativo_de_la_tabla=espacios;
int cont=0;
for (i=0; i<=cuerpo.length-1; i++)
{
cont++;
if(cont<=encabezado_inferior.length-1)
{
cuerpo_informativo_de_la_tabla+=cuerpo [i]+" | ";
}//if
else
{
cuerpo_informativo_de_la_tabla+="\n" + espacios;
}//else
}//for
return numero_de_tabla + "\n" + titulo_de_la_tabla + "\n" + nota_introductoria + "\n"+columna_matriz[0]+ " | "+fila_del_encavezado_superior+"\n"+ columna_matriz[1] + " | "+fila_del_encavezado_inferior+ "\n"+cuerpo_informativo_de_la_tabla+"\n\n"+nota_al_pie+"\n"+fuente;
}//tabla_estasdistica
/**
* Esta funcion es la que viene sin los parametros opcionales.
* @param numero_de_tabla Numero de la tabla, por ejemplo podria ser un texto donde se presentan cinco tablas diferentes.
* @param titulo_de_la_tabla El titulo debe ser telegrafico, solo lo necesario y descriptivo.
* @param columna_matriz Es donde van las etiquetas principales.
* @param encabezado_superior Etiquetas de nivel superior dentro del encabezado.
* @param encabezado_inferior Etiquetas de nivel inferior dentro del encabezado. Por lo general pueden ser más que las superiores.
* @param cuerpo Es donde va toda la informacion en numeros, porcentages, valores, o datos de texto.
* @return retorna un texto con un formato lo más similar posible a una tabla estadistica.
*/
public String tabla_estasdistica(int numero_de_tabla, String titulo_de_la_tabla, String columna_matriz[], String encabezado_superior[], String encabezado_inferior[], String cuerpo[])
{
return this.tabla_estasdistica(numero_de_tabla, titulo_de_la_tabla, "", columna_matriz, encabezado_superior, encabezado_inferior, cuerpo, "", "");
}//tabla_estasdistica sin los parametros opcionales.
}//Elementos_de_estadistica