相关系数t检验 java_java实现t检验

描述

用于两个总体均值之间的比较。

Demo

public class TtestDemo {

/**

* two-sided test

* @param args

*/

public static void main(String[] args) {

double[] x= {300,280,344,385,372,360,288,321,376,290,301,283};

double[] y= {274,220,308,336,198,300,315,258,318,310,332,263};

Ttest t=new Ttest(x, y);

System.out.println(t.getPValue());

}

}

实现代码

package com.math.statistics;

import org.apache.commons.math3.stat.descriptive.moment.StandardDeviation;

import JSci.maths.statistics.TDistribution;

/***

* @author miaoyibo

*

*/

public class Ttest {

private double[] x;

private double[] y;

StandardDeviation standardDeviation =new StandardDeviation();

public Ttest(double[] x, double[] y) {

super();

this.x = x;

this.y = y;

}

public int getXSize() {

return x==null?0:x.length;

}

public int getYSize() {

return y==null?0:y.length;

}

public double getXMean() {

int n=x.length;

double sum=0;

for (double d : x) {

sum=sum+d;

}

return sum/n;

}

public double getYMean() {

int n=y.length;

double sum=0;

for (double d : y) {

sum=sum+d;

}

return sum/n;

}

public double getStandard(double[] x) {

return standardDeviation.evaluate(x);

}

public double calculateTvalue() {

double a=getXMean()-getYMean();

double q1=getStandard(x);

double q2=getStandard(y);

double s1=q1*q1;

double s2=q2*q2;

double b=Math.sqrt(s1/x.length+s2/y.length);

return a/b;

}

public int getDegreesOfFreedom() {

double q1=getStandard(x);

double q2=getStandard(y);

double s1=q1*q1;

double s2=q2*q2;

double a=(s1/x.length+s2/y.length)*(s1/x.length+s2/y.length);

double b=((s1/x.length)*(s1/x.length))/(x.length-1)+((s2/y.length)*(s2/y.length))/(y.length-1);

Double free=a/b;

return free.intValue();

}

public double getPValue() {

int free=getDegreesOfFreedom();

double t=calculateTvalue();

TDistribution td=new TDistribution(free);

double cumulative = td.cumulative(t);

double p;

if(t>0) {

p=(1-cumulative)*2;

}else {

p=cumulative*2;

}

return p;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值