-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
unknown
authored and
unknown
committed
Sep 24, 2014
1 parent
92a2210
commit 2186a2f
Showing
15 changed files
with
4,680 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Version 0.1.0: | ||
Initial Release | ||
|
||
Version 0.1.1: | ||
Corrected Small Errors and Typos | ||
|
||
Version 0.2.0: (13/01/14) | ||
|
||
Added Probability Density Functions (PDF) | ||
Added Reverse Lmoment Estimation Functions (LMOM) | ||
Added Negative Log Likelhood Function (NlogL) | ||
Included Unit Tests | ||
Implimented better version of PELWAK function | ||
Support for lists as x inputs for all CDF functions | ||
Bugfixes | ||
Now licensed under the GPLv3 | ||
|
||
VERSION 0.2.1: (15/01/14) | ||
Support for lists as F inputs for all QUA functions | ||
Added Random Number Generator (rand) for all functions | ||
Split the main lmoments.py file into several files, as the | ||
project is getting to large to maintain as one single file. | ||
|
||
VERSION 0.2.2: (23/01/14) | ||
Improved samlmu function to support any value of nmom | ||
Added Bayesian Information Criterion (BIC) function | ||
Fixed import glitch that allowed users to import container files | ||
General Bugfixes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
Metadata-Version: 1.0 | ||
Name: lmoments | ||
Version: 0.2.2 | ||
Summary: L-Moment Algorithms in Python | ||
Home-page: http://pypithon.org/pypi/lmoments/ | ||
Author: Sam Gillespie | ||
Author-email: sam.gillespie@my.jcu.edu.au | ||
License: GPLv3 License | ||
Description: """ | ||
This library was designed to use L-moments to predict optimal parameters | ||
for a number of distributions. Distributions supported in this file are | ||
listed below, with their distribution suffix: | ||
*Exponential (EXP) | ||
*Gamma (GAM) | ||
*Generalised Extreme Value (GEV) | ||
*Generalised Logistic (GLO) | ||
*Generalised Normal (GNO) | ||
*Generalised Pareto (GPA) | ||
*Gumbel (GUM) | ||
*Kappa (KAP) | ||
*Normal (NOR) | ||
*Pearson III (PE3) | ||
*Wakeby (WAK) | ||
*Weibull (WEI) | ||
|
||
The primary function in this file is the samlmu(x,nmom) function, which takes | ||
an input dataset x and input of the number of moments to produce the log | ||
moments of that dataset. | ||
|
||
For Instance, given a list "Data", if 5 l-moments are needed, the function | ||
would be called by lmoments.samlmu(Data,5) | ||
|
||
In this file contains four different functions for using each distribution. | ||
Each function can be called by the prefix FUN with the suffix DIS. | ||
|
||
*PEL: (x,nmom): | ||
Parameter Estimates. This takes the L-Moments calculated by samlmu() | ||
and predicts the parameter estimates for that function. | ||
|
||
EXAMPLE: Find Wakeby distribution that best fits dataset DATA: | ||
|
||
import lmoments | ||
para = lmoments.pelwak(lmoments.samlmu(DATA,5)) | ||
|
||
*QUA: (f,para) | ||
Quantile Estimates. This takes the parameter estimates for a | ||
distribution, and a given Quantile value to calculate the quantile for the | ||
given function. | ||
|
||
EXAMPLE: Find the Upper Quantile (75%) of the Kappa distribution that | ||
best fits dataset DATA: | ||
|
||
import lmoments | ||
para = lmoments.pelkap(lmoments.samlmu(DATA,5)) | ||
UQ = lmoments.quakap(0.75,para) | ||
|
||
*LMR: (para,nmom): | ||
L-Moment Ratios. This takes the parameter estimates for a distribution | ||
and calculates nmom L-Moment ratios. | ||
|
||
EXAMPLE: Find 4 lmoment ratios for the Gumbel distribution that | ||
best fits dataset DATA: | ||
|
||
import lmoments | ||
para = lmoments.pelgum(lmoments.samlmu(DATA,5)) | ||
LMR = lmoments.lmrgum(para,4) | ||
|
||
*CDF: (x,para): | ||
Cumulative Distribution Function. This takes the parameter estimates | ||
for a distribution and calculates the quantile for a given value x. | ||
|
||
EXAMPLE: Find the quantile of the datapoint 6.4 for the Weibull | ||
Distribution that best fits the dataset DATA: | ||
|
||
import lmoments | ||
para = lmoments.pelwei(lmoments.samlmu(DATA,5)) | ||
quantile = lmoments.cdfwei(6.4,para) | ||
|
||
|
||
*PDF: (x,para): | ||
Probability Distribution Function. This takes the parameter estimates | ||
for a distribution and calculates the p value for a given value x. | ||
|
||
EXAMPLE: Find the p-value of the datapoint 6.4 for the Weibull | ||
Distribution that best fits the dataset DATA: | ||
|
||
import lmoments | ||
para = lmoments.pelwei(lmoments.samlmu(DATA,5)) | ||
quantile = lmoments.pdfwei(6.4,para) | ||
|
||
*LMOM: (para): | ||
L-Moment Estimation from Parameters. This function takes the input | ||
parameters for a given distribution, and attempt to calculate the | ||
L-Moments that would correspond to this distribution. | ||
|
||
EXAMPLE: Estimate the L-Moments of the Weibull Distribution that has | ||
parameters (2.5,1.5,0.5) | ||
|
||
import lmoments | ||
Lmoments = lmoments.lmomwei([2.5,1.5,0.5]) | ||
|
||
#RAND: (n,para) | ||
Random Number Generator for a given function. This takes a curve fit | ||
and returns a list of random numbers generated from that distribution | ||
|
||
EXAMPLE: Generate 10 numbers from the weibull distribution that makes | ||
up the dataset "data" | ||
|
||
import lmoments | ||
weibullfit = lmoments.pelwei(lmoments.samlmu(data)) | ||
randnums = lmoments.randwei(10,weibullfit) | ||
|
||
*NlogL: (data,dist,peldist): | ||
Calculates the Negative Log Likelihood for use in AIC/AICc/BIC calculations. | ||
Provide data, and distribution to calculate NlogL. Can also provide curve | ||
fitting parameters, but if they aren't provided, then the function will | ||
generate them via pelxxx(samlmu(data)). To specify the distribution, use the | ||
three letters typically assigned. | ||
|
||
EXAMPLE: Calculate the Negative Log Likelihood of a Gamma distribution | ||
fitted to Data. | ||
|
||
import lmoments | ||
NLL = lmoments.NlogL(data,"GAM") | ||
|
||
EXAMPLE: Calculate the Negative Log Likelihood of a Gamma distribution | ||
with parameters [2.5,1.0] when fitted to Data. | ||
|
||
import lmoments | ||
NLL = lmoments.NlogL(data,"GAM",[2.5,1.0]) | ||
|
||
*AIC: (data,dist,*distfit): | ||
Calculate the Akaike Information Criterion (AIC) using the chosen dataset | ||
and distribution | ||
|
||
EXAMPLE: Calculate the Akaike Information Criterion for the weibull | ||
distribution using the input dataset data: | ||
|
||
import lmoments | ||
Akaike = AIC(data,"WEI") | ||
|
||
|
||
*BIC: (data,dist,*distfit): | ||
Calculate the Bayesian Information Criterion (AIC) using the chosen dataset | ||
and distribution | ||
|
||
EXAMPLE: Calculate the Bayesian Information Criterion for the weibull | ||
distribution using the input dataset data: | ||
|
||
import lmoments | ||
Akaike = AIC(data,"WEI") | ||
|
||
This file contains a Python implimentation of the lmoments.f library created by | ||
J. R. M. HOSKING. | ||
|
||
The base Fortran code is copyright of the IBM Corperation, and the licensing | ||
information is shown below: | ||
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
IBM software disclaimer | ||
|
||
LMOMENTS: Fortran routines for use with the method of L-moments | ||
Permission to use, copy, modify and distribute this software for any purpose | ||
and without fee is hereby granted, provided that this copyright and permission | ||
notice appear on all copies of the software. The name of the IBM Corporation | ||
may not be used in any advertising or publicity pertaining to the use of the | ||
software. IBM makes no warranty or representations about the suitability of the | ||
software for any purpose. It is provided "AS IS" without any express or implied | ||
warranty, including the implied warranties of merchantability, fitness for a | ||
particular purpose and non-infringement. IBM shall not be liable for any direct, | ||
indirect, _special or consequential damages resulting from the loss of use, | ||
data or projects, whether in an action of contract or tort, arising out of or | ||
in connection with the use or performance of this software. | ||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
|
||
Additional code from the R library "lmomco" has been converted into Python. | ||
This library was developed by WILLIAM ASQUITH, and was released under the GPL-3 | ||
License. Copyright (C) 2012 WILLIAM ASQUITH | ||
|
||
The Python translation was conducted by: | ||
Sam Gillespie | ||
Numerical Analyst | ||
C&R Consulting | ||
Townsville Australia | ||
September 2013 | ||
|
||
For more information, or to report bugs, contact: | ||
sam.gillespie@my.jcu.edu.au | ||
|
||
Licensing for Python Translation: | ||
#################################################### | ||
Copyright (C) 2014 Sam Gillespie | ||
|
||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
|
||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>.Version 0.1.0: | ||
#################################################### | ||
|
||
Initial Release | ||
|
||
Version 0.1.1: | ||
Corrected Small Errors and Typos | ||
|
||
Version 0.2.0: | ||
Added Probability Density Functions (PDF) | ||
Added Reverse Lmoment Estimation Functions (LMOM) | ||
Added Negative Log Likelhood Function (NlogL) | ||
Included Unit Tests | ||
Implimented better version of PELWAK function | ||
Support for lists as x inputs for all CDF functions | ||
Bugfixes | ||
Now licensed under the GPLv3 | ||
|
||
VERSION 0.2.1: | ||
Support for lists as F inputs for all QUA functions | ||
Added Random Number Generator (rand) for all functions | ||
Split the main lmoments.py file into several files, as the | ||
project is getting to large to maintain as one single file. | ||
|
||
|
||
VERSION 0.2.2: | ||
Improved samlmu function to support any value of nmom | ||
Added Bayesian Information Criterion (BIC) function | ||
Fixed import glitch that allowed users to import container files | ||
General Bugfixes | ||
|
||
""" | ||
Platform: UNKNOWN |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from lmoments import * |
Oops, something went wrong.