用java实现皮尔逊相关系数计算
用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实现皮尔逊相关系数计算相关推荐
- java实现皮尔逊相关系数
皮尔逊相关系数的定义为两个变量之间的协方差和标准差的商 公式如下: 上式定义了总体相关系数,常用希腊小写字母
- 皮尔逊相关系数的计算(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 ...
- 相似度计算(2)——皮尔逊相关系数
皮尔逊相关系数 一.定义 皮尔逊相关系数( Pearson correlation coefficient,PC),又称皮尔逊积矩相关系数(Pearson product-moment corre ...
- 计算相关系数 皮尔逊相关系数 Pearson、Spearman
数据探索 计算相关系数 为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系统来进行相关分析. 在二元变量的相关分析过程中比较常用的有Pearson相关系数,Spearman秩相关系数和判定系 ...
- python怎么计算相关系数_Python三种方法计算皮尔逊相关系数
1.皮尔逊相关系数在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlat ...
- js计算皮尔逊相关系数
没找到网上有什么现成的,所以就自己写了个,挺简单的,记录一下. /*** 计算皮尔逊相关系数* @list1:数字列表1* @list2:数字列表2* @return number * */ func ...
- Python计算皮尔逊相关系数
** Python计算皮尔逊相关系数 ** 皮尔逊相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1].相关系数的绝对值越大,则表明X与Y相关度越高.当X与Y线性相关时,相 ...
- pandas计算皮尔逊相关系数
前置说明: 本文中使用的数据在文末提供下载,本文使用IH和IC主力合约的数据为例 目录 1. 概念 2. 计算过程 1. 概念 皮尔逊(pearson)相关系数:用于判断数据是否线性相关的方法 皮尔逊 ...
- 皮尔逊相关系数的java实现
皮尔逊相关系数的java实现 2014-08-06 17:01:32 分类: Java 相关系数的值介于–1与+1之间,即–1≤r≤+1.其性质如下: 当r>0时,表示两变量正相关,r< ...
- 推荐系统(2)--计算皮尔逊相关系数
计算皮尔逊相关系数 代码如下: #-*- coding:utf-8 -*- '''皮尔逊相关系数 ''' import json import numpy as np# 计算user1 和 user2 ...
最新文章
- Windows与Linux区别3
- Centos下 ffmpeg 和opencv一起配合处理视频
- 【Java】6.2 处理对象
- 分享一些书籍,方方面面,很多值得一读
- c语言插入排序_还有这种操作?C语言插入排序算法,一点就透
- 她偏爱雏菊一样的淡黄色_为什么开源项目(非常)偏爱新用户,以及您可以采取什么措施...
- 【英语学习】【WOTD】doldrums 释义/词源/示例
- 树形dp贪吃的九头龙(vijos1523)
- SQL数据库附加数据及查询方法
- 51单片机前言知识总结
- java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...
- 4011: [HNOI2015]落忆枫音
- php 触摸键盘,window_Win10正式版新增键盘快捷键和触摸手势汇总篇, 微软在新一代操作系统Win1 - phpStudy...
- 计算机组成原理4位快速加法器
- display几种常用的属性值
- 安卓TV开发(四) 实现主流智能TV视频播放器UI
- 怼人神器(Windows)
- 我的世界服务器额外植物学bug修复,[1.12.2-1.7.10][AnotherCommonBugFix——通用Bug修复]——可修复服务器常见的BUG...
- IMX6ULL裸机开发之点亮LED灯
- iTab新标签页,一款个性化的浏览器起始页插件