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

В этом примере показано, как выполнить регрессию с категориальными ковариантами с помощью категориальных массивов и 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, если это не. В этой модели, 1970 ссылочный год.

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.40.006Weight+4.7I[1976]+21.1I[1982]0.0008Weight×I[1976]0.005Weight×I[1982].

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

    Модельный годПредсказанный MPG против веса
    1970

    MP^G=37.40.006Weight

    1976

    MP^G=(37.4+4.7)(0.006+0.0008)Weight

    1982

    MP^G=(37.4+21.1)(0.006+0.005)Weight

Отношение между 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:βi0    для    at least    один   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, который является количеством коэффициентов в нулевой гипотезе.

Существуют достаточные доказательства, что наклоны не равны в течение всех трех модельных лет.

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

| | |

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

Больше о