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

The Coefficient свойство включает в себя следующие столбцы:

  • Estimate - Оценки коэффициентов для каждого соответствующего члена в модели. Для примера - оценка для постоянного члена (intercept) составляет 47,977.

  • SE - Стандартная ошибка коэффициентов.

  • tStat - t-статистическая для каждого коэффициента, чтобы проверить нулевую гипотезу о том, что соответствующий коэффициент равен нулю по сравнению с альтернативой, что он отличается от нуля, учитывая другие предикторы в модели. Обратите внимание, что tStat = Estimate/SE. Для примера t-статистическая величина для точки пересечения составляет 47,977/3,8785 = 12,37.

  • pValue - p-значение для 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 freedom - n - 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-value - p-значение для 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, соответственно. The 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

Выберите ссылочный уровень в модели

Можно выбрать уровень ссылки путем изменения порядка категорий в категориальной переменной. Сначала создайте категориальную переменную 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                       

Дисперсионный Анализ компонента включает 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 разделов обучающих и тестовых наборов данных в X1, X2, и 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 функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

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

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

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

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

Спецификация модели, заданная в качестве одного из следующих значений.

  • Вектор символов или строковый скаляр с именем модели.

    ЗначениеТип модели
    'constant'Модель содержит только постоянный (перехват) термин.
    'linear'Модель содержит точку пересечения и линейный термин для каждого предиктора.
    'interactions'Модель содержит точку пересечения, линейный член для каждого предиктора и все продукты пар различных предикторов (без квадратов членов).
    'purequadratic'Модель содержит термин точки пересечения и линейные и квадратные условия для каждого предиктора.
    'quadratic'Модель содержит член точки пересечения, линейные и квадратные условия для каждого предиктора и все продукты пар различных предикторов.
    'poly <reservedrangesplaceholder0>'Модель является полиномом со всеми терминами до степени i в первом предикторе, степень j во втором предикторе и так далее. Задайте максимальную степень для каждого предиктора с помощью цифр 0, хотя и 9. Модель содержит условия взаимодействия, но степень каждого термина взаимодействия не превышает максимальное значение заданных степеней. Для примера, 'poly13' имеет перехват и x 1, x 2, x 22, <reservedrangesplaceholder0> 23, x 1 * x 2 и x 1 * x 22 условия, где x 1 и x 2 являются первым и вторым предикторами, соответственно.
  • Матрица t -by-  (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' является пустой матрицей []. То есть никакая переменная не является категориальной, если вы не задаете ее как категориальную.

Для примера можно задать вторую и третью переменные из шести как категориальные с помощью одного из следующих:

Пример: '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.

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

    • The 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'Обычные наименьшие квадраты (без функции взвешивания)Ничего
    '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 функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.

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

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

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

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

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

свернуть все

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

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

Подробнее о

свернуть все

Матрица терминов

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

Например, предположим, что вход включает три переменные предиктора x1, x2, и x3 и переменной отклика y в порядке x1, x2, 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)

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

Формула

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

  • 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 + x2x1, x2
x1*x2x1, x2, x1*x2
x1:x2x1*x2 только
–x2Не включать x2
x1*x2 + x3x1, x2, x3, x1*x2
x1 + x2 + x3 + x1:x2x1, x2, x3, x1*x2
x1*x2*x3 – x1:x2:x3x1, x2, x3, x1*x2, x1*x3, x2*x3
x1*(x2 + x3)x1, x2, x3, x1*x2, x1*x3

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

Совет

  • Для доступа к свойствам модели LinearModel mdl объекта, можно использовать запись через точку. Для примера, mdl.Residuals возвращает таблицу необработанных, Pearson, 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> значения в tbl, X, и Y чтобы быть отсутствующими значениями. fitlm не использует наблюдения с отсутствующими значениями в подгонке. The ObservationInfo свойство подобранной модели указывает, указывает или нет fitlm использует каждое наблюдение в подгонке.

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

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

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

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

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

    • ridge регулирует регрессию с коррелированными терминами, используя регрессию гребня.

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

Ссылки

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

[2] Holland, P. W., and R. E. Welsch. Робастная регрессия с использованием итерационно переоцененных методом наименьших квадратов. Коммуникации в статистике: теория и методы, A6, 1977, с. 813-827.

[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.

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

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

Введенный в R2013b