robustfit

Подгонка устойчивой линейной регрессии

Описание

пример

b = robustfit(X,y) возвращает вектор b оценок коэффициентов для устойчивой многофакторной линейной регрессии откликов в векторных y на предикторах в матричной X.

пример

b = robustfit(X,y,wfun,tune,const) задает опции функции веса аппроксимации wfun и tune, и индикатор const, который определяет, включает ли модель в себя постоянный член. Можно пройти [] для wfun, tune, и const использовать их значения по умолчанию.

пример

[b,stats] = robustfit(___) также возвращает структуру stats содержит предполагаемую статистику, используя любую из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Оцените устойчивые коэффициенты регрессии для множественной линейной модели.

Загрузите carsmall набор данных. Укажите вес автомобиля и мощность в качестве предикторов и пробег на галлон в качестве ответа.

load carsmall
x1 = Weight;
x2 = Horsepower;
X = [x1 x2];
y = MPG;

Вычислите устойчивые коэффициенты регрессии.

b = robustfit(X,y)
b = 3×1

   47.1975
   -0.0068
   -0.0333

Постройте график подобранной модели.

x1fit = linspace(min(x1),max(x1),20);
x2fit = linspace(min(x2),max(x2),20);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT;
mesh(X1FIT,X2FIT,YFIT)

Постройте график данных.

hold on
scatter3(x1,x2,y,'filled')
hold off
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
legend('Model','Data')
view(50,10)
axis tight

Figure contains an axes. The axes contains 2 objects of type surface, scatter. These objects represent Model, Data.

Настройте весовую функцию для устойчивой регрессии с помощью различных констант настройки.

Сгенерируйте данные с трендом y=10-2x, а затем измените одно значение, чтобы симулировать выбросы.

x = (1:10)';
rng ('default') % For reproducibility
y = 10 - 2*x + randn(10,1);
y(10) = 0;

Вычислите устойчивую регрессию невязок используя функцию веса bisquare для трех различных констант настройки. Константа настройки по умолчанию является 4.685.

tune_const = [3 4.685 6];

for i = 1:length(tune_const)
    [~,stats] = robustfit(x,y,'bisquare',tune_const(i));
    resids(:,i) = stats.resid;
end

Создать график невязок.

scatter(x,resids(:,1),'b','filled')
hold on
plot(resids(:,2),'rx','MarkerSize',10,'LineWidth',2)
scatter(x,resids(:,3),'g','filled')
plot([min(x) max(x)],[0 0],'--k')
hold off 
grid on
xlabel('x')
ylabel('Residuals')
legend('tune = 3','tune = 4.685','tune = 6','Location','best')

Figure contains an axes. The axes contains 4 objects of type scatter, line. These objects represent tune = 3, tune = 4.685, tune = 6.

Вычислите корневую среднюю квадратичную невязку ( RMSE) невязок для трех различных констант настройки.

rmse = sqrt(mean(resids.^2))
rmse = 1×3

    3.2577    2.7576    2.7099

Поскольку увеличение константы настройки уменьшает уставку, назначенную выбросам, RMSE уменьшается, когда константа настройки увеличивается.

Сгенерируйте данные с трендом y=10-2x, а затем измените одно значение, чтобы симулировать выбросы.

x = (1:10)';
rng('default') % For reproducibility
y = 10 - 2*x + randn(10,1);
y(10) = 0;

Подгонка прямой линии с помощью обыкновенной регрессии методом наименьших квадратов. Чтобы вычислить оценки коэффициентов для модели с постоянным членом, включите столбец с таковыми в x.

bls = regress(y,[ones(10,1) x])
bls = 2×1

    7.8518
   -1.3644

Оцените прямолинейную аппроксимацию с помощью устойчивой регрессии. robustfit по умолчанию добавляет в модель постоянный член.

[brob,stats] = robustfit(x,y);
brob
brob = 2×1

    8.4504
   -1.5278

Идентифицируйте потенциальные выбросы путем сравнения невязок с медианным абсолютным отклонением невязок.

outliers_ind = find(abs(stats.resid)>stats.mad_s);

Постройте штриховой график невязок для устойчивой регрессии.

bar(abs(stats.resid))
hold on
yline(stats.mad_s,'k--')
hold off
xlabel('x')
ylabel('Residuals')

Figure contains an axes. The axes contains 2 objects of type bar, constantline.

Создайте график поля точек данных.

scatter(x,y,'filled')

Постройте график выбросов.

hold on 
plot(x(outliers_ind),y(outliers_ind),'mo','LineWidth',2)

Постройте график наименьших квадратов и устойчивой подгонки.

plot(x,bls(1)+bls(2)*x,'r')
plot(x,brob(1)+brob(2)*x,'g')
hold off
xlabel('x')
ylabel('y')
legend('Data','Outlier','Ordinary Least Squares','Robust Regression')
grid on

Figure contains an axes. The axes contains 4 objects of type scatter, line. These objects represent Data, Outlier, Ordinary Least Squares, Robust Regression.

Выбросы влияют на устойчивую подгонку меньше, чем аппроксимация методом наименьших квадратов.

Входные параметры

свернуть все

Данные предиктора, заданные как n -by p числовая матрица. Строки X соответствуют наблюдениям, а столбцы соответствуют переменным предиктора. X должно иметь одинаковое число строк как y.

По умолчанию, robustfit добавляет в модель постоянный член, если вы явным образом не удалите его, задав const как 'off'. Так, не включать столбец 1с в X.

Типы данных: single | double

Данные отклика, заданные как n-на-1 числовой вектор. Строки y соответствуют различным наблюдениям. y должно иметь одинаковое число строк как X.

Типы данных: single | double

Функция робастного веса, заданная как имя функции веса, описанной в следующей таблице, или указателя на функцию. robustfit использует соответствующую константу настройки по умолчанию, если иное не задано tune.

Функция весаОписаниеКонстанта настройки по умолчанию
'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
'bisquare'w = (abs(r)<1) .* (1 - r.^2).^2 (также называемый biweight)4.685
'cauchy'w = 1 ./ (1 + r.^2)2.385
'fair'w = 1 ./ (1 + abs(r))1.400
'huber'w = 1 ./ max(1, abs(r))1.345
'logistic'w = tanh(r) ./ r1.205
'ols'Обычные наименьшие квадраты (без функции взвешивания)Ничего
'talwar'w = 1 * (abs(r)<1)2.795
'welsch'w = exp(-(r.^2))2.985
указатель на функциюПользовательская функция веса, которая принимает вектор r масштабированных невязок и возвращает вектор весов того же размера, что и r1

Значение, r в весовых функциях,

r = resid/(tune*s*sqrt(1–h)),

где

  • resid - вектор невязок от предыдущей итерации.

  • tune - константа настройки.

  • h - вектор значений рычага от аппроксимации методом наименьших квадратов.

  • s - оценка стандартного отклонения термина ошибки, заданная в s = MAD/0.6745.

MAD - медианное абсолютное отклонение невязок от их медианы. Константа 0,6745 делает оценку объективной для нормального распределения. Если X имеет p столбцов, программа исключает наименьшие p абсолютные отклонения при вычислении медианы.

Типы данных: char | string | function handle

Константа настройки, заданная как положительная скалярная величина. Если вы не устанавливаете tune, robustfit использует соответствующую настройочную константу по умолчанию для каждой весовой функции (см. таблицу в wfun).

Константы настройки по умолчанию встроенных функций веса дают оценки коэффициентов, которые примерно 95% так же статистически эффективны, как и обычные оценки методом наименьших квадратов, при условии, что ответ имеет нормальное распределение без выбросов. Уменьшение константы настройки увеличивает понижающий вес, присвоенный большим невязкам; увеличение константы настройки уменьшает понижающий вес, присвоенный большим невязкам.

Типы данных: single | double

Индикатор для постоянного термина в подгонке, заданный как 'on' или 'off'. Если const является 'on', затем robustfit добавляет первый столбец 1s к матрице предиктора X, и выходные b становится вектором (p + 1) -на-1. Если const является 'off', затем X остается неизменным и b является вектором p -by-1.

Типы данных: char | string

Выходные аргументы

свернуть все

Оценки коэффициентов для устойчивой многофакторной линейной регрессии, возвращенные как числовой вектор. b является вектором p -by-1, где p - количество предикторов в X.

По умолчанию, robustfit добавляет в модель постоянный член, если вы явным образом не удалите его, задав const как 'off'.

Моделируйте статистику, возвращайте как структуру. Следующая таблица описывает поля структуры диагностической статистики от устойчивой регрессии.

ОбластьОписание
ols_sОценка Сигмы (корневая средняя квадратичная невязка) из обыкновенных наименьших квадратов
robust_sУстойчивая оценка сигмы
mad_sОценка сигмы, вычисленная с использованием медианного абсолютного отклонения невязок от их медианы; используется для масштабирования невязок во время итерационного подбора кривой
sОкончательная оценка сигмы, самой большой между robust_s и взвешенное среднее значение ols_s и robust_s
residНевязки, наблюдаемые минус установленные значения (см. «Необработанные невязки»)
rstudНевязки Studentized, невязки, разделенные на независимую оценку остаточного стандартного отклонения (см. Невязки Studentized),
seСтандартная ошибка оцененного значения коэффициента b
covbОценочная ковариационная матрица для оценок коэффициентов
coeffcorrПредполагаемая корреляция оценок коэффициентов
tt -статистический для каждого коэффициента, чтобы проверить нулевую гипотезу, что соответствующий коэффициент равен нулю против альтернативы, что он отличается от нуля, учитывая другие предикторы в модели. Обратите внимание, что t = b/ se.
pp -values для t -statistic критерия гипотезы, что соответствующий коэффициент равен нулю или нет
wВектор весов для устойчивой подгонки
RR коэффициент в QR-разложении X
dfeСтепени свободы для ошибки (невязки), равные количеству наблюдений минус количество оцененных коэффициентов
hВектор значений рычага для аппроксимации методом наименьших квадратов

Подробнее о

свернуть все

Рычаги

Рычаг является мерой эффекта конкретного наблюдения на регрессионные предсказания из-за положения этого наблюдения в пространстве входов.

Рычаги наблюдения i являются значением <reservedrangesplaceholder4> <reservedrangesplaceholder3> термина диагонали <reservedrangesplaceholder5> th матрицы шляпы H. Матричная H шляпы задана в терминах матрицы данных X:

H = X (XTX)–1XT.

Матрица шляпы также известна как проекционная матрица, потому что она проецирует вектор наблюдений y на вектор предсказаний y^, таким образом надев «шляпу» на y.

Поскольку сумма значений рычага p (количество коэффициентов в регрессионой модели), i наблюдения может рассматриваться как выбросы, если его рычаг существенно превышает p/ n, где n - количество наблюдений.

Для получения дополнительной информации смотрите Hat Matrix и Leverage.

Совет

  • robustfit лечит NaN значения в X или y как отсутствующие значения. robustfit опускает наблюдения с отсутствующими значениями из устойчивой подгонки.

Алгоритмы

  • robustfit использует итерационно повторно взвешенные наименьшие квадраты, чтобы вычислить коэффициенты b. Область входа wfun задает веса.

  • robustfit оценивает дисперсионно-ковариационную матрицу оценок коэффициентов stats.covb использование формулы inv(X'*X)*stats.s^2. Эта оценка генерирует стандартную ошибку stats.se и корреляционные stats.coeffcorr.

  • В линейной модели наблюдаемые значения y и их невязки являются случайными переменными. Невязки имеют нормальные распределения с нулевым средним, но с различными отклонениями при разных значениях предикторов. Чтобы поставить невязки в сопоставимой шкале, robustfit «Изучает» невязки. То есть, robustfit делит невязки на оценку их стандартного отклонения, которое не зависит от их значения. Исследуемые невязки имеют t-искривления с известными степенями свободы .robustfit возвращает Студеные невязки в stats.rstud.

Альтернативная функциональность

robustfit полезно, когда вам просто нужны выходные аргументы функции или когда вы хотите повторить подбор кривой модели несколько раз в цикле. Если вам нужно исследовать устойчивую подобранную регрессионую модель дальше, создайте объект линейной регрессионой модели LinearModel при помощи fitlm. Установите значение для аргумента пары "имя-значение" 'RobustOpts' на 'on'.

Ссылки

[1] DuMouchel, W. H., and F. L. O'Brien. «Интеграция робастной опции в окружение нескольких регрессионных вычислений». Информатика и статистика: материалы 21-го симпозиума по интерфейсам. Александрия, VA: Американская статистическая ассоциация, 1989.

[2] Holland, P. W., and R. E. Welsch. Робастная регрессия с использованием итерационно переоцененных методом наименьших квадратов. Коммуникации в статистике: теория и методы, A6, 1977, с. 813-827.

[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.

[4] Стрит, Дж. О., Р. Дж. Кэрролл и Д. Рупперт. «Примечание по вычислению надежных оценок регрессии через итерационно переоцененные наименьшие квадраты». Американский статистик. Том 42, 1988, стр. 152-154.

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте