{"id":6178,"date":"2026-04-09T02:23:07","date_gmt":"2026-04-09T07:23:07","guid":{"rendered":"https:\/\/ykim.synology.me\/wordpress\/?p=6178"},"modified":"2026-04-09T15:51:46","modified_gmt":"2026-04-09T20:51:46","slug":"lins-concordance-correlation-coefficient-ccc-in-ai-ml","status":"publish","type":"post","link":"https:\/\/ykim.synology.me\/wordpress\/lins-concordance-correlation-coefficient-ccc-in-ai-ml-6178\/","title":{"rendered":"Lin&#8217;s Concordance Correlation Coefficient (CCC) in AI\/ML"},"content":{"rendered":"<style>.kadence-column6178_a67679-21 > .kt-inside-inner-col{display:flex;}.kadence-column6178_a67679-21{max-width:900px;margin-left:auto;margin-right:auto;}.wp-block-kadence-column.kb-section-dir-horizontal:not(.kb-section-md-dir-vertical)>.kt-inside-inner-col>.kadence-column6178_a67679-21{-webkit-flex:0 1 900px;flex:0 1 900px;max-width:unset;margin-left:unset;margin-right:unset;}.kadence-column6178_a67679-21 > .kt-inside-inner-col,.kadence-column6178_a67679-21 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_a67679-21 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_a67679-21 > .kt-inside-inner-col{flex-direction:column;align-items:flex-start;}.kadence-column6178_a67679-21 > .kt-inside-inner-col > .kb-image-is-ratio-size{align-self:stretch;}.kadence-column6178_a67679-21 > .kt-inside-inner-col > .wp-block-kadence-advancedgallery{align-self:stretch;}.kadence-column6178_a67679-21 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_a67679-21 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_a67679-21{text-align:left;}.kadence-column6178_a67679-21{position:relative;}@media all and (min-width: 1025px){.wp-block-kadence-column.kb-section-dir-horizontal>.kt-inside-inner-col>.kadence-column6178_a67679-21{-webkit-flex:0 1 900px;flex:0 1 900px;max-width:unset;margin-left:unset;margin-right:unset;}}@media all and (max-width: 1024px){.kadence-column6178_a67679-21 > .kt-inside-inner-col{flex-direction:column;justify-content:center;align-items:flex-start;}}@media all and (max-width: 767px){.wp-block-kadence-column.kb-section-sm-dir-vertical:not(.kb-section-sm-dir-horizontal):not(.kb-section-sm-dir-specificity)>.kt-inside-inner-col>.kadence-column6178_a67679-21{max-width:900px;-webkit-flex:1;flex:1;margin-left:auto;margin-right:auto;}.kadence-column6178_a67679-21 > .kt-inside-inner-col{flex-direction:column;justify-content:center;align-items:flex-start;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_a67679-21\"><div class=\"kt-inside-inner-col\"><p>\r\n    <style>\r\n    .k-page-nav { margin-bottom:20px; padding:10px 0; }\r\n    .k-page-nav a, .k-page-nav span {\r\n        display:block; padding:6px 10px; margin-bottom:6px;\r\n        background:#eee; border-radius:4px; text-decoration:none;\r\n        color:#333; font-weight:500;\r\n    }\r\n    .k-page-nav span { background:#333; color:#fff; }\r\n    <\/style>\r\n\r\n    <div class=\"k-page-nav\">\r\n                                    <span>Introduction to Lin\u2019s Concordance Correlation Coefficient (CCC) \u2014 Page 1<\/span>\r\n                                                <a href=\"https:\/\/ykim.synology.me\/wordpress\/lins-concordance-correlation-coefficient-ccc-in-ai-ml-6178\/2\/\" class=\"post-page-numbers\">                    Anatomy of Cb: Why Two Terms for Scale, One Squared Term for Location, and a Numerator of Two \u2014 Page 2                <\/a>\r\n                                                <a href=\"https:\/\/ykim.synology.me\/wordpress\/lins-concordance-correlation-coefficient-ccc-in-ai-ml-6178\/3\/\" class=\"post-page-numbers\">                    Deep Dive into the Components of Lin&#8217;s CCC: Scale Shift ($\\nu$) and Location Shift ($u$) \u2014 Page 3                <\/a>\r\n                                                <a href=\"https:\/\/ykim.synology.me\/wordpress\/lins-concordance-correlation-coefficient-ccc-in-ai-ml-6178\/4\/\" class=\"post-page-numbers\">                    The Critical Role of Normalizing Location Shift ($u$) by Data Volatility ($\\sqrt{\\sigma_x\\sigma_y}$) \u2014 Page 4                <\/a>\r\n                        <\/div>\r\n\r\n    <\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction to Lin\u2019s Concordance Correlation Coefficient (CCC)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the fields of Artificial Intelligence (AI) and Machine Learning (ML), evaluating model performance typically revolves around accuracy, precision, or error metrics. However, when the goal is to assess <strong>agreement<\/strong> between two continuous variables\u2014specifically, how well a model&#8217;s predicted values ($Y$) match the gold-standard observed values ($X$)\u2014standard correlation metrics often fall short.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Introduced by Lawrence Lin in 1989, the <strong>Concordance Correlation Coefficient (CCC)<\/strong> was designed to evaluate the degree to which pairs of observations fall on the $45^{\\circ}$ line of perfect agreement (the identity line). Unlike the Pearson correlation coefficient, which only measures linear association, <mark style=\"background-color:rgba(0, 0, 0, 0);color:#0000ff\" class=\"has-inline-color\">CCC accounts for both <strong>precision<\/strong> (how close the data points are to the best-fit line) and <strong>accuracy<\/strong> (how close that best-fit line is to the $45^{\\circ}$ line)<\/mark>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Mathematical Definition and Components<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The CCC ($\\rho_c$) is defined as the ratio of the covariance of the two variables to the average of their variances plus the square of the difference between their means.<\/p>\n\n\n<style>.kadence-column6178_9b4030-48 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_9b4030-48 > .kt-inside-inner-col,.kadence-column6178_9b4030-48 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_9b4030-48 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_9b4030-48 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_9b4030-48 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_9b4030-48 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_9b4030-48{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_9b4030-48 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_9b4030-48 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_9b4030-48\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading has-24292-e-color has-text-color\">1.1. The Basic Formula<\/h4>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">For two variables $X$ (Target) and $Y$ (Prediction):<\/p>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">$$\\rho_c = \\frac{2\\sigma_{xy}}{\\sigma_x^2 + \\sigma_y^2 + (\\mu_x &#8211; \\mu_y)^2}$$<\/p>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">Where:<\/p>\n\n\n\n<ul class=\"wp-block-list has-24292-e-color has-text-color\">\n<li>$\\mu_x, \\mu_y$: Means of $X$ and $Y$.<\/li>\n\n\n\n<li>$\\sigma_x^2, \\sigma_y^2$: Variances of $X$ and $Y$.<\/li>\n\n\n\n<li>$\\sigma_{xy}$: Covariance between $X$ and $Y$.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading has-24292-e-color has-text-color\">1.2. Decomposition into Precision and Accuracy<\/h4>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">One of the most powerful features of CCC is its decomposition into two distinct components:<\/p>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">$$\\rho_c = \\rho \\cdot C_b$$<\/p>\n\n\n\n<ol class=\"wp-block-list has-24292-e-color has-text-color\">\n<li><strong>Precision ($\\rho$):<\/strong> This is the Pearson Correlation Coefficient. It measures how well the data points cluster around a straight line (any straight line).<\/li>\n\n\n\n<li><strong>Accuracy \/ Bias Correction Factor ($C_b$):<\/strong> This indicates <mark style=\"background-color:rgba(0, 0, 0, 0);color:#0000ff\" class=\"has-inline-color\">how far the best-fit line deviates from the $45^{\\circ}$ identity line<\/mark>. It is calculated as:<br>$$C_b = \\frac{2}{\\nu + \\frac{1}{\\nu} + u^2}$$<br>where $\\nu = \\sigma_x \/ \\sigma_y$ (scale shift) and $u = (\\mu_x &#8211; \\mu_y) \/ \\sqrt{\\sigma_x \\sigma_y}$ (location shift).<\/li>\n<\/ol>\n\n\n\n<p class=\"has-24292-e-color has-text-color wp-block-paragraph\">$C_b$ ranges from 0 to 1. If $C_b = 1$, it means the regression line is exactly $Y = X$. If $C_b &lt; 1$, the model suffers from systematic bias even if the Pearson correlation is perfect ($r=1.0$).<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * 1rem);line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CCC (\u03c1c)             \u2190 &#091;-1, +1&#093;\n\u251c\u2500\u2500 Pearson r        \u2190 Precision: how tightly data follows a straight line\n\u2514\u2500\u2500 Cb (bias factor) \u2190 Accuracy: whether that line is y=x\n    \u251c\u2500\u2500 Location shift (\u03bcx \u2212 \u03bcy)\n    \u2514\u2500\u2500 Scale shift    (\u03c3x vs \u03c3y)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">CCC (\u03c1c)             \u2190 &#091;-1, +1&#093;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u251c\u2500\u2500 Pearson r        \u2190 Precision: how tightly data follows a straight line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u2514\u2500\u2500 Cb (bias factor) \u2190 Accuracy: whether that line is y=x<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    \u251c\u2500\u2500 Location shift (\u03bcx \u2212 \u03bcy)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    \u2514\u2500\u2500 Scale shift    (\u03c3x vs \u03c3y)<\/span><\/span><\/code><\/pre><\/div>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2. Interpretation of CCC Values<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The CCC value ranges from <strong>-1 to +1<\/strong>, where:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1:<\/strong> Perfect agreement.<\/li>\n\n\n\n<li><strong>0:<\/strong> No agreement (independence).<\/li>\n\n\n\n<li><strong>-1:<\/strong> Perfect &#8220;negative&#8221; agreement (rare in practice, implies systematic inversion).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">While interpretation can be context-dependent, McBride (2005) proposed the following benchmarks for assessing agreement:<\/p>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--40)\" class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">CCC Value Range<\/th><th class=\"has-text-align-left\" data-align=\"left\">Strength of Agreement<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">$&gt; 0.99$<\/td><td class=\"has-text-align-left\" data-align=\"left\">Almost Perfect<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">$0.95 &#8211; 0.99$<\/td><td class=\"has-text-align-left\" data-align=\"left\">Substantial<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">$0.90 &#8211; 0.95$<\/td><td class=\"has-text-align-left\" data-align=\"left\">Moderate<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">$&lt; 0.90$<\/td><td class=\"has-text-align-left\" data-align=\"left\">Poor<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In ML tasks like medical imaging quantification or sensor calibration, values below 0.90 are usually considered unacceptable because they indicate significant systematic errors or high variance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Comparison with Other Metrics<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To understand why CCC is preferred for agreement studies, we must contrast it with common AI\/ML evaluation metrics.<\/p>\n\n\n<style>.kadence-column6178_35ac88-82 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_35ac88-82 > .kt-inside-inner-col,.kadence-column6178_35ac88-82 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_35ac88-82 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_35ac88-82 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_35ac88-82 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_35ac88-82 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_35ac88-82{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_35ac88-82 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_35ac88-82 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_35ac88-82\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">3.1. CCC vs. Pearson Correlation ($r$)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Pearson\u2019s $r$ measures the <strong>linearity<\/strong> of the relationship.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Limitation of $r$:<\/strong> If a model consistently predicts $Y = 2X + 10$, the Pearson $r$ will be a perfect <strong>1.0<\/strong>, because the relationship is perfectly linear. However, the agreement is terrible because the values are completely different from the targets.<\/li>\n\n\n\n<li><strong>CCC Advantage:<\/strong> CCC would penalize this model heavily because the points do not lie on the $Y = X$ line.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3.2. CCC vs. Coefficient of Determination ($R^2$)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">$R^2$ measures the proportion of variance in the dependent variable explained by the model.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Limitation of $R^2$:<\/strong> In regression, $R^2$ depends on the range of the data. If the data range is small, $R^2$ can be low even if the model is accurate. Furthermore, $R^2$ does not distinguish between systematic bias and random noise.<\/li>\n\n\n\n<li><strong>CCC Advantage:<\/strong> CCC explicitly breaks down the error into precision and accuracy, offering more diagnostic insight into <em>why<\/em> a model is failing.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3.3. CCC vs. RMSE (Root Mean Square Error)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">RMSE is the standard &#8220;loss&#8221; metric for regression.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Difference:<\/strong> RMSE provides an absolute measure of error in the same units as the target. While useful, it doesn&#8217;t tell you if the error is due to a scale shift (e.g., the model always predicts 10% higher) or just random noise.<\/li>\n\n\n\n<li><strong>CCC Advantage:<\/strong> CCC is dimensionless (normalized between -1 and 1), allowing for comparison across different datasets or units, while still capturing the same &#8220;distance-from-identity&#8221; information that RMSE implies.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">4. Application of CCC in AI and Machine Learning<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In modern AI research, CCC has moved beyond simple statistics into specialized domains.<\/p>\n\n\n<style>.kadence-column6178_61b31b-9c > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_61b31b-9c > .kt-inside-inner-col,.kadence-column6178_61b31b-9c > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_61b31b-9c > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_61b31b-9c > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_61b31b-9c > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_61b31b-9c > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_61b31b-9c{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_61b31b-9c > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_61b31b-9c > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_61b31b-9c\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">4.1. Affective Computing and Signal Processing<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">CCC is the <strong>standard metric<\/strong> in Emotion AI (Affective Computing). When predicting continuous emotional states like <strong>Valence<\/strong> (pleasure) and <strong>Arousal<\/strong> (excitement), researchers use CCC as the objective function.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Why?<\/strong> In emotion recognition, we don&#8217;t just want the model to follow the trend of human labels; we want the model to predict the <em>exact<\/em> intensity level.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4.2. Medical Imaging and Quantitative AI<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">When an AI model is developed to replace a human radiologist (e.g., measuring tumor volume or calcium scores), CCC is used to validate the AI against the human expert.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Clinical Validation:<\/strong> If an AI has a high Pearson $r$ but low CCC, it means the AI is consistently over- or under-estimating the pathology, which could lead to incorrect treatment dosages.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4.3. Calibration of Multi-modal Systems<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In ML systems where multiple sensors (e.g., LiDAR and Camera) estimate the same physical property, CCC is used to measure the &#8220;consensus&#8221; between sensors.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">5. Combining CCC with Bland-Altman Plots<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">While CCC provides a single summary statistic, the <strong>Bland-Altman (BA) Plot<\/strong> provides a visual diagnostic tool. Using them together is the &#8220;gold standard&#8221; for validation.<\/p>\n\n\n<style>.kadence-column6178_3b32aa-54 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_3b32aa-54 > .kt-inside-inner-col,.kadence-column6178_3b32aa-54 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_3b32aa-54 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_3b32aa-54 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_3b32aa-54 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_3b32aa-54 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_3b32aa-54{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_3b32aa-54 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_3b32aa-54 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_3b32aa-54\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">5.1. What is a Bland-Altman Plot?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A BA plot graphs the <strong>difference<\/strong> between two measurements ($Y &#8211; X$) on the Y-axis against the <strong>mean<\/strong> of the two measurements ($(X + Y) \/ 2$) on the X-axis.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.2. Advantages of the Combined Approach<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Using CCC alone is often insufficient for a peer-reviewed academic report. Combining it with BA plots offers several advantages:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Identification of Systematic Bias (Fixed Bias):<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>CCC:<\/strong> Shows a lower $C_b$ value.<\/li>\n\n\n\n<li><strong>BA Plot:<\/strong> Shows the mean difference (bias line) is significantly far from zero.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Identification of Proportional Bias:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>CCC:<\/strong> Shows a high Pearson $r$ but low $C_b$ due to scale mismatch.<\/li>\n\n\n\n<li><strong>BA Plot:<\/strong> Shows the points forming a &#8220;fan&#8221; shape or a trend line, indicating the error increases as the magnitude of the measurement increases.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Outlier Detection:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>CCC:<\/strong> Can be heavily influenced by extreme outliers.<\/li>\n\n\n\n<li><strong>BA Plot:<\/strong> Clearly visualizes which specific data points fall outside the <strong>95% Limits of Agreement (LoA)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">5.3. Example Scenario: AI Glucose Monitoring<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine an AI model predicting blood glucose from a wearable sensor.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The Problem:<\/strong> The model has a Pearson $r = 0.98$, which looks great. However, the CCC is only $0.85$.<\/li>\n\n\n\n<li><strong>The BA Plot Insight:<\/strong> The BA plot reveals that at high glucose levels (hyperglycemia), the AI consistently underestimates the value by 20mg\/dL.<\/li>\n\n\n\n<li><strong>The Result:<\/strong> Without the BA plot and CCC, a researcher might have deployed a dangerous model. The CCC flagged the &#8220;disagreement,&#8221; and the BA plot located <em>where<\/em> the model was failing (high values), allowing for targeted retraining.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">6. Conclusion for Assignment Submission<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lin&#8217;s CCC is an essential metric for any AI\/ML researcher dealing with regression or measurement validation. It transcends simple correlation by demanding both <strong>linear association<\/strong> and <strong>absolute value matching<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a high-quality academic report:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Calculate CCC<\/strong> to provide a robust summary of agreement.<\/li>\n\n\n\n<li><strong>Decompose into $r$ and $C_b$<\/strong> to diagnose if the error is due to noise (precision) or bias (accuracy).<\/li>\n\n\n\n<li><strong>Visualize with a Bland-Altman Plot<\/strong> to identify trends in errors and the clinical relevance of the disagreement.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">By integrating these tools, researchers ensure that their AI models are not just &#8220;statistically related&#8221; to the truth, but are actually &#8220;accurate replicas&#8221; of it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7. Python Codes<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>import numpy as np\nfrom scipy import stats\n\ndef concordance_correlation_coefficient(y_true, y_pred) -> dict:\n    \"\"\"\n    Lin's Concordance Correlation Coefficient (CCC)\n    \n    Returns: dict with ccc, r, Cb, bias, precision\n    \"\"\"\n    y_true = np.array(y_true)\n    y_pred = np.array(y_pred)\n    \n    n = len(y_true)\n    mu_t = np.mean(y_true)\n    mu_p = np.mean(y_pred)\n    \n    # Variance (biased)\n    var_t = np.var(y_true)\n    var_p = np.var(y_pred)\n    \n    # Covariance\n    cov = np.mean((y_true - mu_t) * (y_pred - mu_p))\n    \n    # Precision: Pearson r\n    r = cov \/ np.sqrt(var_t * var_p)\n    \n    # CCC\n    ccc = (2 * cov) \/ (var_t + var_p + (mu_t - mu_p)**2)\n    \n    # Accuracy \/ Bias Correction Factor: Cb = ccc \/ r\n    cb = ccc \/ r if r != 0 else 0\n    \n    return {\n        'ccc':   round(ccc, 4),\n        'r':     round(r,   4),\n        'Cb':    round(cb,  4),\n        'bias':  round(mu_p - mu_t, 4),\n        'var_ratio': round(np.sqrt(var_p \/ var_t), 4),\n    }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">import<\/span><span style=\"color: #24292E\"> numpy <\/span><span style=\"color: #D73A49\">as<\/span><span style=\"color: #24292E\"> np<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">from<\/span><span style=\"color: #24292E\"> scipy <\/span><span style=\"color: #D73A49\">import<\/span><span style=\"color: #24292E\"> stats<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">def<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">concordance_correlation_coefficient<\/span><span style=\"color: #24292E\">(y_true, y_pred) -&gt; <\/span><span style=\"color: #005CC5\">dict<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">    Lin&#39;s Concordance Correlation Coefficient (CCC)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">    Returns: dict with ccc, r, Cb, bias, precision<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">    &quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    y_true <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.array(y_true)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    y_pred <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.array(y_pred)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    n <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">len<\/span><span style=\"color: #24292E\">(y_true)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    mu_t <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.mean(y_true)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    mu_p <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.mean(y_pred)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\"># Variance (biased)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    var_t <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.var(y_true)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    var_p <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.var(y_pred)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\"># Covariance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    cov <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.mean((y_true <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> mu_t) <\/span><span style=\"color: #D73A49\">*<\/span><span style=\"color: #24292E\"> (y_pred <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> mu_p))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\"># Precision: Pearson r<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    r <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> cov <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> np.sqrt(var_t <\/span><span style=\"color: #D73A49\">*<\/span><span style=\"color: #24292E\"> var_p)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\"># CCC<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ccc <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">*<\/span><span style=\"color: #24292E\"> cov) <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> (var_t <\/span><span style=\"color: #D73A49\">+<\/span><span style=\"color: #24292E\"> var_p <\/span><span style=\"color: #D73A49\">+<\/span><span style=\"color: #24292E\"> (mu_t <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> mu_p)<\/span><span style=\"color: #D73A49\">**<\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\"># Accuracy \/ Bias Correction Factor: Cb = ccc \/ r<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    cb <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> ccc <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> r <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> r <\/span><span style=\"color: #D73A49\">!=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&#39;ccc&#39;<\/span><span style=\"color: #24292E\">:   <\/span><span style=\"color: #005CC5\">round<\/span><span style=\"color: #24292E\">(ccc, <\/span><span style=\"color: #005CC5\">4<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&#39;r&#39;<\/span><span style=\"color: #24292E\">:     <\/span><span style=\"color: #005CC5\">round<\/span><span style=\"color: #24292E\">(r,   <\/span><span style=\"color: #005CC5\">4<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&#39;Cb&#39;<\/span><span style=\"color: #24292E\">:    <\/span><span style=\"color: #005CC5\">round<\/span><span style=\"color: #24292E\">(cb,  <\/span><span style=\"color: #005CC5\">4<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&#39;bias&#39;<\/span><span style=\"color: #24292E\">:  <\/span><span style=\"color: #005CC5\">round<\/span><span style=\"color: #24292E\">(mu_p <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> mu_t, <\/span><span style=\"color: #005CC5\">4<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&#39;var_ratio&#39;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #005CC5\">round<\/span><span style=\"color: #24292E\">(np.sqrt(var_p <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> var_t), <\/span><span style=\"color: #005CC5\">4<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\"><a href=\"https:\/\/github.com\/ykim2718\/AIML\/tree\/main\/CCC%20(Concordance%20Correlation%20Coefficient)\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">Anatomy of Cb: Why Two Terms for Scale, One Squared Term for Location, and a Numerator of Two<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Starting Point: The CCC Denominator<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To understand the bias correction factor $C_b$, we must first inspect the denominator of Lin&#8217;s Concordance Correlation Coefficient (CCC):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = \\frac{2\\sigma_{xy}}{\\sigma_x^2 + \\sigma_y^2 + (\\mu_x &#8211; \\mu_y)^2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The denominator contains exactly three additive components: $\\sigma_x^2$, $\\sigma_y^2$, and $(\\mu_x &#8211; \\mu_y)^2$. When Lin decomposed CCC into<br>$\\rho_c = r \\times C_b$, separating the Pearson correlation $r$ (precision) from $C_b$ (accuracy), the internal structure of these three terms determined<br>the final form of $C_b$.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Deriving Cb by Normalization<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dividing both the numerator and denominator of CCC by $2\\sigma_x\\sigma_y$:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = \\frac{\\sigma_{xy} \/ (\\sigma_x\\sigma_y)}{[\\sigma_x^2 + \\sigma_y^2 + (\\mu_x &#8211; \\mu_y)^2] \\;\/\\; (2\\sigma_x\\sigma_y)}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The numerator becomes $r$. <br>The denominator becomes:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\frac{\\sigma_x^2}{2\\sigma_x\\sigma_y} + \\frac{\\sigma_y^2}{2\\sigma_x\\sigma_y} + \\frac{(\\mu_x &#8211; \\mu_y)^2}{2\\sigma_x\\sigma_y} = \\frac{v + 1\/v + u^2}{2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">where $v = \\sigma_x \/ \\sigma_y$ and $u = (\\mu_x &#8211; \\mu_y) \/ \\sqrt{\\sigma_x \\cdot \\sigma_y}$.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Therefore:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = \\frac{r}{\\;(v + 1\/v + u^2)\\;\/\\;2\\;} = r \\times \\frac{2}{v + 1\/v + u^2} = r \\times C_b$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b = \\frac{2}{v + \\frac{1}{v} + u^2}$$<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Why Scale Shift Produces Two Terms (v + 1\/v)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The CCC denominator contains two separate variance terms, $\\sigma_x^2$ and $\\sigma_y^2$, because each variable contributes its own spread independently. After normalization by $\\sigma_x\\sigma_y$, these become:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\frac{\\sigma_x^2}{\\sigma_x\\sigma_y} = \\frac{\\sigma_x}{\\sigma_y} = v, \\qquad \\frac{\\sigma_y^2}{\\sigma_x\\sigma_y} = \\frac{\\sigma_y}{\\sigma_x} = \\frac{1}{v}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This two-term structure carries three important properties:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Symmetry.<\/strong> Swapping $X$ and $Y$ sends $v \\to 1\/v$, but the sum $v + 1\/v$ remains unchanged. The metric is indifferent to which variable is labeled $X$ or $Y$.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bounded minimum via AM-GM.<\/strong> By the arithmetic-geometric mean inequality:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$v + \\frac{1}{v} \\geq 2\\sqrt{v \\cdot \\frac{1}{v}} = 2$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Equality holds if and only if $v = 1$, i.e., the two standard deviations are identical. Any departure from equal scales increases $v + 1\/v$ beyond 2, thereby reducing $C_b$.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Symmetric penalization.<\/strong> Whether $\\sigma_x$ is twice $\\sigma_y$ or $\\sigma_y$ is twice $\\sigma_x$, the penalty is the same ($v + 1\/v = 2.5$ in both cases). The two terms ensure that scale discrepancy is penalized regardless of direction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Why Location Shift Appears as a Squared Term (u\u00b2)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The location shift enters the CCC denominator as $(\\mu_x &#8211; \\mu_y)^2$, a single squared term. After normalization by $\\sigma_x\\sigma_y$, it becomes $u^2$. Three reasons explain why the square is necessary:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Algebraic origin.<\/strong> CCC is fundamentally related to the expected squared difference between $X$ and $Y$:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$E[(X &#8211; Y)^2] = \\sigma_x^2 + \\sigma_y^2 &#8211; 2\\sigma_{xy} + (\\mu_x &#8211; \\mu_y)^2$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this expansion, the mean difference inevitably appears as a squared term. This is not a design choice but a mathematical consequence of working with<br>second-moment quantities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Direction invariance.<\/strong> Whether $\\mu_x > \\mu_y$ or $\\mu_x &lt; \\mu_y$, only the magnitude of the bias should affect agreement. Squaring eliminates the sign, ensuring that a positive bias of 5 and a negative bias of 5 produce the same $C_b$ value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dimensional consistency.<\/strong> The other terms in the denominator ($\\sigma_x^2$ and $\\sigma_y^2$) have units of variance (squared units). For all three terms to be additive, the mean difference must also be squared to match this dimension.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Why the Numerator Is Exactly 2<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The numerator of $C_b$ is the constant 2. This value is not arbitrary; it is dictated by the requirement that $C_b = 1$ under perfect agreement and by the algebraic structure of CCC itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>From the normalization perspective:<\/strong> The denominator $v + 1\/v + u^2$ achieves its minimum value of 2 when $v = 1$ and $u = 0$ (perfect scale match and zero location bias). To ensure $C_b = 1$ at this minimum:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b^{\\max} = \\frac{\\text{numerator}}{2} = 1 \\quad \\Longrightarrow \\quad \\text{numerator} = 2$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Any other numerator would shift the maximum away from 1. For instance, a numerator of 1 would yield $C_b^{\\max} = 0.5$, destroying the intuitive $[0, 1]$ interpretation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>From the algebraic derivation:<\/strong> When factoring CCC as $r \\times C_b$, the numerator $2\\sigma_{xy}$ splits into $r = \\sigma_{xy}\/(\\sigma_x\\sigma_y)$ and $2\\sigma_x\\sigma_y$. Normalizing $2\\sigma_x\\sigma_y$ by $\\sigma_x\\sigma_y$ leaves exactly 2. The constant emerges naturally from the factorization rather<br>than being imposed externally.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Both perspectives converge:<\/strong> The algebraic decomposition produces a numerator of 2, and this is precisely the value needed to normalize $C_b$ into the range $(0, 1]$. This is not a coincidence. It reflects the internal consistency of CCC&#8217;s mathematical structure: the coefficient 2 in $2\\sigma_{xy}$ is the same 2 that bounds $v + 1\/v$ from below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Summary Table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>CCC Denominator Term<\/th><th>After Normalization<\/th><th>Range<\/th><th>Role in $C_b$<\/th><\/tr><\/thead><tbody><tr><td>Scale shift<\/td><td>$\\sigma_x^2 + \\sigma_y^2$ (2 terms)<\/td><td>$v + 1\/v$<\/td><td>$[2, \\infty)$<\/td><td>Penalizes unequal variability<\/td><\/tr><tr><td>Location shift<\/td><td>$(\\mu_x &#8211; \\mu_y)^2$ (1 term)<\/td><td>$u^2$<\/td><td>$[0, \\infty)$<\/td><td>Penalizes shifted center<\/td><\/tr><tr><td>Denominator total<\/td><td>All three summed<\/td><td>$v + 1\/v + u^2$<\/td><td>$[2, \\infty)$<\/td><td>Combined disagreement measure<\/td><\/tr><tr><td>Numerator<\/td><td>From $2\\sigma_{xy}$<\/td><td>$2$<\/td><td>Fixed<\/td><td>Normalizes $C_b$ to $(0, 1]$<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Under perfect agreement ($v = 1$, $u = 0$), the denominator equals 2 and $C_b = 2\/2 = 1$. As either scale or location disagreement grows, the denominator increases without bound and $C_b$ approaches zero. Every constant and every exponent in the formula traces back to a specific structural requirement:  imensional consistency, directional symmetry, bounded range, or algebraic necessity.<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">Deep Dive into the Components of Lin&#8217;s CCC: Scale Shift ($\\nu$) and Location Shift ($u$)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Mathematical Context of $C_b$<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To understand $\\nu$ and $u$, we must first look at the Accuracy or Bias Correction Factor ($C_b$), which is defined as:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b = \\frac{2}{\\nu + \\frac{1}{\\nu} + u^2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This factor measures how far the best-fit linear regression line between $X$ (Target) and $Y$ (Prediction) deviates from the $45^{\\circ}$ identity line ($Y=X$). If $C_b = 1$, the agreement is perfect in terms of accuracy. The two variables $\\nu$ and $u$ represent the two ways a model can &#8220;miss&#8221; the identity line: by being scaled incorrectly or by being shifted away from the origin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. The Scale Shift ($\\nu$): Understanding Variance Mismatch<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The variable $\\nu$ is defined as the ratio of the standard deviations (or the square root of the ratio of variances):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\nu = \\frac{\\sigma_x}{\\sigma_y}$$<\/p>\n\n\n<style>.kadence-column6178_185915-2a > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_185915-2a > .kt-inside-inner-col,.kadence-column6178_185915-2a > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_185915-2a > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_185915-2a > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_185915-2a > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_185915-2a > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_185915-2a{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_185915-2a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_185915-2a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_185915-2a\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">2.1. Why it is called &#8220;Scale Shift&#8221;<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In statistics and machine learning, the &#8220;scale&#8221; of a distribution refers to its spread or dispersion.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If $\\nu = 1$, it means $\\sigma_x = \\sigma_y$. The spread of the predictions matches the spread of the actual values.<\/li>\n\n\n\n<li>If $\\nu \\neq 1$, it indicates a <strong>Scale Shift<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2.2. Geometric Interpretation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine the data points plotted on a scatter plot with $X$ on the horizontal axis and $Y$ on the vertical axis.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>If $\\sigma_y &gt; \\sigma_x$ ($\\nu &lt; 1$):<\/strong> The model is &#8220;over-reacting.&#8221; The predictions have a wider range than the actual values. On the plot, the slope of the trend will appear steeper relative to the identity line, or the cloud of points will be stretched vertically.<\/li>\n\n\n\n<li><strong>If $\\sigma_y &lt; \\sigma_x$ ($\\nu &gt; 1$):<\/strong> The model is &#8220;under-reacting&#8221; or &#8220;conservative.&#8221; The predictions are clustered in a narrower range than the targets. This often happens in &#8220;regression to the mean,&#8221; where a model avoids predicting extreme high or low values.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2.3. Impact on Accuracy<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In the formula $C_b = 2 \/ (\\nu + 1\/\\nu + u^2)$, the term $(\\nu + 1\/\\nu)$ reaches its minimum value of <strong>2<\/strong> only when $\\nu = 1$. As $\\nu$ deviates from 1 in either direction (larger or smaller), the denominator increases, which forces $C_b$ to decrease. This mathematically represents that a mismatch in the &#8220;scale&#8221; of data inherently reduces the concordance, even if the Pearson correlation ($r$) is 1.0.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. The Location Shift ($u$): Understanding Mean Displacement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The variable $u$ is defined as<em> the difference between the means normalized by the geometric mean of the standard deviations<\/em>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$u = \\frac{\\mu_x &#8211; \\mu_y}{\\sqrt{\\sigma_x \\sigma_y}}$$<\/p>\n\n\n<style>.kadence-column6178_2799a9-4a > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_2799a9-4a > .kt-inside-inner-col,.kadence-column6178_2799a9-4a > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_2799a9-4a > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_2799a9-4a > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_2799a9-4a > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_2799a9-4a > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_2799a9-4a{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_2799a9-4a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_2799a9-4a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_2799a9-4a\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">3.1. Why it is called &#8220;Location Shift&#8221;<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The &#8220;location&#8221; of a distribution refers to its central tendency (mean).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If $u = 0$, it means $\\mu_x = \\mu_y$. The center of the prediction distribution is exactly where the center of the target distribution is.<\/li>\n\n\n\n<li>If $u \\neq 0$, it indicates a <strong>Location Shift<\/strong> (also known as a translation or intercept bias).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3.2. Geometric Interpretation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">On a scatter plot, $u$ represents a vertical or horizontal &#8220;sliding&#8221; of the entire data cloud away from the $45^{\\circ}$ line.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Positive $u$ ($\\mu_x &gt; \\mu_y$):<\/strong> The model is consistently underestimating. The entire cloud of points is shifted downward (or to the right).<\/li>\n\n\n\n<li><strong>Negative $u$ ($\\mu_x &lt; \\mu_y$):<\/strong> The model is consistently overestimating. The entire cloud of points is shifted upward (or to the left).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike $\\nu$, which affects the &#8220;tilt&#8221; or &#8220;stretch&#8221; of the data, $u$ measures the &#8220;offset.&#8221; A model could have the perfect scale ($\\nu=1$) and perfect correlation ($r=1$), but if it always adds a constant $+5$ to every prediction, $u$ will be non-zero, and $C_b$ (and thus CCC) will drop.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.3. The Role of Normalization<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#0000ff\" class=\"has-inline-color\">The denominator $\\sqrt{\\sigma_x \\sigma_y}$ in the $u$ formula is crucial. It scales the mean difference by the overall volatility of the data. This means a mean difference of 5 units is &#8220;penalized&#8221; more heavily if the standard deviation is 1 unit than if the standard deviation is 100 units. This makes $u$ a dimensionless, relative measure of location error.<\/mark><\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">4. Interaction between $\\nu$ and $u$ in AI\/ML Evaluation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In a University-level Research Report, it is vital to explain how these two components help diagnose specific machine learning failures.<\/p>\n\n\n<style>.kadence-column6178_a2747c-14 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_a2747c-14 > .kt-inside-inner-col,.kadence-column6178_a2747c-14 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_a2747c-14 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_a2747c-14 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_a2747c-14 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_a2747c-14 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_a2747c-14{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_a2747c-14 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_a2747c-14 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_a2747c-14\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">4.1. Scenario A: High $\\nu$ (Scale Error) in Sensor Data<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Consider an AI model trained to predict pressure from a sensor. If the model is not calibrated, it might predict values that are consistently 20% higher than the ground truth ($Y = 1.2X$).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Here, $\\sigma_y = 1.2\\sigma_x$, so $\\nu = 1\/1.2 = 0.83$.<\/li>\n\n\n\n<li>The Pearson $r$ will be <strong>1.0<\/strong> because the relationship is perfectly linear.<\/li>\n\n\n\n<li>However, the CCC will be lower than 1.0 specifically because of the <strong>Scale Shift<\/strong>. This tells the engineer: &#8220;The model follows the trend, but the gain\/sensitivity needs adjustment.&#8221;<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4.2. Scenario B: High $u$ (Location Error) in Real Estate AI<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Consider a model predicting house prices. If the model is accurate in its logic but fails to account for a new flat tax of \\$10,000, it will predict $Y = X + 10,000$.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Here, $\\nu = 1$ (the spread is the same), but $\\mu_y = \\mu_x + 10,000$.<\/li>\n\n\n\n<li>This results in a large <strong>Location Shift ($u$)<\/strong>.<\/li>\n\n\n\n<li>The CCC will drop, signaling a constant bias. This tells the engineer: &#8220;The model logic is sound, but there is a constant intercept error that needs to be subtracted.&#8221;<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">5. Formal Comparison for Academic Reporting<\/h3>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\" class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Feature<\/th><th class=\"has-text-align-left\" data-align=\"left\">Scale Shift ($\\nu$)<\/th><th class=\"has-text-align-left\" data-align=\"left\">Location Shift ($u$)<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Statistical Focus<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Ratio of Variances \/ Standard Deviations<\/td><td class=\"has-text-align-left\" data-align=\"left\">Difference of Means<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Physical Meaning<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Difference in sensitivity, gain, or volatility<\/td><td class=\"has-text-align-left\" data-align=\"left\">Constant bias, offset, or translation<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Geometric Effect<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Stretches or compresses the data cloud relative to the origin<\/td><td class=\"has-text-align-left\" data-align=\"left\">Slides the data cloud away from the $Y=X$ line<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>ML Debugging Step<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Re-evaluate feature scaling or weight initialization<\/td><td class=\"has-text-align-left\" data-align=\"left\">Adjust the intercept term or check for systematic bias<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Ideal Value<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">$1.0$<\/td><td class=\"has-text-align-left\" data-align=\"left\">$0$<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">6. Significance of Decomposition in CCC<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The beauty of Lin&#8217;s CCC formula lies in its ability to condense these two distinct types of error into a single metric, while still allowing them to be separated for diagnosis:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = \\underbrace{\\rho}<em>{\\text{Precision}} \\times \\underbrace{\\frac{2}{\\nu + \\frac{1}{\\nu} + u^2}}<\/em>{\\text{Accuracy ($C_b$)}}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a researcher, if you see a low CCC, you should immediately check:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Is it $\\rho$? (The model is noisy\/random).<\/li>\n\n\n\n<li>Is it $\\nu$? (The model is over\/under-scaling).<\/li>\n\n\n\n<li>Is it $u$? (The model has a constant offset).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">This tripartite decomposition makes CCC far superior to $R^2$ or RMSE for model validation and inter-rater reliability studies in advanced AI applications.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7. Extended Discussion for University Assignment<\/h3>\n\n\n<style>.kadence-column6178_32bf2a-59 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_32bf2a-59 > .kt-inside-inner-col,.kadence-column6178_32bf2a-59 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_32bf2a-59 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_32bf2a-59 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_32bf2a-59 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_32bf2a-59 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_32bf2a-59{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_32bf2a-59 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_32bf2a-59 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_32bf2a-59\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">7.1. Relationship to Total Sum of Squares<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In a standard regression context, the Mean Squared Error (MSE) can be related back to these components. The MSE is essentially the &#8220;distance&#8221; that CCC tries to normalize. While MSE gives you a raw number (e.g., &#8220;error is 50.4&#8221;), CCC tells you <em>proportionally<\/em> how much of the agreement is lost due to the lack of precision versus the lack of accuracy.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">7.2. Case Study: Affective Computing (Emotion AI)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In the AVEC (Audio\/Visual Emotion Challenge), CCC is the primary metric for continuous emotion dimensions. When predicting &#8220;Arousal&#8221; (intensity of emotion):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A high $\\nu$ suggests the model predicts emotions that are too extreme or too muted compared to human annotators.<\/li>\n\n\n\n<li>A high $u$ suggests the model perceives everyone as slightly angrier or calmer than they actually are (a &#8220;resting&#8221; bias).<br>By analyzing $\\nu$ and $u$, researchers can fine-tune their Neural Networks\u2014perhaps by adding a Batch Normalization layer to handle $\\nu$, or adjusting the final bias unit in the output layer to handle $u$.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">7.3. Final Summary for Thesis\/Report<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">When presenting these results to a professor, emphasize that <strong>$\\nu$ and $u$ are not just mathematical variables; they are diagnostic indicators.<\/strong> They allow the transition from &#8220;the model is wrong&#8221; to &#8220;the model is wrong in <em>this specific way<\/em>.&#8221; This level of granularity is what distinguishes a professional ML engineer from a practitioner who only looks at raw accuracy.<\/p>\n<\/div><\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">The Critical Role of Normalizing Location Shift ($u$) by Data Volatility ($\\sqrt{\\sigma_x\\sigma_y}$)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the formula for the Location Shift ($u$):<br>$$u = \\frac{\\mu_x &#8211; \\mu_y}{\\sqrt{\\sigma_x \\sigma_y}}$$<br>The denominator $\\sqrt{\\sigma_x \\sigma_y}$ represents the geometric mean of the standard deviations (volatility) of the two variables. This normalization is not a mathematical coincidence; it is a fundamental requirement for making the CCC a robust, scale-invariant metric in AI\/ML evaluation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Establishing a Dimensionless Metric (Scale Invariance)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The primary goal of the Concordance Correlation Coefficient is to provide a standardized score between -1 and 1.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The Problem:<\/strong> The raw mean difference $(\\mu_x &#8211; \\mu_y)$ carries the same units as the data (e.g., kilograms, volts, or stock prices). If we used the raw difference, the CCC value would change depending on whether we measured the data in grams or kilograms.<\/li>\n\n\n\n<li><strong>The Solution:<\/strong> By dividing the difference by the standard deviation (which shares the same units), we create a <strong>dimensionless number<\/strong>. This allows a researcher to compare the performance of a model across entirely different domains\u2014such as comparing an AI&#8217;s accuracy in predicting wafer thickness (micrometers) versus predicting stock prices (dollars).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Contextualizing the &#8220;Severity&#8221; of the Bias<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In AI\/ML, &#8220;bias&#8221; (mean difference) is relative. The volatility of the data determines how much a specific offset actually matters.<\/p>\n\n\n<style>.kadence-column6178_3f3926-58 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kadence-column6178_3f3926-58 > .kt-inside-inner-col,.kadence-column6178_3f3926-58 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6178_3f3926-58 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6178_3f3926-58 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6178_3f3926-58 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6178_3f3926-58 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6178_3f3926-58{position:relative;}@media all and (max-width: 1024px){.kadence-column6178_3f3926-58 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6178_3f3926-58 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6178_3f3926-58\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">2.1. High Volatility Scenario (Low Penalty)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine a model predicting the price of Bitcoin, where the price fluctuates by thousands of dollars daily ($\\sigma$ is very high).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the mean difference $(\\mu_x &#8211; \\mu_y)$ is $10, it is practically negligible compared to the massive &#8220;noise&#8221; or &#8220;volatility&#8221; of the asset.<\/li>\n\n\n\n<li>In this case, the denominator $\\sqrt{\\sigma_x \\sigma_y}$ will be large, making $u$ small. The CCC will not penalize the model heavily because the bias is &#8220;lost in the noise.&#8221;<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2.2. Low Volatility Scenario (High Penalty)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now imagine a model predicting human body temperature in a medical setting, where the range is very narrow ($\\sigma$ is very low).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A mean difference of $10$ (Celsius) would be a catastrophic failure.<\/li>\n\n\n\n<li>Because the volatility $\\sigma$ is so small, the denominator will be tiny, causing $u$ to explode to a very large value. This heavily penalizes the $C_b$ and CCC, correctly flagging that the model is performing poorly relative to the precision required for that specific data.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Mathematical Consistency with the Identity Line<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The CCC evaluates how close points are to the line $Y = X$.<br>The location shift $u$ is essentially a measurement of the <strong>Z-score<\/strong> of the difference between the centers of two distributions. If we did not account for $\\sigma$, we would treat every absolute shift the same way, regardless of whether the data points are tightly packed or widely scattered.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mathematically, this normalization ensures that the CCC remains a measure of <strong>correlation and agreement<\/strong> rather than just a measure of absolute error. It answers the question: <em>&#8220;Relative to how much this data naturally varies, how far off is the model&#8217;s average prediction?&#8221;<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Relationship to Signal-to-Noise Ratio (SNR) in Engineering<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For a professional engineer, $u$ can be viewed through the lens of <strong>Signal-to-Noise Ratio<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The &#8220;Signal&#8221; of the error is the mean displacement $(\\mu_x &#8211; \\mu_y)$.<\/li>\n\n\n\n<li>The &#8220;Noise&#8221; is the volatility $\\sqrt{\\sigma_x \\sigma_y}$.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If an AI model has a constant bias, but the data itself is extremely noisy, it is often impossible (and statistically insignificant) to correct for that bias accurately. However, if the data is clean (low noise\/volatility), even a small bias is a significant &#8220;signal&#8221; that the model is poorly calibrated. By including volatility in the denominator, the CCC automatically adjusts its sensitivity to bias based on the quality and nature of the underlying data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Summary for Academic Presentation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This logic provides a multidimensional perspective on the significance of the metric:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-palette-13-color\">Normalization<\/mark>:<\/strong> It converts a unit-based error into a standardized statistical distance.<\/li>\n\n\n\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-palette-13-color\">Relative Importance<\/mark>:<\/strong> It ensures that a bias is only considered &#8220;large&#8221; if it is significant relative to the natural spread of the data.<\/li>\n\n\n\n<li><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-palette-13-color\">Statistical Power<\/mark>:<\/strong> It aligns the metric with the likelihood that the observed difference is a systematic model failure rather than a random sampling fluke.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Without considering data volatility, $u$ would be an absolute measure of distance; with it, $u$ becomes a sophisticated measure of <strong>disagreement<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div style='text-align:center' class='yasr-auto-insert-overall'><\/div><div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to Lin\u2019s Concordance Correlation Coefficient (CCC) In the fields of Artificial Intelligence (AI) and Machine Learning (ML), evaluating model performance typically revolves around accuracy, precision, or error metrics. However, when the goal is to assess agreement between two continuous variables\u2014specifically, how well a model&#8217;s predicted values ($Y$) match the gold-standard observed values ($X$)\u2014standard correlation&#8230;<\/p>\n","protected":false},"author":4,"featured_media":6197,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","fifu_image_url":"","fifu_image_alt":"","iawp_total_views":3,"footnotes":""},"categories":[56,369],"tags":[],"class_list":["post-6178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-science-slug","category-evalutaion-metric-slug"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"jetpack_featured_media_url":"https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/Lins-Concordance-Correlation-Coefficient-CCC-600x400px.png","_links":{"self":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/comments?post=6178"}],"version-history":[{"count":21,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6178\/revisions"}],"predecessor-version":[{"id":6219,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6178\/revisions\/6219"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/6197"}],"wp:attachment":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=6178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=6178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=6178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}