Author: tlinnet
Date: Mon Dec 8 17:24:35 2014
New Revision: 27020
URL: http://svn.gna.org/viewcvs/relax?rev=27020&view=rev
Log:
Added two new statistics function to get the linear correlation factor from:
y = a*x
y = a*x + b
Task #7873 (https://gna.org/task/index.php?7873): Write wrapper function to
nmrglue, to read .ft2 files and process them.
Homepage: http://www.nmrglue.com/
Link to nmrglue discussion:
https://groups.google.com/forum/#!forum/nmrglue-discuss
The code is develop at Github: https://github.com/jjhelmus/nmrglue/
Google code: https://code.google.com/p/nmrglue/
Documentation: http://nmrglue.readthedocs.org/en/latest/index.html
Modified:
branches/nmrglue/lib/statistics.py
Modified: branches/nmrglue/lib/statistics.py
URL:
http://svn.gna.org/viewcvs/relax/branches/nmrglue/lib/statistics.py?rev=27020&r1=27019&r2=27020&view=diff
==============================================================================
--- branches/nmrglue/lib/statistics.py (original)
+++ branches/nmrglue/lib/statistics.py Mon Dec 8 17:24:35 2014
@@ -24,11 +24,11 @@
"""Module for calculating simple statistics."""
# Python module imports.
-from numpy import absolute, diag, dot, eye, multiply, transpose
+from numpy import absolute, diag, dot, eye, mean, multiply, sqrt, sum,
transpose
from numpy.linalg import inv, qr
# Python module imports.
-from math import exp, pi, sqrt
+from math import exp, pi
def bucket(values=None, lower=0.0, upper=200.0, inc=100, verbose=False):
@@ -160,6 +160,51 @@
return sd
+def linear_corr(x=None, y=None):
+ """Calculate the linear correlation 'a', for the function y=a*x. The
function returns "a" and the sample correlation coefficient 'r_xy'.
+
+ @keyword x: The data for the X-axis.
+ @type x: float or numpy array.
+ @keyword y: The data for the Y-axis.
+ @type y: float or numpy array.
+ @return: The correlation 'a', and sample correlation
coefficient 'r_xy'.
+ @rtype: float, float
+ """
+
+ # The correlation is.
+ a = sum(x*y) / sum(x**2)
+
+ # The sample correlation coefficient is.
+ r_xy = sum(x*y) / sqrt(sum(x**2) * sum(y**2))
+
+ return a, r_xy
+
+
+def linear_corr_intercept(x=None, y=None):
+ """Calculate the linear correlation 'a', the intercept 'b' for the
function y=a*x + b. The function returns "a", "b" and the sample
correlation coefficient 'r_xy'.
+
+ @keyword x: The data for the X-axis.
+ @type x: float or numpy array.
+ @keyword y: The data for the Y-axis.
+ @type y: float or numpy array.
+ @return: The correlation 'a', the intercept 'b', and sample
correlation coefficient 'r_xy'.
+ @rtype: float, float, float
+ """
+
+ # Get the mean.
+ x_m = mean(x)
+ y_m = mean(y)
+
+ # Solve by linear least squares
+ n = len(y)
+ a = (sum(x*y) - 1./n * sum(x) * sum(y) ) / ( sum(x**2) - 1./n *
(sum(x))**2 )
+ b = 1./n * sum(y) - a * 1./n * sum(x)
+
+ r_xy = sum( (x - x_m)*(y - y_m) ) / sqrt( sum((x - x_m)**2) * sum((y -
y_m)**2) )
+
+ return a, b, r_xy
+
+
def multifit_covar(J=None, epsrel=0.0, weights=None):
"""This is the implementation of the multifit covariance.
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
relax-commits@xxxxxxx
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits