Java中的zScore和p值(生存函数)

Java中的zScore和p值(生存函数),java,scipy,p-value,apache-commons-math,Java,Scipy,P Value,Apache Commons Math,以下代码的java等价物是什么 import scipy from scipy.stats import zscore zlist = [9967,11281,10752,10576,2366,11882,11798,] z = zscore(zlist) for e in z: print e,scipy.stats.norm.sf(abs(e)) 答案是: private void run() { double[] values = {9967,11281,10752,10

以下代码的java等价物是什么

import scipy
from scipy.stats import zscore
zlist = [9967,11281,10752,10576,2366,11882,11798,]
z = zscore(zlist)
for e in z:
    print e,scipy.stats.norm.sf(abs(e))
答案是:

private void run() {
    double[] values = {9967,11281,10752,10576,2366,11882,11798};
    double variance = StatUtils.populationVariance(values);
    double sd = Math.sqrt(variance);
    double mean = StatUtils.mean(values);
    NormalDistribution nd = new NormalDistribution();
    for ( double value: values ) {
        double stdscore = (value-mean)/sd;
        double sf = 1.0 - nd.cumulativeProbability(Math.abs(stdscore));
        System.out.println("" + stdscore + " " + sf);
    }
}
这是使用

编辑:或者更好:

import java.util.function.BiConsumer;

import org.apache.commons.math3.distribution.NormalDistribution;
import org.apache.commons.math3.distribution.RealDistribution;
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;

public class ZScore {
    public static void main(String[] args) {
        ZScore program = new ZScore();
        double[] values = {9967,11281,10752,10576,2366,11882,11798};
        program.computeZScoreAndSurvivalFunctions(
            new DescriptiveStatistics(values), 
            new NormalDistribution(), 
            (zscore, sf)->System.out.println(""+zscore+" "+sf)
        );
    }

    private void computeZScoreAndSurvivalFunctions(
        DescriptiveStatistics ds, 
        RealDistribution dist, 
        BiConsumer<Double, Double> consumer
    ) {
        double variance = ds.getPopulationVariance();
        double sd = Math.sqrt(variance);
        double mean = ds.getMean();
        for ( int index = 0; index < ds.getN(); ++index) {
            double zscore = (ds.getElement(index)-mean)/sd;
            double sf = 1.0 - dist.cumulativeProbability(Math.abs(zscore));
            consumer.accept(zscore, sf);
        }
    }
}
import java.util.function.BiConsumer;
导入org.apache.commons.math3.distribution.NormalDistribution;
导入org.apache.commons.math3.distribution.realdribution;
导入org.apache.commons.math3.stat.description.DescriptiveStatistics;
公共类ZScore{
公共静态void main(字符串[]args){
ZScore程序=新ZScore();
双[]值={996711281107521057623661188211798};
program.ComputeScore和Survival函数(
新的描述性统计(值),
新正态分布(),
(zscore,sf)->System.out.println(“+zscore+”+sf)
);
}
私有void计算和生存函数(
描述统计学,
再分配区,
双消费者消费者
) {
双方差=ds.getPopulationVariance();
双sd=数学sqrt(方差);
双平均值=ds.getMean();
对于(int index=0;index