snippet: LinearLeastSquares para javascript

Por esas cosas de la vida un amigo necesitaba un interpolador simple para javascript; asi que hice este de minimos cuadrados.

Uso:

interpolador = new LinearLeastSquares([1, 2, 3, 4, 5], [1, 4, 9, 16, 25]);
interpolador.interpolate(1);

El Código

/**
 * Creates an interpolator function with "Linear Least Square" method.
 *
 * @see http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)
 * @params xs: array with x's values (same lenght as ys)
 * @params xs: array with y's values (same lenght as xs)
 *
 * @author Juan BC
 * @licence gpl3
 * @date 2011/01/05
 *
 */
function LinearLeastSquares(xs, ys){

    //Constructor
    if (xs.length != ys.length){
        throw "'xs' and 'ys' must have same lenght";
    }

    var n = xs.length;
    var sum_xy = 0;
    var sum_x = 0;
    var sum_y = 0;
    var sum_x_sq = 0;
    for(var i=0; i < xs.length; i++){
        sum_xy += xs[i] * ys[i];
        sum_x += xs[i];
        sum_y += ys[i];
        sum_x_sq += xs[i] * xs[i];
    }

    this._m = (n * sum_xy - sum_x * sum_y) / (n * sum_x_sq - sum_x * sum_x);
    this._b = (sum_y - this._m * sum_x) / n;
    //Constructor

     /**
     * Return the interpolation of x
     * @param x
     */
    this.interpolate = function(x){
        return this._b + this._m * x;
    }
    
}

Disclaimer: Solo lo probé con el conjunto de datos que hay en Wikipedia.

Leer Más

Levantando mi Cruz

Casi 30 años vividos me trajo muchas cosas buenas, pero hoy no tengo ganas de hablar de cosas buena de la vida. Hoy voy a hablar de las cosas malas que hice, y en particular una de ellas. Me confiezo por mi tosudes, mi inmadurez mi arrogancia mi torpeza me aleje de alguien que cada ves que veo me enmudece y se que siempre va a estar en mi corazón de una manera inammovible. Ella (si es mujjer) también tiene sus errores en mi vida, malos manejos de mi sentimientos sobre todo, pero desde ya está perdonada. Capaz hiero algunas sensibilidades con este post por mil kilombos que pase por ella y por mil kilombos que me quedan pasar, pero algo cambio. Estoy dispuesto a hacerme carggo. No voy a correr mas no voy a llorar mas esta ves voy a ser honesto y dar lo mejor de mi a esta persona, no esperando nada a cambio sino por que quiero que sepa que mi mundo es mucho mas bonito con ella adentro, con sus aciertos sus errores sus arranques y sus actitudes que tienen tanto de buenas como de malas como la de cualquier otro.

Es difícil poner en un poco de prosa el sentimientos que me retuercen el alma estos días, solo soy una persona corriente pero que me propuse de ahora en mas cargar mi cruz con dignidad, por que ella se lo merece (y yo también).

PT: No es facil para mi escribir esto, pero tenia ganas de expresarlo

Leer Más