From: Steinar H. Gunderson Date: Mon, 24 Jul 2023 21:28:55 +0000 (+0200) Subject: Make more CIs for globals. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ec69f2a6b3a2da85c0345ef983afe2a04fb94efc;p=pkanalytics Make more CIs for globals. --- diff --git a/ultimate.js b/ultimate.js index 907023a..04e9bad 100644 --- a/ultimate.js +++ b/ultimate.js @@ -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');