В этом примере показано, как выполнить регрессию с категориальными ковариатами с использованием категориальных массивов и 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 может отличаться для каждого модельного года. Чтобы оценить это, включите условия взаимодействия в весовом году.
Предлагаемая модель
β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% при рассмотрении веса, модельного года и их взаимодействий.
Подогнанная модель:
− 0 .005Вес × I [1982].
Таким образом, оценочные уравнения регрессии для модельных лет являются следующими.
| Модельный год | Прогнозируемый МПГ по весу |
|---|---|
| 1970 |
006Вес
|
| 1976 |
вес
|
| 1982 |
вес
|
Взаимосвязь между 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')

Проверка на наличие существенных различий между уклонами. Это эквивалентно проверке гипотезы
.
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 0.0072 (из строки взаимодействия, Weight:Model_Year), поэтому нулевая гипотеза отвергается на уровне значимости 0,05. Значение статистики теста: 5.2266. Числительные степени свободы для теста: 2, которое является числом коэффициентов в нулевой гипотезе.Имеются достаточные доказательства того, что уклоны не равны на протяжении всех трех модельных лет.
anova | categorical | fitlm | reordercats