Tag: Java 统计函数 方差 标准差
public class TestStatistics {
public static void main(String[] args) {
double [] testData=new double[]{1,2,3,4,5,6,7,8,9};
System.out.println("最大值:"+getMax(testData));
System.out.println("最小值:"+getMin(testData));
System.out.println("计数:"+getCount(testData));
System.out.println("求和:"+getSum(testData));
System.out.println("求平均:"+getAverage(testData));
System.out.println("方差:"+getVariance(testData));
System.out.println("标准差:"+getStandardDiviation(testData));
}
/**
* 求给定双精度数组中值的最大值
*
* @param inputData
* 输入数据数组
* @return 运算结果,如果输入值不合法,返回为-1
*/
public static double getMax(double[] inputData) {
if (inputData == null || inputData.length == 0)
return -1;
int len = inputData.length;
double max = inputData[0];
for (int i = 0; i < len; i++) {
if (max < inputData[i])
max = inputData[i];
}
return max;
}
/**
* 求求给定双精度数组中值的最小值
*
* @param inputData
* 输入数据数组
* @return 运算结果,如果输入值不合法,返回为-1
*/
public static double getMin(double[] inputData) {
if (inputData == null || inputData.length == 0)
return -1;
int len = inputData.length;
double min = inputData[0];
for (int i = 0; i < len; i++) {
if (min > inputData[i])
min = inputData[i];
}
return min;
}
/**
* 求给定双精度数组中值的和
*
* @param inputData
* 输入数据数组
* @return 运算结果
*/
public static double getSum(double[] inputData) {
if (inputData == null || inputData.length == 0)
return -1;
int len = inputData.length;
double sum = 0;
for (int i = 0; i < len; i++) {
sum = sum + inputData[i];
}
return sum;
}
/**
* 求给定双精度数组中值的数目
*
* @param input
* Data 输入数据数组
* @return 运算结果
*/
public static int getCount(double[] inputData) {
if (inputData == null)
return -1;
return inputData.length;
}
/**
* 求给定双精度数组中值的平均值
*
* @param inputData
* 输入数据数组
* @return 运算结果
*/
public static double getAverage(double[] inputData) {
if (inputData == null || inputData.length == 0)
return -1;
int len = inputData.length;
double result;
result = getSum(inputData) / len;
return result;
}
/**
* 求给定双精度数组中值的平方和
*
* @param inputData
* 输入数据数组
* @return 运算结果
*/
public static double getSquareSum(double[] inputData) {
if(inputData==null||inputData.length==0)
return -1;
int len=inputData.length;
double sqrsum = 0.0;
for (int i = 0; i <len; i++) {
sqrsum = sqrsum + inputData[i] * inputData[i];
}
return sqrsum;
}
/**
* 求给定双精度数组中值的方差
*
* @param inputData
* 输入数据数组
* @return 运算结果
*/
public static double getVariance(double[] inputData) {
int count = getCount(inputData);
double sqrsum = getSquareSum(inputData);
double average = getAverage(inputData);
double result;
result = (sqrsum - count * average * average) / count;
return result;
}
/**
* 求给定双精度数组中值的标准差
*
* @param inputData
* 输入数据数组
* @return 运算结果
*/
public static double getStandardDiviation(double[] inputData) {
double result;
//绝对值化很重要
result = Math.sqrt(Math.abs(getVariance(inputData)));
return result;
}
}