fitlm

Подбирайте модель линейной регрессии

Описание

пример

mdl = fitlm(tbl) возвращает подгонку модели линейной регрессии к переменным в таблице или массиве набора данных tbl. По умолчанию, fitlm берет последнюю переменную в качестве переменной отклика.

пример

mdl = fitlm(X,y) возвращает модель линейной регрессии ответов y, соответствуйте к матрице данных X.

пример

mdl = fitlm(___,modelspec) задает спецификацию модели с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

mdl = fitlm(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать, какие переменные являются категориальными, выполняют устойчивую регрессию или используют веса наблюдения.

Примеры

свернуть все

Подбирайте модель линейной регрессии использование матричного набора входных данных.

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

load carsmall
X = [Weight,Horsepower,Acceleration];

Подбирайте модель линейной регрессии при помощи fitlm.

mdl = fitlm(X,MPG)
mdl = 
Linear regression model:
    y ~ 1 + x1 + x2 + x3

Estimated Coefficients:
                    Estimate        SE          tStat        pValue  
                   __________    _________    _________    __________

    (Intercept)        47.977       3.8785        12.37    4.8957e-21
    x1             -0.0065416    0.0011274      -5.8023    9.8742e-08
    x2              -0.042943     0.024313      -1.7663       0.08078
    x3              -0.011583      0.19333    -0.059913       0.95236


Number of observations: 93, Error degrees of freedom: 89
Root Mean Squared Error: 4.09
R-squared: 0.752,  Adjusted R-Squared: 0.744
F-statistic vs. constant model: 90, p-value = 7.38e-27

Отображение модели включает формулу модели, оцененные коэффициенты и итоговую статистику модели.

Формула модели в отображении, y ~ 1 + x1 + x2 + x3, соответствует y=β0+β1X1+β2X2+β3X3+ϵ.

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

mdl.Coefficients
ans=4×4 table
                    Estimate        SE          tStat        pValue  
                   __________    _________    _________    __________

    (Intercept)        47.977       3.8785        12.37    4.8957e-21
    x1             -0.0065416    0.0011274      -5.8023    9.8742e-08
    x2              -0.042943     0.024313      -1.7663       0.08078
    x3              -0.011583      0.19333    -0.059913       0.95236

Coefficient свойство включает эти столбцы:

  • Estimate — Коэффициент оценивает для каждого соответствующего члена в модели. Например, оценка для постоянного термина (intercept) 47.977.

  • SE — Стандартная погрешность коэффициентов.

  • tStatt-статистическая-величина для каждого коэффициента, чтобы протестировать нулевую гипотезу, что соответствующий коэффициент является нулем против альтернативы, что это отличается от нуля, учитывая другие предикторы в модели. Обратите внимание на то, что tStat = Estimate/SE. Например, t-статистическая-величина для прерывания является 47.977/3.8785 = 12.37.

  • pValuep-значение для t-статистической-величины теста гипотезы, который соответствующий коэффициент равен нулю или нет. Например, p-значение t-статистической-величины для x2 больше 0.05, таким образом, этот термин не является значительным на 5%-м уровне значения, учитывая другие члены в модели.

Итоговые статистические данные модели:

  • Number of observations — Количество строк без любого NaN значения. Например, Number of observations 93 потому что MPG вектор данных имеет шесть NaN значения и Horsepower вектор данных имеет один NaN значение для различного наблюдения, где количество строк в X и MPG 100.

  • Error degrees of freedomn p, где n является количеством наблюдений, и p является количеством коэффициентов в модели, включая прерывание. Например, модель имеет четыре предиктора, таким образом, Error degrees of freedom 93 – 4 = 89.

  • Root mean squared error — Квадратный корень из среднеквадратической ошибки, которая оценивает стандартное отклонение распределения ошибок.

  • R-squared и Adjusted R-squared — Коэффициент детерминации и настроенный коэффициент детерминации, соответственно. Например, R-squared значение предполагает, что модель объясняет приблизительно 75% изменчивости в переменной отклика MPG.

  • F-statistic vs. constant model — Протестируйте статистическую величину на F-тест на модели регрессии, которая тестирует, соответствует ли модель значительно лучше, чем вырожденная модель, состоящая только из постоянного термина.

  • p-valuep-значение для F-теста на модели. Например, модель является значительной с p-значением 7.3816e-27.

Можно найти эти статистические данные в свойствах модели (NumObservations, DFE, RMSE, и Rsquared) и при помощи anova функция.

anova(mdl,'summary')
ans=3×5 table
                SumSq     DF    MeanSq      F         pValue  
                ______    __    ______    ______    __________

    Total       6004.8    92    65.269                        
    Model         4516     3    1505.3    89.987    7.3816e-27
    Residual    1488.8    89    16.728                        

Загрузите выборочные данные.

load carsmall

Сохраните переменные в таблице.

tbl = table(Weight,Acceleration,MPG,'VariableNames',{'Weight','Acceleration','MPG'});

Отобразите первые пять строк таблицы.

tbl(1:5,:)
ans=5×3 table
    Weight    Acceleration    MPG
    ______    ____________    ___

     3504           12        18 
     3693         11.5        15 
     3436           11        18 
     3433           12        16 
     3449         10.5        17 

Подбирайте модель линейной регрессии для миль на галлон (MPG). Задайте формулу модели при помощи обозначения Уилкинсона.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 
Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared: 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

Модель 'MPG~Weight+Acceleration' в этом примере эквивалентно, чтобы установить спецификацию модели как 'linear'. Например,

lm2 = fitlm(tbl,'linear');

Если вы используете вектор символов для спецификации модели, и вы не задаете переменную отклика, то fitlm принимает последнюю переменную в tbl как переменная отклика и другие переменные как переменные предикторы.

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

Загрузите выборочные данные.

load carsmall

Сохраните переменные в таблице.

tbl = table(Weight,Acceleration,Model_Year,MPG,'VariableNames',{'Weight','Acceleration','Model_Year','MPG'});

Подбирайте модель линейной регрессии для миль на галлон (MPG) с весом и ускорением как переменные предикторы.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = 
Linear regression model:
    MPG ~ 1 + Weight + Acceleration

Estimated Coefficients:
                     Estimate         SE         tStat       pValue  
                    __________    __________    _______    __________

    (Intercept)         45.155        3.4659     13.028    1.6266e-22
    Weight          -0.0082475    0.00059836    -13.783    5.3165e-24
    Acceleration       0.19694       0.14743     1.3359       0.18493


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 4.12
R-squared: 0.743,  Adjusted R-Squared: 0.738
F-statistic vs. constant model: 132, p-value = 1.38e-27

P-значение 0,18493 указывает на тот Acceleration не оказывает значительное влияние на MPG.

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

tbl.Model_Year = categorical(tbl.Model_Year);
lm = fitlm(tbl,'MPG~Weight+Model_Year')
lm = 
Linear regression model:
    MPG ~ 1 + Weight + Model_Year

Estimated Coefficients:
                      Estimate         SE         tStat       pValue  
                     __________    __________    _______    __________

    (Intercept)           40.11        1.5418     26.016    1.2024e-43
    Weight           -0.0066475    0.00042802    -15.531    3.3639e-27
    Model_Year_76        1.9291       0.74761     2.5804      0.011488
    Model_Year_82        7.9093       0.84975     9.3078    7.8681e-15


Number of observations: 94, Error degrees of freedom: 90
Root Mean Squared Error: 2.92
R-squared: 0.873,  Adjusted R-Squared: 0.868
F-statistic vs. constant model: 206, p-value = 3.83e-40

Определение modelspec использование обозначения Уилкинсона позволяет вам обновить модель, не имея необходимость изменять матрицу проекта. fitlm использование только переменные, которые заданы в формуле. Это также создает необходимые две фиктивных переменные индикатора для категориальной переменной Model_Year.

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

Матрица условий для табличного входа

Если переменные модели находятся в таблице, то столбец 0s в матрице условий представляет положение переменной отклика.

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

load hospital

Сохраните переменные в таблице.

t = table(hospital.Sex,hospital.BloodPressure(:,1),hospital.Age,hospital.Smoker, ...
    'VariableNames',{'Sex','BloodPressure','Age','Smoker'});

Представляйте линейную модель 'BloodPressure ~ 1 + Sex + Age + Smoker' использование матрицы условий. Переменная отклика находится во втором столбце таблицы, таким образом, второй столбец матрицы условий должен быть столбцом 0s для переменной отклика.

T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
T = 4×4

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

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

mdl1 = fitlm(t,T)
mdl1 = 
Linear regression model:
    BloodPressure ~ 1 + Sex + Age + Smoker

Estimated Coefficients:
                   Estimate       SE        tStat        pValue  
                   ________    ________    ________    __________

    (Intercept)      116.14      2.6107      44.485    7.1287e-66
    Sex_Male       0.050106     0.98364    0.050939       0.95948
    Age            0.085276    0.066945      1.2738        0.2058
    Smoker_1           9.87      1.0346      9.5395    1.4516e-15


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 4.78
R-squared: 0.507,  Adjusted R-Squared: 0.492
F-statistic vs. constant model: 33, p-value = 9.91e-15

Матрица условий для матричного входа

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

Загрузите carsmall набор данных и задает матрицу предикторов.

load carsmall
X = [Acceleration,Weight];

Задайте модель 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2' использование матрицы условий. Эта модель включает основной эффект и двухсторонние периоды взаимодействия для переменных Acceleration и Weight, и термин второго порядка для переменной Weight.

T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
T = 5×3

     0     0     0
     1     0     0
     0     1     0
     1     1     0
     0     2     0

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

mdl2 = fitlm(X,MPG,T)
mdl2 = 
Linear regression model:
    y ~ 1 + x1*x2 + x2^2

Estimated Coefficients:
                    Estimate          SE         tStat       pValue  
                   ___________    __________    _______    __________

    (Intercept)         48.906        12.589     3.8847    0.00019665
    x1                 0.54418       0.57125    0.95261       0.34337
    x2               -0.012781     0.0060312    -2.1192      0.036857
    x1:x2          -0.00010892    0.00017925    -0.6076         0.545
    x2^2            9.7518e-07    7.5389e-07     1.2935       0.19917


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 4.1
R-squared: 0.751,  Adjusted R-Squared: 0.739
F-statistic vs. constant model: 67, p-value = 4.99e-26

Только прерывание и x2 назовите, который соответствует Weight переменная, являются значительными на 5%-м уровне значения.

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

Модель с категориальным предиктором

Загрузите carsmall набор данных и создает модель линейной регрессии MPG как функция Model_Year. Обрабатывать числовой векторный Model_Year как категориальная переменная, идентифицируйте предиктор с помощью 'CategoricalVars' аргумент пары "имя-значение".

load carsmall
mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE      tStat       pValue  
                     ________    ______    ______    __________

    (Intercept)        17.69     1.0328    17.127    3.2371e-30
    Model_Year_76     3.8839     1.4059    2.7625     0.0069402
    Model_Year_82      14.02     1.4369    9.7571    8.2164e-16


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

Формула модели в отображении, MPG ~ 1 + Model_Year, соответствует

MPG=β0+β1ΙYear=76+β2ΙYear=82+ϵ,

где ΙYear=76 и ΙYear=82 переменные индикатора, значение которых является тем если значение Model_Year 76 и 82, соответственно. Model_Year переменная включает три отличных значения, которые можно проверять при помощи unique функция.

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlm выбирает наименьшее значение в Model_Year как контрольный уровень ('70') и создает две переменные индикатора ΙYear=76 и ΙYear=82. Модель включает только две переменные индикатора, потому что матрица проекта становится неполным рангом, если модель включает три переменные индикатора (один для каждого уровня) и термин прерывания.

Модель с полными переменными индикатора

Можно интерпретировать формулу модели mdl как модель, которая имеет три переменные индикатора без термина прерывания:

y=β0Ιx1=70+(β0+β1)Ιx1=76+(β0+β2)Ιx2=82+ϵ.

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

temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = 
Linear regression model:
    MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82

Estimated Coefficients:
                     Estimate      SE       tStat       pValue  
                     ________    _______    ______    __________

    Model_Year_70      17.69      1.0328    17.127    3.2371e-30
    Model_Year_76     21.574     0.95387    22.617    4.0156e-39
    Model_Year_82      31.71     0.99896    31.743    5.2234e-51


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56

Выберите Reference Level in Model

Можно выбрать контрольный уровень путем изменения порядка категорий в категориальной переменной. Во-первых, создайте категориальную переменную Year.

Year = categorical(Model_Year);

Проверяйте порядок категорий при помощи categories функция.

categories(Year)
ans = 3x1 cell
    {'70'}
    {'76'}
    {'82'}

Если вы используете Year как переменный предиктор, затем fitlm выбирает первую категорию '70' как контрольный уровень. Переупорядочьте Year при помощи reordercats функция.

Year_reordered = reordercats(Year,{'76','70','82'});
categories(Year_reordered)
ans = 3x1 cell
    {'76'}
    {'70'}
    {'82'}

Первая категория Year_reordered '76'. Создайте модель линейной регрессии MPG как функция Year_reordered.

mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE        tStat       pValue  
                     ________    _______    _______    __________

    (Intercept)       21.574     0.95387     22.617    4.0156e-39
    Model_Year_70    -3.8839      1.4059    -2.7625     0.0069402
    Model_Year_82     10.136      1.3812     7.3385    8.7634e-11


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

mdl2 использование '76' как контрольный уровень и включает две переменные индикатора ΙYear=70 и ΙYear=82.

Оцените категориальный предиктор

Отображение модели mdl2 включает p-значение каждого термина, чтобы протестировать, равен ли соответствующий коэффициент нулю. Каждое p-значение исследует каждую переменную индикатора. Исследовать категориальную переменную Model_Year как группа переменных индикатора, используйте anova. Используйте 'components'опция (по умолчанию), чтобы возвратить таблицу ANOVA компонента, которая включает статистику Дисперсионного Анализа для каждой переменной в модели кроме постоянного термина.

anova(mdl2,'components')
ans=2×5 table
                  SumSq     DF    MeanSq      F        pValue  
                  ______    __    ______    _____    __________

    Model_Year    3190.1     2    1595.1    51.56    1.0694e-15
    Error         2815.2    91    30.936                       

Таблица ANOVA компонента включает p-значение Model_Year переменная, которая меньше, чем p-значения переменных индикатора.

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

Загрузка демонстрационных данных.

load hospital

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

mdl = fitlm(hospital,'interactions','ResponseVar','Weight',...
    'PredictorVars',{'Sex','Age','Smoker'},...
    'CategoricalVar',{'Sex','Smoker'})
mdl = 
Linear regression model:
    Weight ~ 1 + Sex*Age + Sex*Smoker + Age*Smoker

Estimated Coefficients:
                         Estimate      SE        tStat        pValue  
                         ________    _______    ________    __________

    (Intercept)             118.7     7.0718      16.785     6.821e-30
    Sex_Male               68.336     9.7153      7.0339    3.3386e-10
    Age                   0.31068    0.18531      1.6765      0.096991
    Smoker_1               3.0425     10.446     0.29127       0.77149
    Sex_Male:Age         -0.49094    0.24764     -1.9825      0.050377
    Sex_Male:Smoker_1      0.9509     3.8031     0.25003       0.80312
    Age:Smoker_1         -0.07288    0.26275    -0.27737       0.78211


Number of observations: 100, Error degrees of freedom: 93
Root Mean Squared Error: 8.75
R-squared: 0.898,  Adjusted R-Squared: 0.892
F-statistic vs. constant model: 137, p-value = 6.91e-44

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

Загрузите hald набор данных, который измеряет эффект цементного состава на его стабилизирующем тепле.

load hald

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

Подбирайте устойчивую модель линейной регрессии к данным.

mdl = fitlm(ingredients,heat,'RobustOpts','on')
mdl = 
Linear regression model (robust fit):
    y ~ 1 + x1 + x2 + x3 + x4

Estimated Coefficients:
                   Estimate      SE        tStat       pValue 
                   ________    _______    ________    ________

    (Intercept)       60.09     75.818     0.79256      0.4509
    x1               1.5753    0.80585      1.9548    0.086346
    x2               0.5322    0.78315     0.67957     0.51596
    x3              0.13346     0.8166     0.16343     0.87424
    x4             -0.12052     0.7672    -0.15709     0.87906


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 2.65
R-squared: 0.979,  Adjusted R-Squared: 0.969
F-statistic vs. constant model: 94.6, p-value = 9.03e-07

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

Вычислите среднюю абсолютную погрешность модели регрессии при помощи 10-кратной перекрестной проверки.

Загрузите carsmall набор данных. Задайте Acceleration и Displacement переменные как предикторы и Weight переменная как ответ.

load carsmall
X1 = Acceleration;
X2 = Displacement;
y = Weight;

Создайте пользовательский функциональный regf (показанный в конце этого примера). Эта функция подбирает модель регрессии к обучающим данным и затем вычисляет предсказанные автомобильные веса на наборе тестов. Функция сравнивает предсказанные автомобильные значения веса с истинными значениями, и затем вычисляет среднюю абсолютную погрешность (MAE) и MAE, настроенный к области значений автомобильных весов набора тестов.

Примечание: Если вы используете файл live скрипта для этого примера, regf функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.

По умолчанию, crossval выполняет 10-кратную перекрестную проверку. Для каждого из 10 разделов набора обучающих данных и набора тестов данных в X1x2 , и y, вычислите MAE и настроенные значения MAE с помощью regf функция. Найдите средний MAE и означайте настроенный MAE.

rng('default') % For reproducibility
values = crossval(@regf,X1,X2,y)
values = 10×2

  319.2261    0.1132
  342.3722    0.1240
  214.3735    0.0902
  174.7247    0.1128
  189.4835    0.0832
  249.4359    0.1003
  194.4210    0.0845
  348.7437    0.1700
  283.1761    0.1187
  210.7444    0.1325

mean(values)
ans = 1×2

  252.6701    0.1129

Этот код создает функциональный regf.

function errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest)
tbltrain = table(X1train,X2train,ytrain, ...
    'VariableNames',{'Acceleration','Displacement','Weight'});
tbltest = table(X1test,X2test,ytest, ...
    'VariableNames',{'Acceleration','Displacement','Weight'});
mdl = fitlm(tbltrain,'Weight ~ Acceleration + Displacement');
yfit = predict(mdl,tbltest);
MAE = mean(abs(yfit-tbltest.Weight));
adjMAE = MAE/range(tbltest.Weight);
errors = [MAE adjMAE];
end

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

свернуть все

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

  • По умолчанию, fitlm берет последнюю переменную в качестве переменной отклика и других как переменные предикторы.

  • Чтобы установить различный столбец как переменную отклика, используйте ResponseVar аргумент пары "имя-значение".

  • Чтобы использовать подмножество столбцов как предикторы, используйте PredictorVars аргумент пары "имя-значение".

  • Чтобы задать спецификацию модели, установите modelspec аргумент с помощью формулы или матрицы условий. Матрица формулы или условий задает который столбцы использовать в качестве переменных предикторов или переменных отклика.

Имена переменных в таблице не должны быть допустимыми идентификаторами MATLAB®. Однако, если имена не допустимы, вы не можете использовать формулу, когда вы соответствуете или настраиваете модель; например:

  • Вы не можете задать modelspec использование формулы.

  • Вы не можете использовать формулу, чтобы задать условия, чтобы добавить или удалить, когда вы используете addTerms функционируйте или removeTerms функция, соответственно.

  • Вы не можете использовать формулу, чтобы задать нижние и верхние границы модели, когда вы используете step или stepwiselm функция с аргументами пары "имя-значение" 'Lower' и 'Upper', соответственно.

Можно проверить имена переменных в tbl при помощи isvarname функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

cellfun(@isvarname,tbl.Properties.VariableNames)
Если имена переменных в tbl не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);

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

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

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

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

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

Спецификация модели в виде одного из этих значений.

  • Вектор символов или строковый скаляр, называющий модель.

    ЗначениеТип модели
    'constant'Модель содержит только константу (прерывание) термин.
    'linear'Модель содержит прерывание и линейный член для каждого предиктора.
    'interactions'Модель содержит прерывание, линейный член для каждого предиктора и все продукты пар отличных предикторов (никакие условия в квадрате).
    'purequadratic'Модель содержит термин прерывания и линейный и придает условиям квадратную форму для каждого предиктора.
    'quadratic'Модель содержит термин прерывания, линейный, и придает квадратную форму условиям для каждого предиктора и всем продуктам пар отличных предикторов.
    'polyijk'Модель является полиномом со всеми условиями до степени i в первом предикторе, степень j во втором предикторе, и так далее. Задайте максимальную степень для каждого предиктора при помощи цифр 0 хотя 9. Модель содержит периоды взаимодействия, но степень каждого периода взаимодействия не превышает максимальное значение заданных степеней. Например, 'poly13' имеет прерывание и x 1, x 2, x 22, x 23, x 1*x2, и x 1*x22 условия, где x 1 и x 2 является первыми и вторыми предикторами, соответственно.
  • t (p + 1) матрица или Матрица Условий, задавая члены в модели, где t является количеством условий и p, является количеством переменных предикторов и +1 счетом на переменную отклика. Матрица условий удобна, когда количество предикторов является большим, и вы хотите сгенерировать условия программно.

  • Вектор символов или Формула строкового скаляра в форме

    'y ~ terms',

    где terms находятся в Обозначении Уилкинсона. Имена переменных в формуле должны быть именами переменных в tbl или имена переменных заданы Varnames. Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB.

    Программное обеспечение определяет порядок условий в подобранной модели при помощи порядка условий в tbl или X. Поэтому порядок членов в модели может отличаться от порядка условий в заданной формуле.

Пример: 'quadratic'

Пример: 'y ~ x1 + x2^2 + x1:x2'

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

Аргументы в виде пар имя-значение

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

Пример: 'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic' задает устойчивую модель регрессии без постоянного термина, где использование алгоритма, логистическая функция взвешивания со значением по умолчанию, настраивающим постоянные, первые и третьи переменные, является переменными предикторами и пятой переменной, является переменной отклика.

Категориальный список переменных в виде разделенной запятой пары, состоящей из 'CategoricalVars' и или массив строк или массив ячеек из символьных векторов, содержащий категориальные имена переменных в таблице или массиве набора данных tbl, или логический или числовой вектор индекса указание, какие столбцы являются категориальными.

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

  • Если данные находятся в матричном X, затем значение по умолчанию 'CategoricalVars' пустой матричный []. Таким образом, никакая переменная не является категориальной, если вы не задаете его как категориальный.

Например, можно задать наблюдения 2 и 3 из 6 как категориальное использование любого из следующих примеров.

Пример: 'CategoricalVars',[2,3]

Пример: 'CategoricalVars',logical([0 1 1 0 0 0])

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

Наблюдения, чтобы исключить из подгонки в виде разделенной запятой пары, состоящей из 'Exclude' и логический или числовой вектор индекса указание, который наблюдения исключить из подгонки.

Например, можно исключить наблюдения 2 и 3 из 6 использований любого из следующих примеров.

Пример: 'Exclude',[2,3]

Пример: 'Exclude',logical([0 1 1 0 0 0])

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

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

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

Пример: 'Intercept',false

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

Значения строки или векторы символов должны быть среди имен в tbl, или имена вы задаете использование 'VarNames' аргумент пары "имя-значение".

Значением по умолчанию являются все переменные в X, или все переменные в tbl за исключением ResponseVar.

Например, можно задать вторые и третьи переменные как переменные предикторы с помощью любого из следующих примеров.

Пример: 'PredictorVars',[2,3]

Пример: 'PredictorVars',logical([0 1 1 0 0 0])

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

Переменная отклика, чтобы использовать в подгонке в виде разделенной запятой пары, состоящей из 'ResponseVar' и или вектор символов или строковый скаляр, содержащий имя переменной в таблице или массиве набора данных tbl, или логический или числовой вектор индекса указание, какой столбец является переменной отклика. Обычно необходимо использовать 'ResponseVar' при подборе кривой таблице или массиву набора данных tbl.

Например, можно задать четвертую переменную, сказать yield, как ответ из шести переменных, одним из следующих способов.

Пример: 'ResponseVar','yield'

Пример: 'ResponseVar',[4]

Пример: 'ResponseVar',logical([0 0 0 1 0 0])

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

Индикатор устойчивого подходящего типа, чтобы использовать в виде разделенной запятой пары, состоящей из 'RobustOpts' и одно из этих значений.

  • 'off' — Никакой устойчивый подбор кривой. fitlm использование обычные наименьшие квадраты.

  • 'on' — Устойчивый подбор кривой с помощью 'bisquare' функция веса со значением по умолчанию, настраивающимся постоянный.

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

  • Структура с этими двумя полями RobustWgtFun и Tune.

    • RobustWgtFun поле содержит имя устойчивой подходящей функции веса из следующей таблицы или указателя на функцию пользовательской функции веса.

    • Tune поле содержит постоянную настройку. Если вы не устанавливаете Tune поле , fitlm использует соответствующее значение по умолчанию, настраивающееся постоянный.

    Функция весаОписаниеЗначение по умолчанию, настраивающееся постоянный
    '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
    • Настраивающие константы значения по умолчанию встроенных функций веса дают содействующие оценки, которые приблизительно на 95% более статистически эффективны, чем обычные оценки наименьших квадратов, если ответ имеет нормальное распределение без выбросов. Уменьшение настраивающихся постоянных увеличений подавление присвоенного к большим остаточным значениям; увеличение настраивающихся постоянных уменьшений подавление присвоенного к большим остаточным значениям.

    • Значение r в функциях веса

      r = resid/(tune*s*sqrt(1–h)),

      где resid вектор из остаточных значений предыдущей итерации, tune постоянная настройка, h вектор из значений рычагов от метода наименьших квадратов и s оценка стандартного отклонения остаточного члена, данного

      s = MAD/0.6745.

      MAD среднее абсолютное отклонение остаточных значений их медианы. Постоянные 0.6745 делают оценку несмещенной для нормального распределения. Если X имеет столбцы p, программное обеспечение исключает самый маленький p абсолютные отклонения при вычислении медианы.

Для устойчивого подбора кривой, fitlm M-оценка использования, чтобы сформулировать оценку уравнений и решает их использующий метод Итеративно повторно взвешенных наименьших квадратов (IRLS).

Пример: 'RobustOpts','andrews'

Имена переменных в виде разделенной запятой пары, состоящей из 'VarNames' и массив строк или массив ячеек из символьных векторов включая имена для столбцов X во-первых, и имя для переменной отклика y в последний раз.

'VarNames' не применимо к переменным в таблице или массиве набора данных, потому что те переменные уже имеют имена.

Имена переменных не должны быть допустимыми идентификаторами MATLAB. Однако, если имена не допустимы, вы не можете использовать формулу, когда вы соответствуете или настраиваете модель; например:

  • Вы не можете использовать формулу, чтобы задать условия, чтобы добавить или удалить, когда вы используете addTerms функционируйте или removeTerms функция, соответственно.

  • Вы не можете использовать формулу, чтобы задать нижние и верхние границы модели, когда вы используете step или stepwiselm функция с аргументами пары "имя-значение" 'Lower' и 'Upper', соответственно.

Прежде, чем задать 'VarNames',varNames, можно проверить имена переменных в varNames при помощи isvarname функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

cellfun(@isvarname,varNames)
Если имена переменных в varNames не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
varNames = matlab.lang.makeValidName(varNames);

Пример: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

Типы данных: string | cell

Веса наблюдения в виде разделенной запятой пары, состоящей из 'Weights' и n-by-1 вектор из неотрицательных скалярных значений, где n является количеством наблюдений.

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

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

свернуть все

Линейная модель, представляющая метод наименьших квадратов ответа на данные, возвращенные как LinearModel объект.

Если значение 'RobustOpts' парой "имя-значение" не является [] или 'ols', модель не является методом наименьших квадратов, но использует устойчивую подходящую функцию.

Больше о

свернуть все

Матрица условий

Матрица условий T t (p + 1) матричные условия определения в модели, где t является количеством условий, p является количеством переменных предикторов и +1 счетом на переменную отклика. Значение T(i,j) экспонента переменной j в термине i.

Например, предположите, что вход включает три переменных предиктора x1x2 , и x3 и переменная отклика y в порядке x1x2 , x3, и y. Каждая строка T представляет один термин:

  • [0 0 0 0] — Постоянный термин или прерывание

  • [0 1 0 0] x2 ; эквивалентно, x1^0 * x2^1 * x3^0

  • [1 0 1 0]x1*x3

  • [2 0 0 0]x1^2

  • [0 1 2 0]x2*(x3^2)

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

Формула

Формула для спецификации модели является вектором символов или строковым скаляром формы 'y ~ terms'.

  • y имя ответа.

  • terms представляет условия предиктора в модели с помощью обозначения Уилкинсона.

Чтобы представлять переменные прогноза и переменные отклика, используйте имена переменных табличного входа tbl или имена переменных заданы при помощи VarNames. Значение по умолчанию VarNames {'x1','x2',...,'xn','y'}.

Например:

  • 'y ~ x1 + x2 + x3' задает линейную модель с тремя переменными с прерыванием.

  • 'y ~ x1 + x2 + x3 – 1' задает линейную модель с тремя переменными без прерывания. Обратите внимание на то, что формулы включают константу (прерывание) термин по умолчанию. Чтобы исключить постоянный термин из модели, необходимо включать –1 в формуле.

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

Обозначение Уилкинсона

Обозначение Уилкинсона описывает условия, существующие в модели. Обозначение относится к условиям, существующим в модели, не ко множителям (коэффициенты) тех условий.

Обозначение Уилкинсона использует эти символы:

  • + средние значения включают следующую переменную.

  • средние значения не включают следующую переменную.

  • : задает взаимодействие, которое является продуктом условий.

  • * задает взаимодействие и все условия более низкоуровневые.

  • ^ возводит предиктор в степень, точно так же, как в * повторный, таким образом, ^ включает условия более низкоуровневые также.

  • () условия групп.

Эта таблица показывает типичные примеры обозначения Уилкинсона.

Обозначение УилкинсонаУсловия в стандартном обозначении
1Постоянный (прерывание) термин
x1^k, где k положительное целое числоx1, x12..., x1k
x1 + x2x1x2
x1*x2x1x2 x1, x2
x1:x2x1*x2 только
–x2Не включайте x2
x1*x2 + x3x1x2 , x3x1, x2
x1 + x2 + x3 + x1:x2x1x2 , x3x1, x2
x1*x2*x3 – x1:x2:x3x1x2 , x3x1, x2 , x1*x3, x2*x3
x1*(x2 + x3)x1x2 , x3x1, x2 , x1*x3

Для получения дополнительной информации смотрите Обозначение Уилкинсона.

Советы

  • Получить доступ к свойствам модели LinearModel объект mdl, можно использовать запись через точку. Например, mdl.Residuals возвращает таблицу сырых данных, Пирсона, Studentized, и стандартизировал остаточные значения для модели.

  • После обучения модель можно сгенерировать код C/C++, который предсказывает ответы для новых данных. Генерация кода C/C++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.

Алгоритмы

  • Основной алгоритм подбора является разложением QR. Для устойчивого подбора кривой, fitlm M-оценка использования, чтобы сформулировать оценку уравнений и решает их использующий метод Итеративно повторно взвешенных наименьших квадратов (IRLS).

  • fitlm обрабатывает категориальный предиктор можно следующим образом:

    • Модель с категориальным предиктором, который имеет уровни L (категории), включает   переменные индикатора L - 1. Модель использует первую категорию в качестве контрольного уровня, таким образом, это не включает переменную индикатора для контрольного уровня. Если типом данных категориального предиктора является categorical, затем можно проверять порядок категорий при помощи categories и переупорядочьте категории при помощи reordercats настроить контрольный уровень. Для получения дополнительной информации о создании переменных индикатора, смотрите Автоматическое Создание Фиктивных Переменных.

    • fitlm обрабатывает группу   переменных индикатора L - 1 как одна переменная. Если вы хотите обработать переменные индикатора как отличные переменные предикторы, создайте переменные индикатора вручную при помощи dummyvar. Затем используйте переменные индикатора, кроме той, соответствующей контрольному уровню категориальной переменной, когда вы подберете модель. Для категориального предиктора X, если вы задаете все столбцы dummyvar(X) и термин прерывания в качестве предикторов, затем матрица проекта становится неполным рангом.

    • Периоды взаимодействия между непрерывным предиктором и категориальным предиктором с уровнями L состоят из поэлементного произведения   переменных индикатора L - 1 с непрерывным предиктором.

    • Периоды взаимодействия между двумя категориальными предикторами с L и уровнями M состоят из (L – 1) *   переменные индикатора (M - 1), чтобы включать все возможные комбинации двух категориальных уровней предиктора.

    • Вы не можете задать условия высшего порядка для категориального предиктора, потому что квадрат индикатора равен себе.

  • fitlm рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в tblX, и Y быть отсутствующими значениями. fitlm не использует наблюдения с отсутствующими значениями в подгонке. ObservationInfo свойство подобранной модели указывает действительно ли fitlm использование каждое наблюдение в подгонке.

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

  • Для сокращения времени вычисления на высоко-размерных наборах данных подбирайте модель линейной регрессии использование fitrlinear функция.

  • Чтобы упорядочить регрессию, использовать fitrlinear, lasso, ridge, или plsregress.

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

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

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

    • plsregress упорядочивает регрессию с коррелироваными условиями с помощью частичных наименьших квадратов.

Ссылки

[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.

Расширенные возможности

Введенный в R2013b