]> git.sesse.net Git - pkanalytics/commitdiff
Make more CIs for globals.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 24 Jul 2023 21:28:55 +0000 (23:28 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 24 Jul 2023 21:28:55 +0000 (23:28 +0200)
ultimate.js

index 907023aedc09cc18cc21a6bc0a1297b11cfa6c64..04e9bad802479d3a2a44566eb937c0a3572931f3 100644 (file)
@@ -832,6 +832,7 @@ function make_table_offense(players) {
                rows.push(header);
        }
 
+       let goals = 0;
        let num_throws = 0;
        let throwaways = 0;
        let catches = 0;
@@ -868,6 +869,7 @@ function make_table_offense(players) {
                row.dataset.player = q;
                rows.push(row);
 
+               goals += p.goals;
                num_throws += p.num_throws;
                throwaways += p.throwaways;
                catches += p.catches;
@@ -886,7 +888,7 @@ function make_table_offense(players) {
 
        let row = document.createElement('tr');
        add_3cell(row, '');
-       add_3cell(row, '');
+       add_3cell(row, goals);
        add_3cell(row, '');
        add_3cell(row, '');
        add_3cell(row, num_throws);
@@ -918,6 +920,13 @@ function make_table_defense(players) {
                add_th(header, 'Soft +/-', 6);
                rows.push(header);
        }
+
+       let defenses = 0;
+       let pulls = 0;
+       let oob_pulls = 0;
+       let sum_sum_time = 0;
+       let callahans = 0;
+
        for (const [q,p] of get_sorted_players(players)) {
                if (q === 'globals') continue;
                let sum_time = 0;
@@ -948,7 +957,39 @@ function make_table_defense(players) {
                add_3cell(row, '-' + p.defensive_soft_minus);
                row.dataset.player = q;
                rows.push(row);
+
+               defenses += p.defenses;
+               pulls += p.pulls;
+               oob_pulls += p.oob_pulls;
+               sum_sum_time += sum_time;
+               callahans += p.callahans;
        }
+
+       // Globals.
+       let ci_oob = make_binomial_ci(oob_pulls, pulls, z);
+       ci_oob.format = 'percentage';
+       ci_oob.desired = 0.2;  // Arbitrary.
+       ci_oob.inverted = true;
+
+       let avg_time = 1e-3 * sum_sum_time / (pulls - oob_pulls);
+       let oob_pct = 100 * oob_pulls / pulls;
+
+       let row = document.createElement('tr');
+       add_3cell(row, '');
+       add_3cell(row, defenses);
+       add_3cell(row, pulls);
+       add_3cell(row, oob_pulls);
+       add_3cell_ci(row, ci_oob);
+       if (pulls > oob_pulls) {
+               add_3cell(row, avg_time.toFixed(1) + ' sec');
+       } else {
+               add_3cell(row, 'N/A');
+       }
+       add_3cell(row, callahans);
+       add_3cell(row, '');
+       add_3cell(row, '');
+       rows.push(row);
+
        return rows;
 }
 
@@ -1062,12 +1103,21 @@ function make_table_per_point(players) {
        let row = document.createElement('tr');
        add_3cell(row, '');
        if (globals.points_played > 0) {
-               add_3cell_with_filler_ci(row, goals == 0 ? 0 : (goals / globals.points_played).toFixed(2));
-               add_3cell_with_filler_ci(row, assists == 0 ? 0 : (assists / globals.points_played).toFixed(2));
-               add_3cell_with_filler_ci(row, hockey_assists == 0 ? 0 : (hockey_assists / globals.points_played).toFixed(2));
-               add_3cell_with_filler_ci(row, defenses == 0 ? 0 : (defenses / globals.points_played).toFixed(2));
-               add_3cell_with_filler_ci(row, throwaways == 0 ? 0 : (throwaways / globals.points_played).toFixed(2));
-               add_3cell_with_filler_ci(row, receiver_errors == 0 ? 0 : (receiver_errors / globals.points_played).toFixed(2));
+               let ci_goals = make_binomial_ci(goals, globals.points_played, z);
+               let ci_assists = make_binomial_ci(assists, globals.points_played, z);
+               let ci_hockey_assists = make_binomial_ci(hockey_assists, globals.points_played, z);
+               ci_goals.desired = 0.5;
+               ci_assists.desired = 0.5;
+               ci_hockey_assists.desired = 0.5;
+
+               add_3cell_ci(row, ci_goals);
+               add_3cell_ci(row, ci_assists);
+               add_3cell_ci(row, ci_hockey_assists);
+
+               add_3cell_ci(row, make_poisson_ci(defenses, globals.points_played, z));
+               add_3cell_ci(row, make_poisson_ci(throwaways, globals.points_played, z, true));
+               add_3cell_ci(row, make_poisson_ci(receiver_errors, globals.points_played, z, true));
+
                add_3cell(row, touches == 0 ? 0 : (touches / globals.points_played).toFixed(2));
        } else {
                add_3cell_with_filler_ci(row, 'N/A');