Можно уменьшить эффекты отклонения в моделях линейной регрессии, используя надежную линейную регрессию. В этом разделе определяется надежная регрессия, показано, как использовать ее для подгонки линейной модели, и сравниваются результаты со стандартной подгонкой. Вы можете использовать fitlm с 'RobustOpts' аргумент пары имя-значение для соответствия надежной регрессионной модели. Или вы можете использовать robustfit для простого вычисления параметров коэффициента надежной регрессии.
Надежная линейная регрессия менее чувствительна к отклонениям, чем стандартная линейная регрессия. Стандартная линейная регрессия использует обычную подгонку методом наименьших квадратов для вычисления параметров модели, которые связывают данные отклика с данными предиктора с одним или несколькими коэффициентами. (Дополнительные сведения см. в разделе Оценка многомерных регрессионных моделей.) В результате отклонения оказывают большое влияние на аппроксимацию, поскольку возведение в квадрат остатков увеличивает влияние этих крайних точек данных. Модели, использующие стандартную линейную регрессию, описанную в разделе Что такое линейная регрессионная модель?, основаны на определенных допущениях, таких как нормальное распределение ошибок в наблюдаемых откликах. Если распределение ошибок асимметрично или подвержено отклонениям, предположения модели становятся недействительными, а оценки параметров, доверительные интервалы и другая вычисленная статистика становятся ненадежными.
Надежная регрессия использует метод, называемый итеративно повторно взвешенными наименьшими квадратами, чтобы назначить вес каждой точке данных. Этот метод менее чувствителен к большим изменениям в небольших частях данных. В результате надежная линейная регрессия менее чувствительна к отклонениям, чем стандартная линейная регрессия.
В взвешенных наименьших квадратах процесс подгонки включает вес в качестве дополнительного масштабного коэффициента, что улучшает подгонку. Веса определяют, насколько каждое значение отклика влияет на окончательные оценки параметров. Точка данных низкого качества (например, отклонение) должна оказывать меньшее влияние на посадку. Для вычисления весов wi можно использовать предопределенные весовые функции, такие как bisquare-функция Туки (см. аргумент пары имя-значение 'RobustOpts' в fitlm для дополнительных опций).
Итерационно повторно взвешенный алгоритм наименьших квадратов автоматически и итеративно вычисляет веса. При инициализации алгоритм присваивает равный вес каждой точке данных и оценивает коэффициенты модели с использованием обычных наименьших квадратов. При каждой итерации алгоритм вычисляет веса wi, давая меньший вес точкам, более удаленным от предсказаний модели в предыдущей итерации. Затем алгоритм вычисляет коэффициенты 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')

Вес отклонения в прочной посадке (фиолетовый брусок) намного меньше веса других наблюдений.
Итерационно повторно взвешенный алгоритм наименьших квадратов следует этой процедуре:
Начните с начальной оценки весов и подгоните модель по взвешенным наименьшим квадратам.
Вычислите скорректированные остатки. Скорректированные остатки даны
− hi
где ri - обычные остатки наименьших квадратов, а hi - значения рычагов наименьших квадратов. Использует возможность корректировки остаточных значений за счет уменьшения веса высокоэффективных точек данных, которые оказывают большое влияние на подгонку методом наименьших квадратов (см. Hat Matrix and Leverage).
Стандартизация остатков. Стандартизированные скорректированные остатки даны
riKs1 − hi
где K - постоянная настройки, а s - оценка стандартного отклонения члена ошибки, заданного s = MAD/0.6745.
MAD - среднее абсолютное отклонение остатков от их медианы. Постоянная 0,6745 делает оценку несмещенной для нормального распределения. Если матрица данных предиктора X имеет p столбцов, программное обеспечение исключает наименьшие p абсолютных отклонений при вычислении медианы.
Вычислите надежные веса wi как функцию u. Например, веса bisquare задаются как
2,|ui|<10,|ui|≥1
Оцените коэффициенты надежной регрессии b. Веса изменяют выражение для оценок параметров b следующим образом:
− 1XTWy
где W - матрица диагонального веса, X - матрица данных предиктора, а y - вектор отклика.
Оценка взвешенной ошибки наименьших квадратов
2=∑1nwiri2
где wi - веса, yi - наблюдаемые отклики, ŷi - подогнанные отклики, а ri - остатки.
Итерация останавливается, если аппроксимация сходится или достигнуто максимальное количество итераций. В противном случае выполните следующую итерацию фитинга наименьших квадратов, вернувшись ко второму шагу.
fitlm | LinearModel | plotResiduals | robustfit