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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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-by-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'Обычные наименьшие квадраты (никакая функция взвешивания)'none'
'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 добавляет первый столбец 1 с к матрице предиктора X, и выход b становится (p + 1)-by-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 - значения для t - статистическая величина теста гипотезы, который соответствующий коэффициент равен нулю или нет
wВектор из весов для устойчивой подгонки
RR включите разложение QR X
dfeСтепени свободы для ошибки (остаточные значения), равняйтесь количеству наблюдений минус количество предполагаемых коэффициентов
hВектор из значений рычагов для метода наименьших квадратов

Больше о

свернуть все

Рычаги

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

Рычаги наблюдения, i является значением i th диагональ, называют h ii матрицы шляпы H. Матрица шляпы H задана в терминах матрицы данных X:

H = X (XTX–1XT.

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

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

Для получения дополнительной информации смотрите Матрицу Шляпы и Рычаги.

Советы

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

Алгоритмы

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

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

  • В линейной модели, наблюдаемых величинах y и их остаточные значения являются случайными переменными. Остаточные значения имеют нормальные распределения с нулевым средним значением, но с различными отклонениями в различных значениях предикторов. Помещать остаточные значения сопоставимой шкалы, robustfit “Studentizes” остаточные значения. Таким образом, robustfit делит остаточные значения на оценку их стандартного отклонения, которое независимо от их значения. Остаточные значения Studentized имеют t - распределения с известными степенями свободы. robustfit возвращает остаточные значения Studentized в stats.rstud.

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

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

Ссылки

[1] DuMouchel, W. H. и Ф. Л. О'Брайен. “Интегрируя Устойчивую Опцию в Вычислительную среду Регрессии кратного”. Информатика и Статистика: Продолжения 21-го Симпозиума по Интерфейсу. Александрия, ВА: американская Статистическая Ассоциация, 1989.

[2] Голландия, P. W. и Р. Э. Велш. “Устойчивая Регрессия Используя Итеративно Перевзвешенные Наименьшие квадраты”. Коммуникации в Статистике: Теория и Методы, A6, 1977, стр 813–827.

[3] Хубер, P. J. Устойчивая статистика. Хобокен, NJ: John Wiley & Sons, Inc., 1981.

[4] Улица, J. O. Р. Дж. Кэрролл и Д. Рапперт. “Примечание по Вычислению Устойчивых Оценок Регрессии через Итеративно Перевзвешенные Наименьшие квадраты”. Американский Статистик. Издание 42, 1988, стр 152–154.

Представлено до R2006a