Я работаю над двумя функциями для вычисления среднего абсолютного отклонения и медианного абсолютного отклонения набора векторных данных. Я использую перегруженную функцию calcAverage внутри них. Проблема в том, что я возвращаю одинаковое неверное значение для обоих вызовов функций.
Это выход. Это дает мне научную запись или что-то?
Mean absolute deviation = 4.09929e-016
Median absolute deviation = 4.09929e-016
Это средняя абсолютная функция распределения:
double calcMeanAD(vector<int> data_set){
vector<double> lessMean;
double mean = calcAverage(data_set);
for (auto it = data_set.begin(); it != data_set.end(); ++it){
lessMean.push_back(*it);
}
for (auto it = lessMean.begin(); it != lessMean.end(); ++it){
*it -= mean;
}
return calcAverage(lessMean);
}
Это медиана абсолютной функции распределения:
double calcMedAD(vector<int> data_set){
vector<double> lessMed;
double median = calcAverage(data_set);
for (auto it = data_set.begin(); it != data_set.end(); ++it){
lessMed.push_back(static_cast<double>(*it));
}
for (auto it = lessMed.begin(); it != lessMed.end(); ++it){
*it -= median;
}
return calcAverage(lessMed);
}
Кто-нибудь может определить что-то, что не так? Благодарю.
Обе функции возвращают ноль с некоторой ошибкой округления.
Запишите алгебраическое выражение для значений, которые вы пытаетесь вычислить, и сравните это с вашим кодом.
Я не знаю, что делает calcAverage, но оно не перегружено; Вы называете это с vector<double>
оба раза. Нет способа рассчитать как среднее, так и медиану.
Подсказка: вы, кажется, пропустили значения абсолютный а также медиана
Медианное абсолютное отклонение (MAD) рассчитывается как медиана абсолютного значения каждого значения вектора минус медиана всех элементов. Так что вы должны предоставить в своем коде сортировку ()
функция для векторных элементов, чтобы найти медиану значений и использовать fabs () для вычисления различий
это должно быть отсортировано снова.