Можно уменьшить выбросы в линейных регрессионых моделях с помощью устойчивой линейной регрессии. Этот раздел определяет устойчивую регрессию, показывает, как использовать ее для подгонки линейной модели, и сравнивает результаты со стандартной подгонкой. Вы можете использовать fitlm с 'RobustOpts' аргумент пары "имя-значение" для соответствия устойчивой регрессионой модели. Или вы можете использовать robustfit чтобы просто вычислить параметры робастного коэффициента регрессии.
Устойчивая линейная регрессия менее чувствительна к выбросам, чем стандартная линейная регрессия. Стандартная линейная регрессия использует обыкновенную аппроксимацию методом наименьших квадратов, чтобы вычислить параметры модели, которые связывают данные отклика с данными предиктора с одним или несколькими коэффициентами. (См. Оценку многомерных регрессионых моделей для получения дополнительной информации.) В результате выбросы оказывают большое влияние на подгонку, потому что квадратура невязок увеличивает эффекты этих экстремальных точек данных. Модели, которые используют стандартную линейную регрессию, описанную в What Is a Linear Regression Model?, основаны на определенных допущениях, таких как нормальное распределение ошибок в наблюдаемых реакциях. Если распределение ошибок асимметрично или подвержено выбросам, допущения модели становятся недействительными, и оценки параметров, доверительные интервалы и другие вычисленные статистики становятся ненадежными.
Робастная регрессия использует метод, называемый итерационно переоцененным методом наименьших квадратов, чтобы присвоить вес каждой точке данных. Этот метод менее чувствителен к большим изменениям в небольших частях данных. В результате устойчивая линейная регрессия менее чувствительна к выбросам, чем стандартная линейная регрессия.
В взвешенных наименьших квадратах процесс аппроксимации включает вес как дополнительный масштабный коэффициент, который улучшает подгонку. Веса определяют, насколько каждое значение отклика влияет на окончательные оценки параметра. Низкокачественная точка данных (для примера, выбросов) должна оказывать меньшее влияние на подгонку. Чтобы вычислить веса w i, можно использовать предопределенные функции веса, такие как функция bisquare Тьюки (см. Аргумент пары "имя-значение" 'RobustOpts' в fitlm для дополнительных опций).
Итерационно переоцененный алгоритм наименьших квадратов автоматически и итерационно вычисляет веса. При инициализации алгоритм присваивает равный вес каждой точке данных и оценивает коэффициенты модели с помощью обыкновенных наименьших квадратов. При каждой итерации алгоритм вычисляет веса w i, придавая меньший вес точкам, более удаленным от предсказаний модели в предыдущей итерации. Затем алгоритм вычисляет коэффициенты модели b используя взвешенные наименьшие квадраты. Итерация останавливается, когда значения оценок коэффициентов сходятся в пределах заданного допуска. Этот алгоритм одновременно стремится найти кривую, которая подходит для основной массы данных с помощью подхода наименьших квадратов и минимизировать эффекты выбросов.
Для получения дополнительной информации см. Раздел «Шаги для итерационно повторно взвешенных наименьших квадратов».
В этом примере показано, как использовать устойчивую регрессию с fitlm функция и сравнивает результаты устойчивой подгонки со стандартной аппроксимацией методом наименьших квадратов.
Загрузите moore данные. Данные предиктора находятся в первых пяти столбцах, а данные отклика - в шестом.
load moore
X = moore(:,1:5);
y = moore(:,6);Подбор линейной модели методом наименьших квадратов к данным.
mdl = fitlm(X,y)
mdl =
Linear regression model:
y ~ 1 + x1 + x2 + x3 + x4 + x5
Estimated Coefficients:
Estimate SE tStat pValue
___________ __________ _________ ________
(Intercept) -2.1561 0.91349 -2.3603 0.0333
x1 -9.0116e-06 0.00051835 -0.017385 0.98637
x2 0.0013159 0.0012635 1.0415 0.31531
x3 0.0001278 7.6902e-05 1.6618 0.11876
x4 0.0078989 0.014 0.56421 0.58154
x5 0.00014165 7.3749e-05 1.9208 0.075365
Number of observations: 20, Error degrees of freedom: 14
Root Mean Squared Error: 0.262
R-squared: 0.811, Adjusted R-Squared: 0.743
F-statistic vs. constant model: 12, p-value = 0.000118
Подбор устойчивой линейной модели к данным с помощью 'RobustOps' аргумент пары "имя-значение".
mdlr = fitlm(X,y,'RobustOpts','on')
mdlr =
Linear regression model (robust fit):
y ~ 1 + x1 + x2 + x3 + x4 + x5
Estimated Coefficients:
Estimate SE tStat pValue
__________ __________ ________ ________
(Intercept) -1.7516 0.86953 -2.0144 0.063595
x1 1.7006e-05 0.00049341 0.034467 0.97299
x2 0.00088843 0.0012027 0.7387 0.47229
x3 0.00015729 7.3202e-05 2.1487 0.049639
x4 0.0060468 0.013326 0.45375 0.65696
x5 6.8807e-05 7.0201e-05 0.98015 0.34365
Number of observations: 20, Error degrees of freedom: 14
Root Mean Squared Error: 0.249
R-squared: 0.775, Adjusted R-Squared: 0.694
F-statistic vs. constant model: 9.64, p-value = 0.000376
Визуально исследуйте невязки двух моделей.
tiledlayout(1,2) nexttile plotResiduals(mdl,'probability') title('Linear Fit') nexttile plotResiduals(mdlr,'probability') title('Robust Fit')

Невязки от устойчивой подгонки (правая половина графика) ближе к прямой линии, кроме одного очевидного выброса.
Найдите индекс выбросов.
outlier = find(isoutlier(mdlr.Residuals.Raw))
outlier = 1
Постройте график весов наблюдений в устойчивой подгонке.
figure b = bar(mdlr.Robust.Weights); b.FaceColor = 'flat'; b.CData(outlier,:) = [.5 0 .5]; xticks(1:length(mdlr.Residuals.Raw)) xlabel('Observations') ylabel('Weights') title('Robust Fit Weights')

Вес выбросов в устойчивой подгонке (фиолетовый брус) намного меньше, чем веса других наблюдений.
Итерационно повторно взвешенный алгоритм методом наименьших квадратов следует этой процедуре:
Начните с начальной оценки весов и подгоните модель по взвешенным наименьшим квадратам.
Вычислите скорректированные невязки. Скорректированные невязки заданы как
где r i являются обычными невязками методом наименьших квадратов, и h i являются значениями рычага методом наименьших квадратов. Рычаги корректируют невязки путем уменьшения веса точек данных с высоким плечом, которые оказывают большой эффект на аппроксимацию методом наименьших квадратов (см. Hat Matrix и Leverage).
Стандартизируйте невязки. Стандартизированные скорректированные невязки даны
где K - константа настройки, а s - оценка стандартного отклонения члена ошибки, заданного s = MAD/0.6745.
MAD - медианное абсолютное отклонение невязок от их медианы. Константа 0,6745 делает оценку объективной для нормального распределения. Если матрица данных предиктора X имеет p столбцов, программа исключает наименьшие p абсолютные отклонения при вычислении медианы.
Вычислите устойчивые веса w i как функцию u. Для примера веса bisquare заданы как
Оцените устойчивые коэффициенты регрессии b. Веса изменяют выражение для оценок параметров b следующим образом
где W - диагональная матрица веса, X - матрица данных предиктора, а y - вектор отклика.
Оцените взвешенную ошибку методом наименьших квадратов
где w i - веса, y i - наблюдаемые отклики, ŷ i - подобранные отклики, и r i являются невязками.
Итерация останавливается, если подгонка сходится или достигнуто максимальное количество итераций. В противном случае выполните следующую итерацию аппроксимации методом наименьших квадратов, вернувшись ко второму шагу.
fitlm | LinearModel | plotResiduals | robustfit