java实现t检验

作者: lazyM | 来源:发表于2020-03-16 11:20 被阅读0次

描述

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

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;
    }
}

相关文章

  • java实现t检验

    描述 用于两个总体均值之间的比较。 Demo 实现代码

  • 《白话统计》读书笔记-t and anovar

    t检验t检验的使用条件t检验的实现独立样本t检验配对样本t检验Wilcoxon秩和的实现 方差分析方差分析中变异分...

  • 如何选择T检验?

    内容目录 t 检验分类配对 t 检验(非独立t检验)非配对 t 检验(独立t检验)单/双侧 t 检验选择 小结: ...

  • python数据分析之t检验

    t检验应用: 1、单样本检验: 2、样本检验 3、对t检验 4、独立样本t检验 5、“配对”或者“重复测量”检验 ...

  • 3、Stata入门---常见的统计操作

    一、T检验【T-test】 t 检验(t test)又称学生t检验(Student t-test)可以说是统计推断...

  • R语言-T检验、秩和检验、百分比检验、卡方检验

    T检验与秩和检验 T检验:符合正态分布的数据用T检验秩和检验:不满足正态分布的数据用秩和检验 正态分布的检验 非正...

  • java实现f检验

    描述 用于两个总体方差之间的比较。 Demo 代码

  • R做方差齐次检验

    一组数据需要做t检验,了解了一下t检验分为:a.单样本t检验,b.独立双样本t检验和c.成对或非独立样本t检验,三...

  • 关于t检验记录

    什么是t检验?t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n...

  • t检验-SPSS软件应用

    ①单样本t检验 spss操作步骤(正态性检验) spss操作步骤(单样本t检验) ②配对样本t检验 spss操作步...

网友评论

    本文标题:java实现t检验

    本文链接:https://www.haomeiwen.com/subject/ppzwehtx.html