Как вы вычисляете дисперсию, медианное и стандартное отклонение в С++ или Java?
Возможный дубликат:
Простая статистика - пакеты Java для расчета среднего, стандартного отклонения и т.д.
У меня есть вектор некоторых удвоений (1.1,2,3,5). Как я могу рассчитать дисперсию, медианное и стандартное отклонение?
Будет выполняться Java или С++ или даже псевдокод.
Ответы
Ответ 1
public class Statistics {
double[] data;
int size;
public Statistics(double[] data) {
this.data = data;
size = data.length;
}
double getMean() {
double sum = 0.0;
for(double a : data)
sum += a;
return sum/size;
}
double getVariance() {
double mean = getMean();
double temp = 0;
for(double a :data)
temp += (a-mean)*(a-mean);
return temp/(size-1);
}
double getStdDev() {
return Math.sqrt(getVariance());
}
public double median() {
Arrays.sort(data);
if (data.length % 2 == 0) {
return (data[(data.length / 2) - 1] + data[data.length / 2]) / 2.0;
}
return data[data.length / 2];
}
}
Ответ 2
Чтобы вычислить среднее значение, пронумеруйте список/массив чисел, отслеживая частичные суммы и длину. Затем верните sum/length
.
double sum = 0.0;
int length = 0;
for( double number : numbers ) {
sum += number;
length++;
}
return sum/length;
Отклонение рассчитывается аналогичным образом. Стандартное отклонение - это просто квадратный корень дисперсии:
double stddev = Math.sqrt( variance );