常用统计算法JAVA实现 - 简单方差F/一元方差分析(15)

/**
	 * 
	 * @描述:  简单方差F分析,一元方差分析	,分母自由度:n-N ,分子自由度:N-1
 * @方法名: sampleAnalysisOfAvariance
 * @param arrays
 * @return
 * @返回类型 double
 * @创建人 micheal
 * @创建时间 2019年1月6日上午12:50:25
 * @修改人 micheal
 * @修改时间 2019年1月6日上午12:50:25
 * @修改备注
 * @since
 * @throws   */ public static double sampleAnalysisOfAvariance(double[]...arrays ){ int len = arrays.length; int n = arrays[0].length; int N = n * len; double[] groupSum = new double[len]; double[] groupSqurSum = new double[len]; double[] groupMean = new double[len]; double[] groupSum2 = new double[len]; double allSum = 0; double allSqurSum2 = 0; double allSqurSum = 0; double allSum2 = 0; for (int i = 0; i < len; i++) { double[] x = arrays[i]; groupMean[i] = mean(x); for (int j = 0; j < x.length; j++) { groupSum[i] += x[j]; groupSqurSum[i] += Math.pow(x[j],2); allSqurSum += Math.pow(x[j],2); } groupSum2[i] = Math.pow(groupSum[i], 2) / n; allSum += groupSum[i]; allSum2 += Math.pow(groupSum[i],2); } allSqurSum2 = Math.pow(allSum, 2) / N; allSum2 = allSum2 / n; double G1 = allSum2 - allSqurSum2; double G2 = allSqurSum - allSum2; double G3 = allSqurSum - allSqurSum2; return Mutil.round((G1/(len-1)) / (G2 /(N - len)),3); }

测试代码,打印结果:8.799 

double[] a1 = {87,86,76,56,78,98,77,66,75,67};
double[] a2 = {87,85,99,85,79,81,82,78,85,91};
double[] a3 = {89,91,96,87,89,90,89,96,96,93};
log.info("计算[简单方差分析]:"+sampleAnalysisOfAvariance(a1,a2,a3));

 

你可能感兴趣的:(方差分析)