簡體   English   中英

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

[英]zScore and p-value in Java (survival function)

以下代碼的 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);
    }
}

這是使用Apache Commons Mathematics Library

編輯:或者,甚至更好:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM