mirror of
https://github.com/redoules/redoules.github.io.git
synced 2025-12-12 15:59:34 +00:00
272 lines
14 KiB
HTML
272 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||
<meta name="author" content="Guillaume Redoulès">
|
||
<link rel="icon" href="../favicon.ico">
|
||
|
||
<title>Spearman's Rank Correlation Coefficient - Mathematics</title>
|
||
|
||
<!-- JQuery -->
|
||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||
<script>
|
||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||
</script>
|
||
|
||
<!-- Bootstrap core CSS -->
|
||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||
<!-- Custom styles for this template -->
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||
|
||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||
<!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
|
||
|
||
<meta name="tags" content="Statistics" />
|
||
|
||
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<div class="navbar navbar-fixed-top">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||
</div>
|
||
<div class="navbar-collapse collapse" id="searchbar">
|
||
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="..#Blog">Blog</a></li>
|
||
<li><a href="..#Python">Python</a></li>
|
||
<li><a href="..#Bash">Bash</a></li>
|
||
<li><a href="..#SQL">SQL</a></li>
|
||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||
<li><a href="..#Projects">Projects</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||
<ul class="dropdown-menu">
|
||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||
</ul>
|
||
</li>
|
||
|
||
<!--<li class="dropdown">
|
||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||
</li>-->
|
||
|
||
|
||
</ul>
|
||
|
||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||
<div class="form-group" style="display:inline;">
|
||
<div class="input-group" style="display:table;">
|
||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
</div>
|
||
<!--/.nav-collapse -->
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<!-- end of header section -->
|
||
<div class="container">
|
||
<!-- <div class="alert alert-warning" role="alert">
|
||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||
</div> -->
|
||
<section id="content" class="body">
|
||
<header>
|
||
<h1>
|
||
Spearman's Rank Correlation Coefficient
|
||
</h1>
|
||
<ol class="breadcrumb">
|
||
<li>
|
||
<time class="published" datetime="2018-11-14T22:09:00+01:00">
|
||
14 novembre 2018
|
||
</time>
|
||
</li>
|
||
<li>Mathematics</li>
|
||
<li>Statistics</li>
|
||
</ol>
|
||
</header>
|
||
<div class='article_content'>
|
||
<p>A rank correlation is any of several statistics that measure an ordinal association—the relationship between rankings of different ordinal variables or different rankings of the same variable, where a "ranking" is the assignment of the ordering labels "first", "second", "third", etc. to different observations of a particular variable. A rank correlation coefficient measures the degree of similarity between two rankings, and can be used to assess the significance of the relation between them. </p>
|
||
<p>We have two random variables <span class="math">\(X\)</span> and <span class="math">\(Y\)</span>:
|
||
* <span class="math">\(X=\{x_i, x_2, x_3, ..., x_n\}\)</span>
|
||
* <span class="math">\(Y=\{y_i, y_2, y_3, ..., y_n\}\)</span></p>
|
||
<p>if <span class="math">\(Rank_X\)</span> and <span class="math">\(Rank_Y\)</span> denote the respective ranks of each data point, then the Spearman's rank correlation coefficient, <span class="math">\(r_s\)</span>, is the Pearson correlation coefficient of <span class="math">\(Rank_X\)</span> and <span class="math">\(Rank_Y\)</span>.</p>
|
||
<h2>What does it means?</h2>
|
||
<p>The Spearman's rank correlation coefficientis is a nonparametric measure of rank correlation (statistical dependence between the rankings of two variables). It assesses how well the relationship between two variables can be described using a monotonic function.
|
||
The Spearman correlation between two variables is equal to the Pearson correlation between the rank values of those two variables; while Pearson's correlation assesses linear relationships, Spearman's correlation assesses monotonic relationships (whether linear or not). If there are no repeated data values, a perfect Spearman correlation of +1 or −1 occurs when each of the variables is a perfect monotone function of the other. </p>
|
||
<p><img alt="Spearman" src="../images/spearman/Spearman_fig1.svg"></p>
|
||
<p>A Spearman correlation of 1 results when the two variables being compared are monotonically related, even if their relationship is not linear. This means that all data-points with greater x-values than that of a given data-point will have greater y-values as well. In contrast, this does not give a perfect Pearson correlation.</p>
|
||
<h2>Example</h2>
|
||
<ul>
|
||
<li><span class="math">\(X=\{0.2, 1.3, 0.2, 1.1, 1.4, 1.5\}\)</span></li>
|
||
<li><span class="math">\(Y=\{1.9, 2.2, 3.1, 1.2, 2.2, 2.2\}\)</span></li>
|
||
</ul>
|
||
<div class="math">$$
|
||
Rank_X
|
||
\quad
|
||
\begin{bmatrix}
|
||
X: & 0.2 & 1.3 & 0.2 & 1.1 & 1.4 & 1.5 \\
|
||
Rank: & 1 & 3 & 1 & 2 & 4 & 5
|
||
\end{bmatrix}
|
||
\quad
|
||
$$</div>
|
||
<p>so, <span class="math">\(Rank_X = \{1, 3, 1, 2, 4, 5\}\)</span></p>
|
||
<p>similarly, <span class="math">\(Rank_Y=\{2,3,4,1,3,3\}\)</span></p>
|
||
<p><span class="math">\(r_s\)</span> equals the Pearson correlation coefficient of <span class="math">\(Rank_X\)</span> and <span class="math">\(Rank_Y\)</span>, meaning that <span class="math">\(r=0.158114\)</span></p>
|
||
<h2>Special case : <span class="math">\(X\)</span> and <span class="math">\(Y\)</span> don't contain duplicates</h2>
|
||
<div class="math">$$r_s=1-\frac{6\sum d_i^2}{n(n^2-1)}$$</div>
|
||
<p>Where, <span class="math">\(d_i\)</span> is the difference between the respective values of <span class="math">\(Rank_X\)</span> and <span class="math">\(Rank_Y\)</span>.</p>
|
||
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
|
||
var align = "center",
|
||
indent = "0em",
|
||
linebreak = "false";
|
||
|
||
if (false) {
|
||
align = (screen.width < 768) ? "left" : align;
|
||
indent = (screen.width < 768) ? "0em" : indent;
|
||
linebreak = (screen.width < 768) ? 'true' : linebreak;
|
||
}
|
||
|
||
var mathjaxscript = document.createElement('script');
|
||
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
|
||
mathjaxscript.type = 'text/javascript';
|
||
mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';
|
||
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
|
||
"MathJax.Hub.Config({" +
|
||
" config: ['MMLorHTML.js']," +
|
||
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
|
||
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
|
||
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
|
||
" displayAlign: '"+ align +"'," +
|
||
" displayIndent: '"+ indent +"'," +
|
||
" showMathMenu: true," +
|
||
" messageStyle: 'normal'," +
|
||
" tex2jax: { " +
|
||
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
|
||
" displayMath: [ ['$$','$$'] ]," +
|
||
" processEscapes: true," +
|
||
" preview: 'TeX'," +
|
||
" }, " +
|
||
" 'HTML-CSS': { " +
|
||
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
|
||
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
|
||
" }, " +
|
||
"}); " +
|
||
"if ('default' !== 'default') {" +
|
||
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
|
||
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
|
||
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
|
||
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
|
||
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
|
||
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
|
||
"});" +
|
||
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
|
||
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
|
||
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
|
||
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
|
||
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
|
||
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
|
||
"});" +
|
||
"}";
|
||
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
|
||
}</script>
|
||
</div>
|
||
<aside>
|
||
<div class="bug-reporting__panel">
|
||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||
</div>
|
||
</aside>
|
||
</section>
|
||
|
||
</div>
|
||
<!-- start of footer section -->
|
||
<footer class="footer">
|
||
<div class="container">
|
||
<p class="text-muted">
|
||
<center>This project contains 115 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||
<br/>
|
||
Copyright © Guillaume Redoulès,
|
||
<time datetime="2018">2018</time>.
|
||
</center>
|
||
</p>
|
||
</div>
|
||
</footer>
|
||
|
||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||
<script>
|
||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||
</script>
|
||
|
||
|
||
<!-- Load Google Analytics -->
|
||
<script>
|
||
/*
|
||
(function(i, s, o, g, r, a, m) {
|
||
i['GoogleAnalyticsObject'] = r;
|
||
i[r] = i[r] || function() {
|
||
(i[r].q = i[r].q || []).push(arguments)
|
||
}, i[r].l = 1 * new Date();
|
||
a = s.createElement(o),
|
||
m = s.getElementsByTagName(o)[0];
|
||
a.async = 1;
|
||
a.src = g;
|
||
m.parentNode.insertBefore(a, m)
|
||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||
|
||
ga('create', 'UA-66582-32', 'auto');
|
||
ga('send', 'pageview');
|
||
*/
|
||
</script>
|
||
<!-- End of Google Analytics -->
|
||
|
||
<!-- Bootstrap core JavaScript
|
||
================================================== -->
|
||
<!-- Placed at the end of the document so the pages load faster -->
|
||
<script src="../theme/js/bootstrap.min.js"></script>
|
||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||
|
||
|
||
</body>
|
||
|
||
</html> |