简单相关系数怎么算_java sequence「建议收藏」

简单相关系数怎么算_java sequence「建议收藏」一、什么是Pearsonproduct-momentcorrelationcoefficient(简单相关系数)?相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。于是,著名统计学家卡尔·皮尔逊设计了统计指标——相关系数(Correla

大家好,欢迎来到IT知识分享网。

一、什么是Pearson product-moment correlation coefficient(简单相关系数)?

          相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。

于是,著名统计学家卡尔·皮尔逊设计了统计指标——相关系数(Correlation coefficient)。

相关系数是用以反映变量之间相关关系密切程度的统计指标。

相关系数是按积差方法计算,相同以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。

百度百科:http://baike.baidu.com/view/172091.htm

       统计学中,皮尔逊积矩相关系数英语:Pearson product-moment correlation coefficient。又称作 PPMCCPCCs[1], 文章中经常使用r或Pearson’s r表示)用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。在自然科学领域中,该系数广泛用于度量两个变量之间的相关程度。

它是由卡尔·皮尔逊弗朗西斯·高尔顿在19世纪80年代提出的一个相似却又稍有不同的想法演变而来的。

[2][3]这个相关系数也称作“皮尔森相关系数r”。

Wikipedia:http://zh.wikipedia.org/zh/皮尔逊积矩相关系数

二、简单相关系数的公式

两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:

\rho_{X,Y}={\mathrm{cov}(X,Y) \over \sigma_X \sigma_Y} ={E[(X-\mu_X)(Y-\mu_Y)] \over \sigma_X\sigma_Y},

以上方程定义了整体相关系数, 一般表示成希腊字母ρ(rho)。基于样本对协方差和标准差进行预计,能够得到样本相关系数, 一般表示成r:

r = \frac{\sum ^n _{i=1}(X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum ^n _{i=1}(X_i - \bar{X})^2} \sqrt{\sum ^n _{i=1}(Y_i - \bar{Y})^2}}.

一种等价表达式的是表示成标准分的均值。

基于(Xi, Yi)的样本点。样本皮尔逊系数是

r = \frac{1}{n-1} \sum ^n _{i=1} \left( \frac{X_i - \bar{X}}{\sigma_X} \right) \left( \frac{Y_i - \bar{Y}}{\sigma_Y} \right)

当中

\frac{X_i - \bar{X}}{\sigma_X}
 \bar{X} 及 
\sigma_X

各自是标准分、样本平均值和样本标准差。

Wikipedia:http://zh.wikipedia.org/zh/皮尔逊积矩相关系数

相关关系是一种非确定性的关系。相关系数是研究变量之间 线性相关程度的量。因为研究对象的不同,相关系数有例如以下几种定义方式。

相关系数公式

简单相关系数:又叫相关系数或线性相关系数。一般用字母P 表示。用来度量两个变量间的线性关系。

复相关系数:又叫多重相关系数。

复相关是指因变量与多个自变量之间的相关关系。比如,某种商品的季节性需求量与其价格水平、职工收入水平等现象之间呈现复相关关系。

典型相关系数:是先对原来各组变量进行 主成分分析,得到新的线性关系的综合指标,再通过综合指标之间的线性相关系数来研究原各组变量间相关关系。

百度百科:http://baike.baidu.com/view/172091.htm

三、代码实现:

(1)
NumeratorCalculate类
实现分式的
分子
计算;
(2)
DenominatorCalculate类
实现分式的
分母
计算。
(3)
CallClass类
调用上面的方法。

代码一:NumeratorCalculate类
/**
 * 
 */
package numerator.pearson.conefficient;

import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author alan-king
 * 
 * the class is going to calculate the numerator;
 * 
 *
 */
public class NumeratorCalculate {
	
	//add global varieties
	protected List<String> xList , yList;
	
	public NumeratorCalculate(List<String> xList ,List<String> yList){
		this.xList = xList;
		this.yList = yList;
	}
	
	/**
	 * add operate method
	 */
	public double calcuteNumerator(){
		double result =0.0;
		double xAverage = 0.0;
		double temp = 0.0;
		
		int xSize = xList.size();
		for(int x=0;x<xSize;x++){
			temp += Double.parseDouble(xList.get(x));
		}
		xAverage = temp/xSize;
		
		double yAverage = 0.0;
		temp = 0.0;
		int ySize = yList.size();
		for(int x=0;x<ySize;x++){
			temp += Double.parseDouble(yList.get(x));
		}
		yAverage = temp/ySize;
		
		//double sum = 0.0;
		for(int x=0;x<xSize;x++){
			result+=(Double.parseDouble(xList.get(x))-xAverage)*(Double.parseDouble(yList.get(x))-yAverage);
		}
		return result;
	}
}

代码二:
DenominatorCalculate类

/** *  */package numerator.pearson.conefficient;import java.util.List;/** * @author alan-king * */public class DenominatorCalculate {		//add denominatorCalculate method	public double calculateDenominator(List<String> xList,List<String> yList){		double standardDifference = 0.0;		int size = xList.size();		double xAverage = 0.0;		double yAverage = 0.0;		double xException = 0.0;		double yException = 0.0;		double temp = 0.0;		for(int i=0;i<size;i++){			temp += Double.parseDouble(xList.get(i));		}		xAverage = temp/size;				for(int i=0;i<size;i++){			temp += Double.parseDouble(yList.get(i));		}		yAverage = temp/size;				for(int i=0;i<size;i++){			xException += Math.pow(Double.parseDouble(xList.get(i))-xAverage,2);			yException += Math.pow(Double.parseDouble(yList.get(i))-yAverage, 2);		}		//calculate denominator of 		return standardDifference = Math.sqrt(xException*yException);	}}

代码三:
CallClass类

/** *  */package numerator.pearson.conefficient;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;/** * @author alan-king * */public class CallClass {			public static void main(String[] args) throws IOException{		double CORR = 0.0;		List<String> xList = new ArrayList<String>();;		List<String> yList = new ArrayList<String>();				System.out.println("Please input your X's varieties and Y's varieties\r"+							"differnt line,then you should key into \"s\" to end the inputing operator!");				//initial varieties for xList,yList;		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		String str =null;		boolean flag = false;		while(!(str=br.readLine()).equals("s")){			String[] vStr = str.split(",");			int size = vStr.length;			if(flag == false){				for(int i=0;i<size;i++){					xList.add(i, vStr[i]);				}				flag = true;			}else if(flag == true){				for(int i=0;i<size;i++){					yList.add(i, vStr[i]);				}				flag = false;			}					}				NumeratorCalculate nc = new NumeratorCalculate(xList,yList);		double numerator = nc.calcuteNumerator();		DenominatorCalculate dc = new DenominatorCalculate();		double denominator = dc.calculateDenominator(xList, yList);		CORR = numerator/denominator;		System.out.println("We got the result by Calculating:");		System.out.printf("CORR = "+CORR);	}}

四、输出结果:例如以下图

简单相关系数怎么算_java sequence「建议收藏」

简单相关系数怎么算_java sequence「建议收藏」

简单相关系数怎么算_java sequence「建议收藏」

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28264.html

(0)
上一篇 2023-09-22 12:33
下一篇 2023-09-22 16:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信