GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Baseball::Sabermetrics(3) User Contributed Perl Documentation Baseball::Sabermetrics(3)

Baseball::Sabermetrics - A Baseball Statistics Module

Baseball::Sabermetrics provides an easy interface for calculating baseball statistics, given a data importer. In this package, I've written CPBL.pm for (Chinese Professional Baseball League, <http://www.cpbl.com.tw>).

  use Baseball::Sabermetrics;
  use Baseball::Sabermetrics::CPBL;

  my $league = Baseball::Sabermetrics->new(league => 'CPBL');

  # Actually these are predefined.
  # Those data with 'p_' or '_allowed' here are for seperating pitchers
  # and batters.

  $league->define(
      rc => 'ab * obp',
      babip => '(h_allowed - hr_allowed) / (p_pa - h_allowed - p_so - p_bb - hr_allowed',
      # what started with '$' will be reserved.
      # Players have team and league predefined, and team has league.
      formula1 => 'hr / $_->team->hr';
      formula2 => 'hr / $_->league->hr';
      complex => sub {
            print "You can write a sub directly\n";
            $_->slg - $_->ba;
      },
      ...
  );

  # Some formulas can be applied to players, teams, and league, depend on what
  # columns are used in the formula.  For example, ab and obp are defined for
  # players, teams, and league, so that rc is available for all of them.

  # top 5 obp of teams
  $_->print qw/ team name ba obp slg isop / for $league->top('teams', 5, 'obp');

  # top 10 obp of players
  $_->print qw/ team name ba obp slg isop / for $league->top('players', 10, 'obp');

  # show a player's information
  $league->players('Chien-Ming Wang')->print qw/ win lose ip so bb whip go_ao /;
  $league->teams('Yankees')->players('Chien-Ming Wang')->print qw/ win lose ip so bb whip go_ao /;

  # show team statistics data (accumulated from players')
  $league->{Yankees}->print qw/ win lose ip so bb whip go_ao /;

  # give a brief report for pitchers/batters of the team
  $league->{Yankees}->report_pitchers qw/ name ip p_so p_bb whip go_ab /;
  $league->{Yankees}->report_batters  qw/ name ba obp slg isop /;

  $league->report_teams qw/ name win lose era obp /;

  # show all available formula
  print join ' ', $league->formula_list;

Baseball::Sabermetrics is aimed for providing a base class of your interested teams (a league, for example). You'll need to provide a data retriever to pull data out. The following example shows how you have to fill data into this structure.

 $league = {
    teams => {
        Yankees => {
            players => {
                "Chien-Ming Wang" => {
                    bio => {
                        bats => 'right', # coule be left, switch
                        throws => 'right',
                    },
                    ip => 57.33333333333,
                    game => 9,
                       ...
                    fielding => {
                        p => {
                            tc => 43,
                            pop => 4,
                            ...
                        },
                        # b1 => { }, b2 => { }, b3 => { },
                        # first, second and thrid baseman should be
                        # b1, b2, and b3 respectively for convenient in
                        # fielding context.  Because the initial of the
                        # name of subroutine can't be a number in perl.
                    },
                };
                ...
            }
        },
        Athletics => {
            ...
        },
    },
 };

Available terms of players (including teams and league, which are accumulated from players and could be treated as an abstract player) are:

    # pitching
    p_game win lose tie gs sv bs hld cg sho ip p_pa np h_allowed
    hr_allowed sh_allowed sf_allowed p_bb p_ibb hb p_so wp bk ra er

    # batting
    pa ab rbi r h 1b 2b 3b hr tb dp sh sf ibb bb hbp so sb cs
    tc po a e f_dp ppo tp pb c_cs c_sb

    # fielding
    pos fgame tc po a e f_dp tp pb c_cs c_sb

And there are additional terms for team:

    game win lose tie

new([%hash])
Create sabermetric data set of a group of teams. The following keys are supported:

league: a string like 'CPBL', which is a module and has to be defined in Baseball::Sabermetrics::League::CPBL.

data: If your league is not exists there, you can feed in a structure mentioned above.

Accumulate: If $hash{Accumulate} is false, players data will not be accumulated to their teams and the league (and therefore team-wise and league-wise statistics are not allowed). Default is to accumulate stats.

players([$name])
    for ($league->players) { ... }
    # or specify the name for the player
    print $league->players('Someone')->obp;
    
teams([$name])
    for ($league->teams) { ... }
    # or specify the name for the team
    print $league->teams('Someone')->win;
    
pitchers
Return all pitchers, i.e., NP (Number of Pitches) > 0.
batters
Return all batters, i.e., PA (Plate Appearances) > 0.

Victor Hsieh, "<victor at cpan.org>"

Please report any bugs or feature requests to "bug-sabermetrics at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=BaseBall-Sabermetrics>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

You can find documentation for this module with the perldoc command.

    perldoc Baseball::Sabermetrics

You can also look for information at:

  • AnnoCPAN: Annotated CPAN documentation

    <http://annocpan.org/dist/Baseball-Sabermetrics>

  • CPAN Ratings

    <http://cpanratings.perl.org/d/Baseball-Sabermetrics>

  • RT: CPAN's request tracker

    <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Baseball-Sabermetrics>

  • Search CPAN

    <http://search.cpan.org/dist/Baseball-Sabermetrics>

Copyright 2006 Victor Hsieh, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

2006-09-06 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.