ignore emacs backup files also in db/run_all_patches.pl
[sgn.git] / js / solGS / normalDistribution.js
blob6e75b5d522a8b63dd03bac31541e1ea12881fc61
1 /**
3 * given an array of arrays dataset ([[A, 1], [B, 2], [C, 4], [D, 1]]),
4 it standardizes dependent variable values (calculates z-scores), calculates probabilties
5 and returns an array of js objects of the form
6 [{x: xvalue, y: yvalue, z: z-score , p: probability}, ....]
8 * uses methods from statistics/simple_statistics js library
10 * Isaak Y Tecle <iyt2@cornell.edu>
12 **/
14 var solGS = solGS || function solGS () {};
16 solGS.normalDistribution = function () {};
19 solGS.normalDistribution.prototype.getNormalDistData = function (xy) {
21 var yValues = this.getYValues(xy);
23 var mean = ss.mean(yValues);
24 var std = ss.standard_deviation(yValues);
26 var normalDistData = [];
28 for (var i=0; i < xy.length; i++) {
30 var x = xy[i][0];
31 var y = xy[i][1];
32 y = d3.format('.2f')(y);
33 var z = ss.z_score(y, mean, std);
34 z = d3.format('.2f')(z);
35 var p = ss.cumulative_std_normal_probability(z);
37 if (y > mean) {
38 p = 1 - p;
41 normalDistData.push({'x': x, 'y': y, 'z': z, 'p': p});
44 return normalDistData;
48 solGS.normalDistribution.prototype.getPValues = function (normalData) {
50 var p = [];
52 for (var i=0; i < normalData.length; i++) {
53 var pV = normalData[i].p;
54 p.push(pV);
57 return p;
62 solGS.normalDistribution.prototype.getXValues = function (xy) {
64 var xv = [];
66 for (var i=0; i < xy.length; i++) {
67 var x = xy[i][0];
68 x = x.replace(/^\s+|\s+$/g, '');
69 x = Number(x);
70 xv.push(x);
73 return xv;
77 solGS.normalDistribution.prototype.getYValues = function (xy) {
79 var yv = [];
81 for (var i=0; i < xy.length; i++) {
82 var y = xy[i][1];
83 y = Number(y);
85 yv.push(y);
88 return yv;
93 solGS.normalDistribution.prototype.getYValuesZScores = function (normalData) {
95 var yz = [];
97 for (var i=0; i < normalData.length; i++) {
98 var y = normalData[i].y;
99 var z = normalData[i].z;
100 yz.push([y, z]);
104 return yz;
108 solGS.normalDistribution.prototype.getZScoresP = function (normalData) {
110 var zp = [];
112 for (var i=0; i < normalData.length; i++) {
113 var zV = normalData[i].z;
114 var pV = normalData[i].p;
115 zp.push([zV, pV]);
119 return zp;
123 solGS.normalDistribution.prototype.getYValuesP = function (normalData) {
125 var yp = [];
127 for (var i=0; i < normalData.length; i++) {
128 var x = normalData[i].y;
129 var y = normalData[i].p;
130 yp.push([x, y]);
134 return yp;
138 solGS.normalDistribution.prototype.getObsValueZScore = function (obsValuesZScores, zScore) {
140 var obsValue;
141 for (var i=0; i < obsValuesZScores.length; i++) {
143 var j = obsValuesZScores[i];
145 if (obsValuesZScores[i][1] == zScore) {
146 obsValue = obsValuesZScores[i][0];
150 return [obsValue, zScore];