用java实现皮尔逊(Pearson)相关系数计算

最近公司需要把matlab计算公式放在java上实现,本片将验证过可用的代码整理分享给各位。

package success;import java.util.List;/*** 皮尔逊相关系数*/
public class PearsonDemo {public static void main(String[] args) {test();}private static void test(){/*用于测试*/double[] x = new double[] { 38 ,13 ,27, 25, 18, 29, 30, 20, 23, 32, 38, 28, 34, 19, 20, 25, 16, 36, 25, 17, 24, 18, 30, 35, 22, 34, 12, 26, 29, 21};//double[] y = new double[] { 49 ,42, 45, 39, 30, 25, 39, 36, 39 ,45, 42, 50, 36, 48, 35, 42, 45, 29, 33, 27, 42, 43, 27, 39, 37, 36, 47, 37, 44, 34};double[] y = new double[] {114, 49, 84, 79, 87, 74, 77, 82, 80, 88, 123, 82, 98, 65, 61, 78, 51, 121, 78, 50, 75, 65, 113, 122, 78, 119, 45, 89, 102, 75};double score = getPearsonCorrelationScore(x, y);System.out.println(score);//0.6350393282549671}public static double getPearsonCorrelationScore(List<Double> x, List<Double> y) {if (x.size() != y.size())throw new RuntimeException("数据不正确!");double[] xData = new double[x.size()];double[] yData = new double[x.size()];for (int i = 0; i < x.size(); i++) {xData[i] = x.get(i);yData[i] = y.get(i);}return getPearsonCorrelationScore(xData,yData);}public static double getPearsonCorrelationScore(double[] xData, double[] yData) {if (xData.length != yData.length)throw new RuntimeException("数据不正确!");double xMeans;double yMeans;double numerator = 0;// 求解皮尔逊的分子double denominator = 0;// 求解皮尔逊系数的分母double result = 0;// 拿到两个数据的平均值xMeans = getMeans(xData);yMeans = getMeans(yData);// 计算皮尔逊系数的分子numerator = generateNumerator(xData, xMeans, yData, yMeans);// 计算皮尔逊系数的分母denominator = generateDenomiator(xData, xMeans, yData, yMeans);// 计算皮尔逊系数result = numerator / denominator;return result;}/*** 计算分子** @param xData* @param xMeans* @param yData* @param yMeans* @return*/private static double generateNumerator(double[] xData, double xMeans, double[] yData, double yMeans) {double numerator = 0.0;for (int i = 0; i < xData.length; i++) {numerator += (xData[i] - xMeans) * (yData[i] - yMeans);}return numerator;}/*** 生成分母** @param yMeans* @param yData* @param xMeans* @param xData* @return 分母*/private static double generateDenomiator(double[] xData, double xMeans, double[] yData, double yMeans) {double xSum = 0.0;for (int i = 0; i < xData.length; i++) {xSum += (xData[i] - xMeans) * (xData[i] - xMeans);}double ySum = 0.0;for (int i = 0; i < yData.length; i++) {ySum += (yData[i] - yMeans) * (yData[i] - yMeans);}return Math.sqrt(xSum) * Math.sqrt(ySum);}/*** 根据给定的数据集进行平均值计算** @param* @return 给定数据集的平均值*/private static double getMeans(double[] datas) {double sum = 0.0;for (int i = 0; i < datas.length; i++) {sum += datas[i];}return sum / datas.length;}
}

用java实现皮尔逊相关系数计算相关推荐

  1. java实现皮尔逊相关系数

    皮尔逊相关系数的定义为两个变量之间的协方差和标准差的商 公式如下: 上式定义了总体相关系数,常用希腊小写字母  

  2. 皮尔逊相关系数的计算(python代码版)

    皮尔逊相关系数的计算(python代码版) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 fro ...

  3. 相似度计算(2)——皮尔逊相关系数

    皮尔逊相关系数 一.定义   皮尔逊相关系数( Pearson correlation coefficient,PC),又称皮尔逊积矩相关系数(Pearson product-moment corre ...

  4. 计算相关系数 皮尔逊相关系数 Pearson、Spearman

    数据探索 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析. 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系 ...

  5. python怎么计算相关系数_Python三种方法计算皮尔逊相关系数

    1.皮尔逊相关系数在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlat ...

  6. js计算皮尔逊相关系数

    没找到网上有什么现成的,所以就自己写了个,挺简单的,记录一下. /*** 计算皮尔逊相关系数* @list1:数字列表1* @list2:数字列表2* @return number * */ func ...

  7. Python计算皮尔逊相关系数

    ** Python计算皮尔逊相关系数 ** 皮尔逊相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1].相关系数的绝对值越大,则表明X与Y相关度越高.当X与Y线性相关时,相 ...

  8. pandas计算皮尔逊相关系数

    前置说明: 本文中使用的数据在文末提供下载,本文使用IH和IC主力合约的数据为例 目录 1. 概念 2. 计算过程 1. 概念 皮尔逊(pearson)相关系数:用于判断数据是否线性相关的方法 皮尔逊 ...

  9. 皮尔逊相关系数的java实现

    皮尔逊相关系数的java实现  2014-08-06 17:01:32 分类: Java 相关系数的值介于–1与+1之间,即–1≤r≤+1.其性质如下: 当r>0时,表示两变量正相关,r< ...

  10. 推荐系统(2)--计算皮尔逊相关系数

    计算皮尔逊相关系数 代码如下: #-*- coding:utf-8 -*- '''皮尔逊相关系数 ''' import json import numpy as np# 计算user1 和 user2 ...

最新文章

  1. Windows与Linux区别3
  2. Centos下 ffmpeg 和opencv一起配合处理视频
  3. 【Java】6.2 处理对象
  4. 分享一些书籍,方方面面,很多值得一读
  5. c语言插入排序_还有这种操作?C语言插入排序算法,一点就透
  6. 她偏爱雏菊一样的淡黄色_为什么开源项目(非常)偏爱新用户,以及您可以采取什么措施...
  7. 【英语学习】【WOTD】doldrums 释义/词源/示例
  8. 树形dp贪吃的九头龙(vijos1523)
  9. SQL数据库附加数据及查询方法
  10. 51单片机前言知识总结
  11. java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...
  12. 4011: [HNOI2015]落忆枫音
  13. php 触摸键盘,window_Win10正式版新增键盘快捷键和触摸手势汇总篇,  微软在新一代操作系统Win1 - phpStudy...
  14. 计算机组成原理4位快速加法器
  15. display几种常用的属性值
  16. 安卓TV开发(四) 实现主流智能TV视频播放器UI
  17. 怼人神器(Windows)
  18. 我的世界服务器额外植物学bug修复,[1.12.2-1.7.10][AnotherCommonBugFix——通用Bug修复]——可修复服务器常见的BUG...
  19. IMX6ULL裸机开发之点亮LED灯
  20. iTab新标签页,一款个性化的浏览器起始页插件

热门文章

  1. 弹出USB大容量存储设备时出问题“该设备正在使用中”
  2. 【学习笔记】利用偏导求解不等式(拉格朗日数乘法)
  3. 电脑正常联网,提示无法登录微信
  4. Qt 字体大小的计算
  5. 京东(保险)部门直推面经
  6. 关于Android 启动页加载先预加载系统白页问题
  7. Vuex持久化,刷新,vuex-along最详细教程
  8. sam卡和sim卡区别_PSAM卡、SAM卡与SIM卡
  9. [基本功]假设检验概念统计量一览
  10. case 书写的要求与思路