exponenta event banner

Сравнение методов надежной регрессии

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

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

Имея достаточно доказательств, вы можете удалить влиятельные отклонения из данных. Если удаление невозможно, можно использовать методы регрессии, устойчивые к отклонениям.

Моделирование данных

Создание случайной выборки из 100 откликов из линейной модели

yt = 1 + 2xt + αt

где:

  • x - вектор равномерно разнесенных значений от 0 до 2.

  • εt∼N (0,0,52).

rng('default');
n = 100;
x = linspace(0,2,n)';
b0 = 1;
b1 = 2;
sigma = 0.5;
e = randn(n,1);
y = b0 + b1*x + sigma*e;

Создание влиятельных отклонений путем раздувания всех ответов, соответствующих x < 0,25, в 3 раза.

y(x < 0.25) = y(x < 0.25)*3;

Постройте график данных. Сохраните график для дальнейших графиков.

figure;
plot(x,y,'o');
h = gca;
xlim = h.XLim';
hl = legend('Data');
xlabel('x');
ylabel('y');
title('Regression Techniques Comparison')
hold on;

Figure contains an axes. The axes with title Regression Techniques Comparison contains an object of type line. This object represents Data.

Оценить линейную модель

Оцените коэффициенты и дисперсию ошибок, используя простую линейную регрессию. Постройте график линии регрессии.

LSMdl = fitlm(x,y)
LSMdl = 
Linear regression model:
    y ~ 1 + x1

Estimated Coefficients:
                   Estimate      SE       tStat       pValue  
                   ________    _______    ______    __________

    (Intercept)     2.6814     0.28433    9.4304    2.0859e-15
    x1             0.78974     0.24562    3.2153     0.0017653


Number of observations: 100, Error degrees of freedom: 98
Root Mean Squared Error: 1.43
R-squared: 0.0954,  Adjusted R-Squared: 0.0862
F-statistic vs. constant model: 10.3, p-value = 0.00177
plot(xlim,[ones(2,1) xlim]*LSMdl.Coefficients.Estimate,'LineWidth',2);
hl.String{2} = 'Least Squares';

Figure contains an axes. The axes with title Regression Techniques Comparison contains 2 objects of type line. These objects represent Data, Least Squares.

LSMdl является встроенным LinearModel объект модели. Пересечение и наклон, по-видимому, соответственно выше и ниже, чем они должны быть. Линия регрессии может сделать плохие прогнозы для любых x < 1 и x > 1.6.

Оценка байесовской модели линейной регрессии с диффузным предварительным распределением

Создайте байесовскую модель линейной регрессии с диффузным соединением до коэффициентов регрессии и дисперсии ошибок. Укажите один предиктор для модели.

PriorDiffuseMdl = bayeslm(1);

PriorDiffuseMdl является diffuseblm объект модели, характеризующий совместное предварительное распределение.

Оцените заднюю часть байесовской модели линейной регрессии. Постройте график линии регрессии.

PosteriorDiffuseMdl = estimate(PriorDiffuseMdl,x,y);
Method: Analytic posterior distributions
Number of observations: 100
Number of predictors:   2
 
           |  Mean     Std         CI95        Positive      Distribution     
------------------------------------------------------------------------------
 Intercept | 2.6814  0.2873  [ 2.117,  3.246]    1.000   t (2.68, 0.28^2, 98) 
 Beta      | 0.7897  0.2482  [ 0.302,  1.277]    0.999   t (0.79, 0.25^2, 98) 
 Sigma2    | 2.0943  0.3055  [ 1.580,  2.773]    1.000   IG(49.00, 0.0099)    
 
plot(xlim,[ones(2,1) xlim]*PosteriorDiffuseMdl.Mu,'--','LineWidth',2);
hl.String{3} = 'Bayesian Diffuse';

Figure contains an axes. The axes with title Regression Techniques Comparison contains 3 objects of type line. These objects represent Data, Least Squares, Bayesian Diffuse.

PosteriorDiffuseMdl является conjugateblm объект модели, характеризующий совместное апостериорное распределение параметров линейной модели. Оценки байесовской модели линейной регрессии с диффузным предшествующим уровнем почти равны оценкам простой модели линейной регрессии. Обе модели представляют наивный подход к влиятельным отклонениям, то есть методы относятся к отклонениям, как и любое другое наблюдение.

Оценка регрессионной модели с ошибками ARIMA

Создание регрессионной модели с ошибками ARIMA. Укажите, что ошибки следуют за распределением t с 3 степенями свободы, но без запаздывающих членов. Эта спецификация фактически является регрессионной моделью с t распределенными ошибками.

regMdl = regARIMA(0,0,0);
regMdl.Distribution = struct('Name','t','DoF',3);

regMdl является regARIMA объект модели. Это шаблон для оценки.

Оценка регрессионной модели с ошибками ARIMA. Постройте график линии регрессии.

estRegMdl = estimate(regMdl,y,'X',x);
 
    Regression with ARMA(0,0) Error Model (t Distribution):
 
                  Value     StandardError    TStatistic      PValue  
                 _______    _____________    __________    __________

    Intercept     1.4613         0.154         9.4892       2.328e-21
    Beta(1)       1.6531       0.12939         12.776      2.2246e-37
    Variance     0.93116        0.1716         5.4263      5.7546e-08
    DoF                3             0            Inf               0
plot(xlim,[ones(2,1) xlim]*[estRegMdl.Intercept; estRegMdl.Beta],...
    'LineWidth',2);
hl.String{4} = 'regARIMA';

Figure contains an axes. The axes with title Regression Techniques Comparison contains 4 objects of type line. These objects represent Data, Least Squares, Bayesian Diffuse, regARIMA.

estRegMdl является regARIMA объект модели, содержащий результаты оценки. Поскольку распределение t является более диффузным, линия регрессии приписывает больше изменчивости влиятельным отклонениям, чем другим наблюдениям. Следовательно, линия регрессии, по-видимому, является лучшей прогностической моделью, чем другие модели.

Реализация квантовой регрессии с использованием пакета деревьев регрессии

Вырастите мешок из 100 регрессионных деревьев. Укажите 20 для минимального размера листа.

QRMdl = TreeBagger(100,x,y,'Method','regression','MinLeafSize',20);

QRMdl является встроенным TreeBagger объект модели.

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

qrPred = quantilePredict(QRMdl,x);
plot(x,qrPred,'LineWidth',2);
hl.String{5} = 'Quantile';
hold off;

Figure contains an axes. The axes with title Regression Techniques Comparison contains 5 objects of type line. These objects represent Data, Least Squares, Bayesian Diffuse, regARIMA, Quantile.

Линия регрессии, по-видимому, слегка зависит от отклонений в начале выборки, но затем быстро следует regARIMA линия модели.

Можно настроить поведение линии, указав различные значения для MinLeafSize когда вы тренируете мешок регрессионных деревьев. Ниже MinLeafSize значения имеют тенденцию более точно следовать данным на графике.

Внедрение надежной байесовской линейной регрессии

Рассмотрим байесовскую модель линейной регрессии, содержащую один предиктор, t распределенную дисперсию возмущений с профилированным параметром степеней свободы Давайте:

  • λj∼IG (в/2,2/в).

  • εj'λj∼N (0, λ jstart2)

  • f (β, start2) ∝1σ2

Эти допущения подразумевают:

  • εj∼t (0, start2,

  • λj'εj∼IG (

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

Укажите сетку значений для

  • 1 соответствует распределению Коши.

  • 2.1 означает, что среднее хорошо определено.

  • 4.1 означает, что отклонение четко определено.

  • 100 означает, что распределение приблизительно нормальное.

nu = [0.01 0.1 1 2.1 5 10 100];
numNu = numel(nu);

Для этой задачи семплер Гиббса хорошо подходит для оценки коэффициентов, поскольку можно смоделировать параметры байесовской модели линейной регрессии, обусловленной λ, а затем смоделировать λ из её условного распределения.

Реализовать этот образец Гиббса.

  1. Нарисуйте параметры из заднего распределения β, start2 | y, x, λ. Сдуйте наблюдения на λ, создайте диффузную предыдущую модель с двумя коэффициентами регрессии и нарисуйте набор параметров из заднего. Первый коэффициент регрессии соответствует перехвату, поэтому укажите, чтоbayeslm не включать один.

  2. Вычислить остатки.

  3. Вычертите значения из условного задника λ.

Для каждого значения в, запустить Гиббс пробоотборник для 20000 итераций и применить период горения 5000. Предварительно распределить для задних розыгрышей и инициализировать λ к вектору единиц.

rng(1);
m = 20000;
burnin = 5000;
lambda = ones(n,m + 1,numNu); % Preallocation
estBeta = zeros(2,m + 1,numNu);
estSigma2 = zeros(1,m + 1,numNu);

% Create diffuse prior model.
PriorMdl = bayeslm(2,'Model','diffuse','Intercept',false);

for p = 1:numNu
    for j = 1:m
        % Scale observations.
        yDef = y./sqrt(lambda(:,j,p)); 
        xDef = [ones(n,1) x]./sqrt(lambda(:,j,p));
        
        % Simulate observations from conditional posterior of beta and
        % sigma2 given lambda and the data.
        [estBeta(:,j + 1,p),estSigma2(1,j + 1,p)] = simulate(PriorMdl,xDef,yDef);
        
        % Estimate residuals.
        ep = y - [ones(n,1) x]*estBeta(:,j + 1,p);
        
        % Specify shape and scale using conditional posterior of lambda
        % given beta, sigma2, and the data
        sp = (nu(p) + 1)/2;
        sc =  2./(nu(p) + ep.^2/estSigma2(1,j + 1,p));
        
        % Draw from conditional posterior of lambda given beta, sigma2, 
        % and the data
        lambda(:,j + 1,p) = 1./gamrnd(sp,sc);
    end
end

Оцените задние средства для β, start2 и λ.

postEstBeta = squeeze(mean(estBeta(:,(burnin+1):end,:),2));
postLambda = squeeze(mean(lambda(:,(burnin+1):end,:),2));

Постройте график данных и регрессионных линий для каждого,

figure;
plot(x,y,'o');
h = gca;
xlim = h.XLim';
ylim = h.YLim;
hl = legend('Data');
hold on;
for p = 1:numNu;
    plotY = [ones(2,1) xlim]*postEstBeta(:,p);
    plot(xlim,plotY,'LineWidth',2);
    hl.String{p+1} = sprintf('nu = %f',nu(p));
end
xlabel('x');
ylabel('y');
title('Robust Bayesian Linear Regression')

Figure contains an axes. The axes with title Robust Bayesian Linear Regression contains 8 objects of type line. These objects represent Data, nu = 0.010000, nu = 0.100000, nu = 1.000000, nu = 2.100000, nu = 5.000000, nu = 10.000000, nu = 100.000000.

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

См. также

Функции

Объекты

Связанные темы