Statistics.Regression

statistics-0.16.3.0: A library of statistical types, data, and functions

Copyright | 2014 Bryan O'Sullivan
License | BSD3
Safe Haskell | None
Language | Haskell2010

Statistics.Regression

Description

Functions for regression analysis.

Synopsis

- olsRegress :: [Vector] -> Vector -> (Vector, Double)
- ols :: Matrix -> Vector -> Vector
- rSquare :: Matrix -> Vector -> Vector -> Double
- bootstrapRegress :: GenIO -> Int -> CL Double -> ([Vector] -> Vector -> (Vector, Double)) -> [Vector] -> Vector -> IO (Vector (Estimate ConfInt Double), Estimate ConfInt Double)

# Documentation

olsRegress #

Arguments

:: [Vector] | Non-empty list of predictor vectors. Must all have the same length. These will become the columns of the matrix A solved by `ols`.
-> Vector | Responder vector. Must have the same length as the predictor vectors.
-> (Vector, Double) |

Perform an ordinary least-squares regression on a set of predictors, and calculate the goodness-of-fit of the regression.

The returned pair consists of:

- A vector of regression coefficients. This vector has one more element than the list of predictors; the last element is the y-intercept value.
- R², the coefficient of determination (see `rSquare` for details).

    >>> import qualified Data.Vector.Unboxed as VU
    >>> :{
     olsRegress [ VU.fromList [0,1,2,3]
                ] (VU.fromList [1000, 1001, 1002, 1003])
    :}
    ([1.0000000000000218,999.9999999999999],1.0)

ols #

Arguments

:: Matrix | A has at least as many rows as columns.
-> Vector | b has the same length as columns in A.
-> Vector |

Compute the ordinary least-squares solution to overdetermined linear system \(Ax = b\). In other words it finds

\[ \operatorname{argmin}|Ax-b|^2 \].

All columns of \(A\) must be linearly independent. It's not checked function will return nonsensical result if resulting linear system is poorly conditioned.

    >>> import qualified Data.Vector.Unboxed as VU
    >>> :{
     ols (fromColumns [ VU.fromList [0,1,2,3]
                      , VU.fromList [1,1,1,1]
                      ]) (VU.fromList [1000, 1001, 1002, 1003])
    :}
    [1.0000000000000218,999.9999999999999]

    >>> :{
     ols (fromColumns [ VU.fromList [0,1,2,3]
                      , VU.fromList [4,2,1,1]
                      , VU.fromList [1,1,1,1]
                      ]) (VU.fromList [1000, 1001, 1002, 1003])
    :}
    [1.0000000000005393,4.2290644612446807e-13,999.9999999999983]

rSquare #

Arguments

:: Matrix | Predictors (regressors).
-> Vector | Responders.
-> Vector | Regression coefficients.
-> Double |

Compute R², the coefficient of determination that indicates goodness-of-fit of a regression.

This value will be 1 if the predictors fit perfectly, dropping to 0 if they have no explanatory power.

bootstrapRegress #

Arguments

:: GenIO |
-> Int | Number of resamples to compute.
-> CL Double | Confidence level.
-> ([Vector] -> Vector -> (Vector, Double)) | Regression function.
-> [Vector] | Predictor vectors.
-> Vector | Responder vector.
-> IO (Vector (Estimate ConfInt Double), Estimate ConfInt Double) |

Bootstrap a regression function. Returns both the results of the regression and the requested confidence interval values.