exponenta event banner

Линейная регрессия с категориальными ковариатами

В этом примере показано, как выполнить регрессию с категориальными ковариатами с использованием категориальных массивов и fitlm.

Загрузить данные образца.

load carsmall

Переменная MPG содержит измерения на милях на галлон 100 автомобилей-образцов. Модельный год каждого автомобиля находится в переменной Model_Year, и Weight содержит вес каждого автомобиля.

Печать сгруппированных данных.

Нарисовать график рассеяния MPG против Weight, сгруппированные по модельному году.

figure()
gscatter(Weight,MPG,Model_Year,'bgr','x.o')
title('MPG vs. Weight, Grouped by Model Year')

Переменная группировки, Model_Year, имеет три уникальных значения, 70, 76, и 82, соответствующие модельным годам 1970, 1976 и 1982.

Создание таблицы и категориального массива.

Создание таблицы, содержащей переменные MPG, Weight, и Model_Year. Преобразование переменной Model_Year в категориальный массив.

cars = table(MPG,Weight,Model_Year);
cars.Model_Year = categorical(cars.Model_Year);

Подгонка регрессионной модели.

Подгонка регрессионной модели с помощью fitlm с MPG в качестве зависимой переменной, и Weight и Model_Year в качестве независимых переменных. Поскольку Model_Year является категориальным ковариатом с тремя уровнями, он должен входить в модель как две индикаторные переменные.

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

Предлагаемая модель

E (MPG) = β0 + β1Weight + β2I [1976] + β3I [1982] + β4Weight × I [1976] + β5Weight × I [1982],

где I [1976] и I [1982] являются фиктивными переменными, указывающими модельные годы 1976 и 1982 соответственно. I [1976] принимает значение 1, если модельный год - 1976, и принимает значение 0, если это не так. I [1982] принимает значение 1, если модельный год - 1982, и принимает значение 0, если это не так.

fit = fitlm(cars,'MPG~Weight*Model_Year')
fit = 


Linear regression model:
    MPG ~ 1 + Weight*Model_Year

Estimated Coefficients:
                             Estimate          SE    
                            ___________    __________

    (Intercept)                  37.399        2.1466
    Weight                   -0.0058437    0.00061765
    Model_Year_76                4.6903        2.8538
    Model_Year_82                21.051         4.157
    Weight:Model_Year_76    -0.00082009    0.00085468
    Weight:Model_Year_82     -0.0050551     0.0015636


                             tStat        pValue  
                            ________    __________

    (Intercept)               17.423    2.8607e-30
    Weight                   -9.4612    4.6077e-15
    Model_Year_76             1.6435       0.10384
    Model_Year_82             5.0641    2.2364e-06
    Weight:Model_Year_76    -0.95953       0.33992
    Weight:Model_Year_82     -3.2329     0.0017256


Number of observations: 94, Error degrees of freedom: 88
Root Mean Squared Error: 2.79
R-squared: 0.886,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 137, p-value = 5.79e-40

Результаты регрессии показывают:

  • fitlm признает Model_Year в качестве категориальной переменной и создает требуемые переменные индикатора (фиктивные). По умолчанию первый уровень, 70, является ссылочной группой (используйте reordercats для изменения ссылочной группы).

  • Спецификация модели, MPG~Weight*Model_Year, задает термины первого порядка для Weight и Model_Yearи все взаимодействия.

  • Модель R2 = 0,886, что означает, что изменение в милях на галлон уменьшается на 88,6% при рассмотрении веса, модельного года и их взаимодействий.

  • Подогнанная модель:

    MP ^ G = 37,4 − 0 .006Вес + 4 .7I [1976] + 21 .1I [1982] − 0 .0008Вес × I [1976] − 0 .005Вес × I [1982].

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

    Модельный годПрогнозируемый МПГ по весу
    1970

    MP ^ G = 37,4 − 0 .006Вес

    1976

    MP^G = (37.4+4.7) (0.006+0.0008) вес

    1982

    MP^G = (37.4+21.1) (0.006+0.005) вес

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

Постройте график аппроксимированных линий регрессии.

Постройте график данных и соответствующих линий регрессии.

w = linspace(min(Weight),max(Weight));

figure()
gscatter(Weight,MPG,Model_Year,'bgr','x.o')
line(w,feval(fit,w,'70'),'Color','b','LineWidth',2)
line(w,feval(fit,w,'76'),'Color','g','LineWidth',2)
line(w,feval(fit,w,'82'),'Color','r','LineWidth',2)
title('Fitted Regression Lines by Model Year')

Проверка на различные уклоны.

Проверка на наличие существенных различий между уклонами. Это эквивалентно проверке гипотезы

H0: β4 = β5 = 0HA: βi≠0 по меньшей мере для одного i.

anova(fit)
ans = 

                         SumSq     DF    MeanSq    F         pValue    
    Weight               2050.2     1    2050.2    263.87    3.2055e-28
    Model_Year           807.69     2    403.84    51.976    1.2494e-15
    Weight:Model_Year    81.219     2    40.609    5.2266     0.0071637
    Error                683.74    88    7.7698                        
Эти выходные данные показывают, что значение p для теста равно 0.0072 (из строки взаимодействия, Weight:Model_Year), поэтому нулевая гипотеза отвергается на уровне значимости 0,05. Значение статистики теста: 5.2266. Числительные степени свободы для теста: 2, которое является числом коэффициентов в нулевой гипотезе.

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

См. также

| | |

Связанные примеры

Подробнее