Source code for neurokit2.stats.correlation

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats


[docs] def cor(x, y, method="pearson", show=False): """**Density estimation** Computes kernel density estimates. Parameters ----------- x : Union[list, np.array, pd.Series] Vectors of values. y : Union[list, np.array, pd.Series] Vectors of values. method : str Correlation method. Can be one of ``"pearson"``, ``"spearman"``, ``"kendall"``. show : bool Draw a scatterplot with a regression line. Returns ------- r The correlation coefficient. Examples -------- .. ipython:: python import neurokit2 as nk x = [1, 2, 3, 4, 5] y = [3, 1, 5, 6, 6] @savefig p_cor1.png scale=100% corr = nk.cor(x, y, method="pearson", show=True) @suppress plt.close() corr """ r, p = _cor_methods(x, y, method) # pylint: disable=unused-variable if show is True: _cor_plot(x, y) return r
# ============================================================================= # Internals # ============================================================================= def _cor_methods(x, y, method="pearson"): method = method.lower() if method in ["pearson", "pears", "p", "r"]: r, p = scipy.stats.pearsonr(x, y) elif method in ["spearman", "spear", "s", "rho"]: r, p = scipy.stats.spearmanr(x, y, nan_policy="omit") elif method in ["kendall", "kend", "k", "tau"]: r, p = scipy.stats.kendalltau(x, y, nan_policy="omit") else: raise ValueError("NeuroKit error: cor(): 'method' not recognized.") return r, p def _cor_plot(x, y): # Create scatter plt.plot(x, y, "o") # Add regresion line m, b = np.polyfit(x, y, 1) plt.plot(np.array(x), m * np.array(x) + b)