Я почти закончил с проблемой, но что бы я ни пытался, я не могу преобразовать значения из логических в числовые.
Обнаружение необычных чисел или выбросов в наборе данных важно во многих дисциплинахпотому что выбросы идентифицируют интересные явления, экстремальные события или неверные экспериментальные результаты.Простой способ проверить, является ли значение данных выбросом, состоит в том, чтобы увидеть, является ли значение значительным числом стандартных отклонений от среднего значения набора данных.Например, является выбросом, если где - среднее значение набора данных, стандартное отклонение набора данных и число стандартных отклонений, которые считаются значимыми.
Назначьте outlierData
со всеми значениями в userData
, равными numberStdDevs
стандартные отклонения от среднего значения userData
.Подсказка: используйте логическое индексирование для возврата значений данных выбросов.
Пример : Если userData
равно [9, 50, 51, 49, 100 ]
и numberStdDevs
равно 1
, тогда outlierData равно [9, 100]
.
function outlierData = getOutliers(userData, numberStdDevs)
% getOutliers: Return all elements of input array data that are more than
% numStdDevs standard deviations away from the mean.
%
% Inputs: userData - array of input data values
% numberStdDevs - threshold number of standard deviations to
% determine whether a particular data value is an outlier
%
% Outputs: outlierData - array of outlier data values
% Assign dataMean with the mean of userData
dataMean = mean(userData);
% Assign dataStdDev with userData's standard deviation
dataStdDev = std(userData);
% Assign outlierData with Return outliers
outlierData = (abs(userData - dataMean)) > (numberStdDevs * dataStdDev);
end
Проверьте, вернется ли getOutliers([9, 50, 51, 49, 100 ], 1)
[9, 100]
Я получу 1 0 0 0 1
Проверьте, вернется ли getOutliers([76, 79, 84, 68, 85, 23, 105, 47, 97, 96, 39], 1)
[23, 105, 39]
Я получу 0 0 0 0 0 1 1 0 0 0 1
Проверьте, если getOutliers([76, 79, 84, 68, 85, 23, 105, 47, 97, 96, 39], 0.5)
возвращает [23, 105, 47, 97, 96, 39]
Я получаю 0 0 0 0 0 1 1 1 1 1 1