stepwisefit

Подходящая модель линейной регрессии использование ступенчатой регрессии

Описание

пример

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

пример

b = stepwisefit(X,y,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать непостоянную первоначальную модель или максимальное количество шагов это stepwisefit может взять.

пример

[b,se,pval] = stepwisefit(___) возвращается коэффициент оценивает b, стандартные погрешности se, и p - значения pval использование любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

[b,se,pval,finalmodel,stats] = stepwisefit(___) также возвращает спецификацию переменных в итоговой модели finalmodel регрессии, и статистика stats об итоговой модели.

пример

[b,se,pval,finalmodel,stats,nextstep,history] = stepwisefit(___) также возвращает рекомендуемый следующий шаг nextstep и информация history обо всех сделанных шагах.

Примеры

свернуть все

Выполните основную ступенчатую регрессию и получите содействующие оценки.

Загрузите hald набор данных.

load hald
whos % Check variables loaded in workspace
  Name              Size            Bytes  Class     Attributes

  Description      22x58             2552  char                
  hald             13x5               520  double              
  heat             13x1               104  double              
  ingredients      13x4               416  double              

Этот набор данных содержит наблюдения за теплом, развитым во время цемента, укрепляющегося для различных смесей четырех цементных компонентов. Переменной отклика является heat. Матричный ingredients содержит четыре столбца предикторов.

Запустите stepwisefit начало с только постоянного члена в модели и использование допусков входа и выхода по умолчанию 0,05 и 0.10, соответственно.

b = stepwisefit(ingredients,heat)
Initial columns included: none
Step 1, added column 4, p=0.000576232
Step 2, added column 1, p=1.10528e-06
Final columns included:  1 4 
    {'Coeff'  }    {'Std.Err.'}    {'Status'}    {'P'         }
    {[ 1.4400]}    {[  0.1384]}    {'In'    }    {[1.1053e-06]}
    {[ 0.4161]}    {[  0.1856]}    {'Out'   }    {[    0.0517]}
    {[-0.4100]}    {[  0.1992]}    {'Out'   }    {[    0.0697]}
    {[-0.6140]}    {[  0.0486]}    {'In'    }    {[1.8149e-07]}
b = 4×1

    1.4400
    0.4161
   -0.4100
   -0.6140

stepwisefit отобразитесь показывает этому столбцы 1 и 4 включены в итоговую модель. Выход b включает оценки для всех столбцов, даже те, которые не появляются в итоговой модели. stepwisefit вычисляет оценку для столбца 2 (или 3) путем подбирания модели, состоящей из итоговой модели плюс столбец 2 (или 3).

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

load carsmall
whos
  Name                Size            Bytes  Class     Attributes

  Acceleration      100x1               800  double              
  Cylinders         100x1               800  double              
  Displacement      100x1               800  double              
  Horsepower        100x1               800  double              
  MPG               100x1               800  double              
  Mfg               100x13             2600  char                
  Model             100x33             6600  char                
  Model_Year        100x1               800  double              
  Origin            100x7              1400  char                
  Weight            100x1               800  double              

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

X = [Acceleration Cylinders Displacement Horsepower];
y = MPG;
b4_default = stepwisefit(X,y) % Stepwise regression with default arguments
Initial columns included: none
Step 1, added column 2, p=1.59001e-25
Step 2, added column 4, p=0.00364266
Step 3, added column 1, p=0.0161414
Final columns included:  1 2 4 
    {'Coeff'  }    {'Std.Err.'}    {'Status'}    {'P'         }
    {[-0.4517]}    {[  0.1842]}    {'In'    }    {[    0.0161]}
    {[-2.6407]}    {[  0.4823]}    {'In'    }    {[4.0003e-07]}
    {[ 0.0148]}    {[  0.0157]}    {'Out'   }    {[    0.3472]}
    {[-0.0772]}    {[  0.0204]}    {'In'    }    {[2.6922e-04]}
b4_default = 4×1

   -0.4517
   -2.6407
    0.0148
   -0.0772

Термин Displacement никогда не вводит модель. Определите, коррелируется ли это высоко с другими тремя терминами путем вычисления термина корреляционная матрица.

corrcoef(X,'Rows','complete') % To exclude rows with missing values from calculation
ans = 4×4

    1.0000   -0.6438   -0.6968   -0.6968
   -0.6438    1.0000    0.9517    0.8622
   -0.6968    0.9517    1.0000    0.9134
   -0.6968    0.8622    0.9134    1.0000

Третья строка корреляционной матрицы соответствует Displacement. Этот термин высоко коррелируется с другими тремя терминами, особенно Cylinders (0.95) и Horsepower(0.91 ).

Переопределите входную матрицу X включать Weight. Задайте первоначальную модель, содержащую термины Displacement и Horsepower при помощи 'InModel' аргумент пары "имя-значение".

X = [Acceleration Cylinders Displacement Horsepower Weight];
inmodel = [false false true true false];
b5_inmodel = stepwisefit(X,y,'InModel',inmodel)
Initial columns included: 3 4 
Step 1, added column 5, p=1.06457e-06
Step 2, added column 2, p=0.00410234
Final columns included:  2 3 4 5 
    {'Coeff'  }    {'Std.Err.'}    {'Status'}    {'P'         }
    {[-0.0912]}    {[  0.2032]}    {'Out'   }    {[    0.6548]}
    {[-2.3223]}    {[  0.7879]}    {'In'    }    {[    0.0041]}
    {[ 0.0252]}    {[  0.0145]}    {'In'    }    {[    0.0862]}
    {[-0.0449]}    {[  0.0231]}    {'In'    }    {[    0.0555]}
    {[-0.0050]}    {[  0.0012]}    {'In'    }    {[1.0851e-04]}
b5_inmodel = 5×1

   -0.0912
   -2.3223
    0.0252
   -0.0449
   -0.0050

Итоговая модель состоит из терминов 2–5. Однако Displacement и Horsepower оценки имеют p- значения, больше, чем 0.05 в итоговой модели. Можно настроить пошаговый алгоритм, чтобы вести себя более консервативно при помощи 'PRemove' аргумент пары "имя-значение". Например, установка 'PRemove' к 0.05 (вместо 0.1 по умолчанию) результаты в меньшей итоговой модели только с двумя терминами, каждом с a p- значение меньше, чем 0.05.

b5_inmodel_premove = stepwisefit(X,y,'InModel',inmodel,'PRemove',0.05)
Initial columns included: 3 4 
Step 1, added column 5, p=1.06457e-06
Step 2, added column 2, p=0.00410234
Step 3, removed column 3, p=0.0862131
Step 4, removed column 4, p=0.239239
Final columns included:  2 5 
    {'Coeff'  }    {'Std.Err.'}    {'Status'}    {'P'         }
    {[-0.0115]}    {[  0.1656]}    {'Out'   }    {[    0.9449]}
    {[-1.6037]}    {[  0.5146]}    {'In'    }    {[    0.0025]}
    {[ 0.0101]}    {[  0.0124]}    {'Out'   }    {[    0.4186]}
    {[-0.0234]}    {[  0.0198]}    {'Out'   }    {[    0.2392]}
    {[-0.0055]}    {[  0.0011]}    {'In'    }    {[3.9038e-06]}
b5_inmodel_premove = 5×1

   -0.0115
   -1.6037
    0.0101
   -0.0234
   -0.0055

Сосредоточьтесь и масштабируйтесь, каждый столбец (вычислите z-баллы) прежде, чем соответствовать при помощи 'Scale' аргумент пары "имя-значение". Масштабирование не изменяет выбранную модель, знаки содействующих оценок или их pЗначения. Однако масштабирование действительно масштабирует содействующие оценки.

b5_inmodel_premove_scale = stepwisefit(X,y,'InModel',inmodel,'PRemove',0.05,'Scale','on')
Initial columns included: 3 4 
Step 1, added column 5, p=1.06457e-06
Step 2, added column 2, p=0.00410234
Step 3, removed column 3, p=0.0862131
Step 4, removed column 4, p=0.239239
Final columns included:  2 5 
    {'Coeff'  }    {'Std.Err.'}    {'Status'}    {'P'         }
    {[-0.0370]}    {[  0.5339]}    {'Out'   }    {[    0.9449]}
    {[-2.8136]}    {[  0.9028]}    {'In'    }    {[    0.0025]}
    {[ 1.1155]}    {[  1.3726]}    {'Out'   }    {[    0.4186]}
    {[-1.0617]}    {[  0.8961]}    {'Out'   }    {[    0.2392]}
    {[-4.4406]}    {[  0.9028]}    {'In'    }    {[3.9038e-06]}
b5_inmodel_premove_scale = 5×1

   -0.0370
   -2.8136
    1.1155
   -1.0617
   -4.4406

Обычно, вы масштабируетесь, чтобы сравнить оценки терминов, которые измеряются в различных шкалах, таких как Horsepower и Weight. В этом случае, увеличение Horsepower одним стандартным отклонением приводит к ожидаемому отбрасыванию 1 в MPG, тогда как увеличение Weight одним стандартным отклонением приводит к ожидаемому отбрасыванию 4.4 в MPG.

Загрузите imports-85 набор данных. Этот набор данных содержит характеристики автомобилей, импортированных в 1 985. Для списка всех имен столбцов смотрите переменную Description в рабочей области или типе Description в командной строке.

load imports-85
whos 
  Name               Size            Bytes  Class     Attributes

  Description        9x79             1422  char                
  X                205x26            42640  double              

Выберите подмножество непрерывных переменных, чтобы использовать в ступенчатой регрессии, состоя из переменных предикторов engine-size, bore, stroke'CompressionRatio' , horsepower, peak-rpm, city-mpg, и highway-mpg, и переменная отклика price.

varnames = ["engine-size","bore","stroke","compression-ratio","horsepower","peak-rpm","city-mpg","highway-mpg","price"]; % Variable names to use in stepwise regression
dataTbl = array2table(X(:,8:16),'VariableNames',varnames); % Create data table with variable names
Xstepw = dataTbl{:,{'engine-size','bore','stroke','compression-ratio','horsepower','peak-rpm','city-mpg','highway-mpg'}}; % Input matrix
ystepw = dataTbl{:,{'price'}}; % Response vector

Запустите stepwisefit из переменной price на других восьми переменных, сначала с постоянной первоначальной моделью по умолчанию и затем с первоначальной моделью включая highway-mpg. Не используйте отображение информации о шаге.

[betahat_def,se_def,pval_def,finalmodel_def,stats_def] = stepwisefit(Xstepw,ystepw,'Display',"off"); 
inmodel = [false false false false false false false true]; 
[betahat_in,se_in,pval_in,finalmodel_in,stats_in] = stepwisefit(Xstepw,ystepw,'InModel',inmodel,'Display','off');

Смотрите итоговые модели, возвращенные stepwisefit.

finalmodel_def
finalmodel_def = 1x8 logical array

   1   0   1   1   0   1   1   0

finalmodel_in
finalmodel_in = 1x8 logical array

   1   0   1   1   0   1   0   1

Модель по умолчанию пропускает highway-mpg (назовите 8) из модели и включает city-mpg (назовите 7) вместо этого. Сравните среднеквадратические ошибки (RMS) этих двух итоговых моделей.

stats_def.rmse
ans = 3.3033e+03
stats_in.rmse
ans = 3.3324e+03

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

betahat_def % Term estimates
betahat_def = 8×1
103 ×

    0.1559
   -0.2242
   -2.8578
    0.3904
    0.0222
    0.0024
   -0.2414
    0.0793

stats_def.intercept % Intercept estimate
ans = -7.3506e+03

Получите историю запуска по умолчанию stepwisefit и рекомендуемый следующий шаг. Не используйте отображение информации о шаге.

[~,~,~,~,~,nextstep_def,history_def]=stepwisefit(Xstepw,ystepw,'Display',"off"); 
nextstep_def
nextstep_def = 0

Никакие дальнейшие шаги не рекомендуются (nextstep_def 0).

history_def.('in') 
ans = 7x8 logical array

   1   0   0   0   0   0   0   0
   1   0   0   0   1   0   0   0
   1   0   0   1   1   0   0   0
   1   0   1   1   1   0   0   0
   1   0   1   1   1   1   0   0
   1   0   1   1   1   1   1   0
   1   0   1   1   0   1   1   0

Алгоритм выполняет в общей сложности семь шагов. Выход показывает тот engine-size (назовите 1) добавляется на шаге 1, horsepower (назовите 5) добавляется на шаге 2, и так далее.

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

свернуть все

Переменные предикторы в виде n-by-p числовая матрица, где n является количеством наблюдений и p, являются количеством переменных предикторов. Каждый столбец X представляет одну переменную, и каждая строка представляет одно наблюдение.

stepwisefit всегда включает постоянный член в модели. Поэтому не включайте столбец 1 с в X.

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

Переменная отклика в виде n-by-1 числовой или логический вектор, где n является количеством наблюдений. Каждая запись в y ответ для соответствующей строки X.

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

Примечание

stepwisefit обработки NaN значения в любом X или y как пропавшие без вести и игнорирует все строки, содержащие эти значения.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'PEnter',0.10,'PRemove',0.15,'MaxIter',8 сообщает stepwisefit использовать допуски входа и выхода 0.10 и 0.15, соответственно, и взять максимум 8 шаги.

Условия для первоначальной модели в виде разделенной запятой пары, состоящей из 'InModel' и логическое определение вектора называет, чтобы включать в первоначальную модель. Значение по умолчанию не должно включать термины.

Пример: 'InModel',[true false false true]

Типы данных: логический

Допуск к добавлению терминов к модели в виде разделенной запятой пары, состоящей из 'PEnter' и положительная скалярная величина, задающая максимальный p - значение для термина, который будет добавлен. Значение по умолчанию 0.05.

Пример: 'PEnter',0.10

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

Допуск к удалению терминов из модели в виде разделенной запятой пары, состоящей of 'PRemove' и положительная скалярная величина, задающая минимальный p - значение для термина, который будет удален. Значением по умолчанию является максимум PEnter и 0.10.

Примечание

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

Пример: 'PRemove',0.15

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

Индикатор для отображения информации о шаге в виде разделенной запятой пары, состоящей из 'Display' и 'on' или 'off'.

  • 'on' информация об отображениях о каждом шаге в Командном окне (значение по умолчанию).

  • 'off' не использует отображение.

Пример: 'Display','off'

Максимальное количество шагов в виде разделенной запятой пары, состоящей из 'MaxIter' и положительное целое число или Inf (значение по умолчанию). Inf позволяет алгоритму запускаться, пока никакой один шаг не улучшает модель.

Пример: 'MaxIter',12

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

Условия, чтобы сохранить в их начальном состоянии в виде разделенной запятой пары, состоящей из 'Keep' и логический вектор. Значение true для термина, заданного, чтобы быть в (или из) начальные силы модели, которые называют, чтобы остаться в (или из) итоговая модель. Значение false поскольку термин не обеспечивает тот термин, чтобы остаться в (или из) итоговая модель. Значение по умолчанию не должно задавать термины, чтобы сохранить в их начальном состоянии.

Пример: 'Keep',[true true false false]

Типы данных: логический

Индикатор для центрирования и масштабирования терминов в виде разделенной запятой пары, состоящей из 'Scale' и 'off' или 'on'.

  • 'off' не сосредотачивает и масштабирует термины (значение по умолчанию).

  • 'on' центры и шкалы каждый столбец X (вычисляет z - баллы) перед подбором кривой.

Пример: 'Scale','on'

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

свернуть все

Предполагаемые коэффициенты, возвращенные как числовой вектор, соответствующий терминам в X. stepwisefit функция вычисляет значения в b можно следующим образом:

  • Если термин включен в итоговую модель, то ее соответствующее значение в b оценка, следующая из того, чтобы подбирать итоговую модель.

  • Если термин исключен из итоговой модели, то ее соответствующее значение в b оценка, следующая из того, чтобы подбирать итоговую модель плюс тот термин.

Примечание

Чтобы получить полную спецификацию подобранной модели, вам также нужна предполагаемая точка пересечения в дополнение к b. Предполагаемая точка пересечения обеспечивается как поле в выходном аргументе stats. Для получения дополнительной информации см. stepwisefit Подобранную модель.

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

p-, возвращенные как числовой вектор, который следует из тестирования ли элементы b 0.

Итоговая модель, возвращенная как логический вектор с длиной, равняется количеству столбцов в X, указание, какие термины находятся в итоговой модели.

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

Поле Описание
source

Вектор символов 'stepwisefit'

dfe

Степени свободы для ошибки

df0

Степени свободы для регрессии

SStotal

Полная сумма квадратов ответа

SSresid

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

fstat

F- для тестирования итоговой модели по сравнению ни с какой моделью (означают только),

pval

p - значение F - статистическая величина

rmse

Среднеквадратическая ошибка

xr

Остаточные значения для терминов не в итоговой модели, вычисленной путем вычитания из каждого термина предсказанного ответа итоговой модели

yr

Остаточные значения для ответа с помощью предикторов в итоговой модели

B

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

SE

Стандартные погрешности для содействующих оценок

TSTAT

Статистика t для содействующих оценок

PVAL

p- для содействующих оценок

intercept

Предполагаемая точка пересечения

wasnan

Строки в данных, которые содержат NaN значения

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

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

Поле Описание
B

Матрица коэффициентов регрессии, где каждый столбец является одним шагом и каждой строкой, является одним вектором коэффициентов

rmse

Среднеквадратические ошибки для модели на каждом шаге

df0

Степени свободы для регрессии на каждом шаге

in

Логический массив, указывающий, какие предикторы находятся в модели на каждом шаге, где каждая строка является одним шагом и каждым столбцом, является одним предиктором

Больше о

свернуть все

stepwisefit Подобранная модель

Итоговый stepwisefit подобранная модель

y^=статистика.intercept+X(:, finalmodel)*b(finalmodel).

Здесь,

  • y^ предсказанный средний ответ.

  • stats.intercept предполагаемая точка пересечения.

  • X (:,finalmodel) входная матрица для терминов в итоговой модели.

  • b(finalmodel) вектор из содействующих оценок для терминов в итоговой модели.

Алгоритмы

Stepwise regression является методом для добавления терминов к и удаления терминов от полилинейного основанного на модели на их статистическом значении. Этот метод начинается с первоначальной модели и затем делает последовательные шаги, чтобы изменить модель путем добавления или удаления терминов. На каждом шаге p - значении F - статистическая величина вычисляется к тестовым моделям с и без потенциального термина. Если бы термин не находится в настоящее время в модели, нулевая гипотеза - то, что термин имел бы нулевой коэффициент, если добавлено к модели. Если существуют достаточные доказательства, чтобы отклонить нулевую гипотезу, термин добавляется к модели. С другой стороны, если термин находится в настоящее время в модели, нулевая гипотеза - то, что термин имеет нулевой коэффициент. Если существуют недостаточные доказательства, чтобы отклонить нулевую гипотезу, термин удален из модели. Метод продолжает можно следующим образом:

  1. Подбирайте первоначальную модель.

  2. Если какие-либо термины не в модели имеют p - значения меньше, чем допуск записи, добавьте тот с самым маленьким p - значение и повторите этот шаг. Например, примите, что первоначальная модель является постоянной моделью по умолчанию, и допуском записи является 0.05 по умолчанию. Алгоритм сначала подбирает все модели, состоящие из константы плюс другой термин, и идентифицирует термин, который имеет самый маленький p - значение, например, назовите 4. Если термин 4 p- меньше 0.05, затем назовите 4 добавляется к модели. Затем алгоритм выполняет поиск среди всех моделей, состоящих из постоянного, термина 4, и другой термин. Если термин не в модели имеет p - значение меньше, чем 0.05, термин с самым маленьким p - значение добавляется к модели, и процесс повторяется. Когда никакие дальнейшие термины не существуют, который может быть добавлен к модели, алгоритм переходит к шагу 3.

  3. Если какие-либо члены в модели имеют p - значения, больше, чем выходной допуск, удаляют тот с самым большим p - значение и переходят к шагу 2; в противном случае, конец.

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

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

  • Можно создать модель с помощью fitlm, и затем вручную настройте модель с помощью step, addTerms, и removeTerms.

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

  • Используйте stepwiseglm создать пошаговые обобщенные линейные модели (например, если вы имеете бинарную переменную отклика и хотите подбирать модель классификации).

Ссылки

[1] Драпировщик, Норман Р., и Гарри Смит. Прикладной Регрессионный анализ. Хобокен, NJ: Wiley-межнаука, 1998. стр 307–312.

Смотрите также

| | | |

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