exponenta event banner

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 - Стандартная погрешность коэффициентов.

  • 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 соответственно. Model_Year переменная включает три различных значения, которые можно проверить с помощью unique функция.

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlm выбирает наименьшее значение в Model_Year в качестве опорного уровня ('70') и создаёт две индикаторные переменные GroupYear = 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 для каждой переменной в модели, за исключением члена константы.

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

Примечание.Если для этого примера используется файл сценария в реальном времени, 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'Модель содержит член пересечения, линейные и квадратные члены для каждого предиктора и все произведения пар различных предикторов.
    'polyijk'Модель - многочлен со всеми членами до степени i в первом предикторе, степень j во втором предикторе и так далее. Укажите максимальную степень для каждого предиктора, используя цифры от 0 до 9. Модель содержит члены взаимодействия, но степень каждого члена взаимодействия не превышает максимального значения указанных степеней. Например, 'poly13' имеет члены перехвата и x1, x2, x22, x23, x1 * x2 и x1 * x22, где x1 и x2 являются первым и вторым предикторами соответственно.
  • Матрица t-by- ( p + 1), или Terms Matrix, задающая члены в модели, где 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.

    • 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'Обычные наименьшие квадраты (без весовой функции)Ничего
    '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 использует М-оценку для формулирования оценочных уравнений и решает их с помощью метода итеративно-переоцененных наименьших квадратов (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)

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 + 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 возвращает таблицу необработанных, пирсонов, изученных и стандартизированных остаточных значений для модели.

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

Алгоритмы

  • Основным алгоритмом подгонки является QR-разложение. Для надежного фитинга, fitlm использует М-оценку для формулирования оценочных уравнений и решает их с помощью метода итеративно-переоцененных наименьших квадратов (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 не использует наблюдения с отсутствующими значениями в подгонке. ObservationInfo свойство подогнанной модели указывает, fitlm использует каждое наблюдение в подгонке.

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

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

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

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

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

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

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

Ссылки

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

[2] Холланд, П. У. и Р. Э. Уэлш. «Надежная регрессия с использованием итеративно повторно взвешенных наименьших квадратов». Сообщения в статистике: теория и методы, A6, 1977, стр. 813-827.

[3] Хубер, P. J. Rustive Statistics. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 1981.

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

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

Представлен в R2013b