常用统计算法JAVA实现 - 相关系数(08)

/**
	 * 
	 *@描述: 相关系数 <br/>
	 *@方法名: correlation <br/>
	 *@param x <br/>
	 *@param y <br/>
	 *@return  * @返回类型 double 返回值[-1,1]{[-1,0]负相关;[0,1]正相关}, 取绝对值,越大表示相关性越强,
	 *          .8~1: 非常强 ,.6~.8: 强相关 ,.4~.6: 中度相关,.2~.4: 弱相关,.0~.: 弱相关或者无关 <br/>
	 * @创建人 micheal <br/>
	 *@创建时间 2019年1月3日下午8:51:27 <br/>
	 *@修改人 micheal <br/>
	 *@修改时间 2019年1月3日下午8:51:27 <br/>
	 *@修改备注 <br/>
	 *@since <br/>
	 *@throws <br/>
	 *  
	 */
	public static double correlation(double[] x, double[] y) {
		if (x.length != y.length) {
			throw new java.lang.NumberFormatException();
		}
		double xSum = 0;
		double ySum = 0;
		double xP2Sum = 0;
		double yP2Sum = 0;
		double xySum = 0;
		int len = x.length;
		for (int i = 0; i < y.length; i++) {

			xSum = Mutil.add(xSum, x[i]);
			ySum = Mutil.add(ySum, y[i]);
			xP2Sum = Mutil.add(xP2Sum, Math.pow(x[i], 2));
			yP2Sum = Mutil.add(yP2Sum, Math.pow(y[i], 2));
			xySum = Mutil.add(xySum, Mutil.multiply(x[i], y[i]));

		}
		double Rxy = Mutil.subtract(Mutil.multiply(len, xySum), Mutil.multiply(xSum, ySum)) / (Math.sqrt((Mutil.multiply(len, xP2Sum) - Math.pow(xSum, 2)) * (Mutil.multiply(len, yP2Sum) - Math.pow(ySum, 2))));
		return Mutil.round(Rxy, 2);

	}

测试代码,打印结果,相关性:0.69

double[] x = { 2, 4, 5, 6, 4, 7, 8, 5, 6, 7 };
double[] y = { 3, 2, 6, 5, 3, 6, 5, 4, 4, 5 };
log.info("计算[相关性]:" + correlation(x, y));

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成都好男人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值