glm
Version:
Generalized Linear Models
47 lines (40 loc) • 1.99 kB
JavaScript
exports.GLM.links = exports.GLM.links || {};
var linkBuilder = function (func, inv, deriv) {
var f = function (P) { return exports.GLM.utils.map(P, func); }
f.inverse = function (P) { return exports.GLM.utils.map(P, inv); }
f.derivative = function (P) { return exports.GLM.utils.map(P, deriv); }
return f;
};
exports.GLM.links.Logit = function () {
var f = function (P) { return exports.GLM.utils.map(P, function (p) { return Math.log(p / (1.0 - p)); }) };
f.inverse = function (P) { return exports.GLM.utils.map(P, function (p) { var t = Math.exp(p); return t / (1.0 + t); }); };
f.derivative = function (P) { return exports.GLM.utils.map(P, function (p) { return 1.0 / (p * (1.0 - p)); }); };
return f;
};
exports.GLM.links.Power = function (power) {
var f = function (P) { return exports.GLM.utils.map(P, function (p) { return Math.pow(p, power); }); }
f.inverse = function (P) { return exports.GLM.utils.map(P, function (p) { return Math.pow(p, 1.0 / power); }); }
f.derivative = function (P) { return exports.GLM.utils.map(P, function (p) { return power * Math.pow(p, power - 1); }); }
return f;
};
exports.GLM.links.Identity = function () {
return exports.GLM.links.Power(1.0);
};
exports.GLM.links.Log = function () {
var f = function (P) { return exports.GLM.utils.map(P, Math.log); }
f.inverse = function (P) { return exports.GLM.utils.map(P, Math.exp); }
f.derivative = function (P) { return exports.GLM.utils.map(P, function (p) { return 1.0 / p; }); }
return f;
};
exports.GLM.links.NegativeBinomial = function (alpha) {
var f = function (P) {
return exports.GLM.utils.map(P, function (p) { return Math.log(p / (p + 1.0 / alpha)); });
};
f.inverse = function (P) {
return exports.GLM.utils.map(P, function (p) { return Math.exp(p) / (alpha * (1 - Math.exp(p))); });
}
f.derivative = function (P) {
return exports.GLM.utils.map(P, function (p) { return 1.0 / (p + alpha * Math.pow(p, 2)); });
}
return f;
};