import numpy as np
# Spearman ranking correlation coefficient rs
[docs]def spearman(R, Q):
"""
Calculate Spearman rank correlation coefficient between two vectors
Parameters
-----------
R : ndarray
First vector containing values
Q : ndarray
Second vector containing values
Returns
--------
float
Value of correlation coefficient between two vectors
Examples
----------
>>> rS = spearman(R, Q)
"""
N = len(R)
denominator = N*(N**2-1)
numerator = 6*sum((R-Q)**2)
rS = 1-(numerator/denominator)
return rS
# weighted Spearman ranking correlation coefficient rw
[docs]def weighted_spearman(R, Q):
"""
Calculate Weighted Spearman rank correlation coefficient between two vectors
Parameters
-----------
R : ndarray
First vector containing values
Q : ndarray
Second vector containing values
Returns
--------
float
Value of correlation coefficient between two vectors
Examples
---------
>>> rW = weighted_spearman(R, Q)
"""
N = len(R)
denominator = N**4 + N**3 - N**2 - N
numerator = 6 * sum((R - Q)**2 * ((N - R + 1) + (N - Q + 1)))
rW = 1 - (numerator / denominator)
return rW
# Pearson coefficient
[docs]def pearson_coeff(R, Q):
"""
Calculate Pearson correlation coefficient between two vectors
Parameters
-----------
R : ndarray
First vector containing values
Q : ndarray
Second vector containing values
Returns
--------
float
Value of correlation coefficient between two vectors
Examples
----------
>>> corr = pearson_coeff(R, Q)
"""
numerator = np.sum((R - np.mean(R)) * (Q - np.mean(Q)))
denominator = np.sqrt(np.sum((R - np.mean(R))**2) * np.sum((Q - np.mean(Q))**2))
corr = numerator / denominator
return corr