exponenta event banner

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;

Вычислите надежные остатки регрессии, используя функцию веса бисквара для трех различных констант настройки. Константа настройки по умолчанию - 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-за-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'Обычные наименьшие квадраты (без весовой функции)Ничего
'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Оценка Sigma (среднеквадратичная ошибка корня) из обычных наименьших квадратов
robust_sНадежная оценка sigma
mad_sОценка сигмы, вычисленная с использованием медианного абсолютного отклонения остатков от их медианы; используется для масштабирования остатков во время итеративного фитинга
sОкончательная оценка сигмы, наибольшая между robust_s и средневзвешенное значение ols_s и robust_s
residОстатки, наблюдаемые минус подогнанные значения (см. Необработанные остатки)
rstudStudentized resentuals, остатки, разделенные на независимую оценку остаточного стандартного отклонения (см. Studentized Residuals)
seСтандартная погрешность расчетного значения коэффициента b
covbМатрица оценки ковариации для оценок коэффициентов
coeffcorrОценочная корреляция оценок коэффициентов
tt-статистика для каждого коэффициента, чтобы проверить нулевую гипотезу, что соответствующий коэффициент равен нулю против альтернативы, что он отличается от нуля, учитывая другие предикторы в модели. Обратите внимание, что t = b/se.
pp-значения для t-статистики теста гипотезы, что соответствующий коэффициент равен нулю или нет
wВектор весов для надежной посадки
RR коэффициент в QR разложении X
dfeСтепени свободы для ошибки (остатки), равные количеству наблюдений минус количество оцененных коэффициентов
hВектор значений рычагов для аппроксимации методом наименьших квадратов

Подробнее

свернуть все

Рычаги

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

Рычагом i наблюдения является значение i-го диагонального члена hii матрицы hat H. Матрица hat H определена в терминах матрицы данных X:

H = X (XTX) -1XT.

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

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

Дополнительные сведения см. в разделе Hat Matrix and Leverage.

Совет

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

Алгоритмы

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

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

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

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

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

Ссылки

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

[2] Холланд, П. У. и Р. Э. Уэлш. «Надежная регрессия с использованием итеративно повторно взвешенных наименьших квадратов». Сообщения в статистике: теория и методы, A6, 1977, стр. 813-827.

[3] Хубер, P. J. Rustive Statistics. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 1981.

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

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