"""
Module containing simple standard statistics functions
"""
import numpy as np
from scipy.stats.stats import pearsonr
[docs]def bias(ref,obs):
"""calculates the bias between two arrays
Parameters
----------
ref : list
Reference list
obs : list
Comparison list (e.g. Observations)
Returns
-------
bias : float
Bias from the two lists.
"""
return np.mean(obs-ref)
[docs]def rmse(model,obs):
"""Calculates the Root Mean Square Error
Parameters
----------
model : list
List containing model values
obs : list
List containing observations (reference)
Returns
-------
rmse : float
Root mean square error
"""
N = np.count_nonzero(~np.isnan(obs))
RMSE = np.sqrt(np.nansum((model-obs)**2)/(N-1))
return RMSE
[docs]def variance(obs):
"""Calculates the variance for a list
Parameters
----------
obs : list
list of values (eg. observations)
Returns
-------
var : float
variance of input list
"""
return np.var(obs, ddof=1) # ddof = 1 > denominator=n-1
[docs]def std(obs):
"""Calculates the standard deviation
Parameters
----------
obs : list
List with values (eg. observations)
Returns
-------
std : float
Standard deviation of input list
"""
return np.sqrt(variance(obs))
[docs]def correlation(x,y):
"""Calculates the pearson correlation coefficient
Parameters
----------
x : list
List of values
y : list
List of values
Returns
-------
R : float
Pearson correlation coefficient for input lists
"""
return pearsonr(x,y)