Упорядочите регрессию Пуассона

В этом примере показано, как идентифицировать и удалить избыточные предикторы из обобщенной линейной модели.

Создайте данные с 20 предикторами и ответы Пуассона, использующие всего три из предикторов, плюс константа.

rng('default') % for reproducibility
X = randn(100,20);
mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1);
y = poissrnd(mu);

Создайте перекрестную подтвержденную регуляризацию лассо модели регрессии Пуассона данных.

[B,FitInfo] = lassoglm(X,y,'poisson','CV',10);

Исследуйте график перекрестной проверки видеть эффект Lambda параметр регуляризации.

lassoPlot(B,FitInfo,'plottype','CV');    
legend('show') % show legend

Figure contains an axes. The axes with title Cross-Validated Deviance of Lasso Fit contains 5 objects of type errorbar, line. These objects represent Deviance with Error Bars, LambdaMinDeviance, Lambda1SE.

Зеленая круговая и пунктирная линия определяет местоположение Lambda с минимальной ошибкой перекрестной проверки. Синяя круговая и пунктирная линия определяет местоположение точки с минимальной ошибкой перекрестной проверки плюс одно стандартное отклонение.

Найдите ненулевые коэффициенты модели, соответствующие двум идентифицированным точкам.

minpts = find(B(:,FitInfo.IndexMinDeviance))
minpts = 7×1

     3
     5
     6
    10
    11
    15
    16

min1pts = find(B(:,FitInfo.Index1SE))
min1pts = 3×1

     5
    10
    15

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

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

B(min1pts,FitInfo.Index1SE)
ans = 3×1

    0.2903
    0.0789
    0.2081

Значения коэффициентов, как ожидалось, меньше, чем исходный [0.4,0.2,0.3]. Ловите арканом работает "уменьшением", которое смещает коэффициенты предиктора к нулю.

Постоянный термин находится в FitInfo.Intercept вектор.

FitInfo.Intercept(FitInfo.Index1SE)
ans = 1.0879

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