Java中的zScore和p值(生存函数)
以下代码的java等价物是什么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
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