Модели описали в том, Что такое Модель Линейной регрессии? основаны на определенных предположениях, таких как нормальное распределение ошибок в наблюдаемых ответах. Если распределение ошибок асимметрично или подвержено выбросам, предположения модели делаются недействительным, и оценки параметра, доверительные интервалы, и другие вычисленные статистические данные становятся ненадежными. Используйте fitlm
с RobustOpts
пара "имя-значение", чтобы создать модель, которая не очень затронута выбросами. Устойчивый подходящий метод менее чувствителен, чем обычные наименьшие квадраты к большим изменениям в мелких деталях данных.
Устойчивая регрессия работает путем присвоения веса каждой точке данных. Взвешивание сделано автоматически, и итеративно использование процесса вызвало итеративно повторно взвешенные наименьшие квадраты. В первой итерации присвоена каждая точка, равный вес и коэффициенты модели оцениваются с помощью обычных наименьших квадратов. В последующих итерациях повторно вычисляются веса так, чтобы точкам дальше от прогнозов модели в предыдущей итерации дали более низкий вес. Коэффициенты модели затем повторно вычисляются с помощью метода взвешенных наименьших квадратов. Процесс продолжается, пока значения содействующих оценок не сходятся в заданном допуске.
В этом примере показано, как использовать устойчивую регрессию. Это сравнивает результаты устойчивой подгонки к стандартной подгонке наименьших квадратов.
Шаг 1. Подготовка данных.
Загрузите moore
данные. Данные находятся в первых пяти столбцах и ответе в шестом.
load moore
X = [moore(:,1:5)];
y = moore(:,6);
Шаг 2. Подбирайте устойчивые и неустойчивые модели.
Подбирайте две линейных модели к данным, одному использующему устойчивому подбору кривой, один нет.
mdl = fitlm(X,y); % not robust mdlr = fitlm(X,y,'RobustOpts','on');
Шаг 3. Исследуйте остаточные значения модели.
Исследуйте остаточные значения этих двух моделей.
subplot(1,2,1) plotResiduals(mdl,'probability') subplot(1,2,2) plotResiduals(mdlr,'probability')
Остаточные значения устойчивой подгонки (правильная половина графика) являются почти всеми ближе к прямой линии, за исключением одного очевидного выброса.
Шаг 4. Удалите выброс из стандартной модели.
Найдите индекс выброса. Исследуйте вес выброса в устойчивой подгонке.
[~,outlier] = max(mdlr.Residuals.Raw); mdlr.Robust.Weights(outlier)
ans = 0.0246
Проверяйте средний вес.
median(mdlr.Robust.Weights)
ans = 0.9718
Этот вес выброса в устойчивой подгонке очень меньше типичного веса наблюдения.
LinearModel
| fitlm
| plotResiduals