and 1 contributors

# NAME

Statistics::TheilSen - Perl implementation of Theil Sen Estimator

Version 0.06

# SYNOPSIS

This is a perl implementation of the Theil Sen Estimator, which is a method of linear regression that uses medians. All of the gradients of the lines between all points are calculated, and hte median is the one reported. Sounds trivial. If you have 1000s of points, then you have millions of lines, and sort-based median methods can take ages, so Statistics::TheilSen uses the partition-based Statistics::QuickMedian.

``````    # OOP...

use Statistics::TheilSenEstimator;

my \$tse = Statistics::TheilSenEstimator->new(\\$y_values, \\$x_values);
# which is really a shortcut for:
my \$tse = Statistics::TheilSenEstimator->new();
\$tse->addData(\@y_values, \@x_values); # listrefs of numeric scalars

my \$status_line = \$tse->run(); # might tell if you had bad values, etc
print "y = ", \$tse->m(), "x + ", \$tse->c(); # y = mx + c

# or procedural...

use Statistics::TheilSenEstimator qw/theilsen/;

my (\$m,\$c) = theilsen(\@y_values, \@x_values);``````

# EXPORT/SUBROUTINES

## theilsen

Accepts two list refs, the lists should be the same length. They represent y and x series which will be the subject of the regression. Returns a list of two

``````    use Statistics::TheilSenEstimator qw/theilsen/;

my (\$m,\$b) = theilsen(\\$y_values, \\$x_values);``````

# METHODS

## new

``````    use Statistics::TheilSenEstimator;
my \$tse = Statistics::TheilSenEstimator->new();
#or
my \$tse = Statistics::TheilSenEstimator->new(\@y_values, \@x_values);
``````

returns a new Statistics::TheilSenEstimator estimator object with the optional data added.

``````    \$tse->addData(\@y_values, \@x_values);
``````

Adds data to the y and x series. Data series should be the same length.

## run

``    my \$status_line = \$tse->run();``

Runs the estimator on the data currently in the object. Returns any messages about whether errors or weird things were found in the data. Sets m and c in the object

## m

``````    my \$gradient = \$tse->m();
``````

Returns "m", the gradient of the model generated by run(). If run() was not called since addData(), then run() will be called here!

## c

``````    my \$intersect = \$tse->c();
``````

Returns "c", the intersect of the model generated by run(). If run() was not called since addData(), then run() will be called here!

# AUTHOR

Jimi Wills, `<jimi at webu.co.uk>`

# BUGS

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

# SUPPORT

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

``    perldoc Statistics::TheilSenEstimator``

You can also look for information at:

# ACKNOWLEDGEMENTS

http://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator

This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at: