Линейная регрессия с использованием таблиц

В этом примере показано, как выполнить линейный и ступенчатый регрессионный анализ с помощью таблиц.

Загрузите выборочные данные.

load imports-85

Сохраните переменные предиктора и отклика в таблице.

tbl = table(X(:,7),X(:,8),X(:,9),X(:,15),'VariableNames',...
{'curb_weight','engine_size','bore','price'});

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

Подгонка линейной регрессионной модели, которая объясняет цену автомобиля с точки зрения его снаряженного веса, размера двигателя и отверстия.

fitlm(tbl,'price~curb_weight+engine_size+bore')
ans = 
Linear regression model:
    price ~ 1 + curb_weight + engine_size + bore

Estimated Coefficients:
                    Estimate        SE         tStat       pValue  
                   __________    _________    _______    __________

    (Intercept)        64.095        3.703     17.309    2.0481e-41
    curb_weight    -0.0086681    0.0011025    -7.8623      2.42e-13
    engine_size     -0.015806     0.013255    -1.1925       0.23452
    bore              -2.6998       1.3489    -2.0015      0.046711


Number of observations: 201, Error degrees of freedom: 197
Root Mean Squared Error: 3.95
R-squared: 0.674,  Adjusted R-Squared: 0.669
F-statistic vs. constant model: 136, p-value = 1.14e-47

Область команды fitlm(tbl) также возвращает тот же результат, потому что fitlmпо умолчанию подразумевает, что переменная отклика находится в последнем столбце таблицы tbl.

Воссоздайте таблицу и повторите анализ.

На этот раз поместите переменную отклика в первый столбец таблицы.

 tbl = table(X(:,15),X(:,7),X(:,8),X(:,9),'VariableNames',...
{'price','curb_weight','engine_size','bore'});

Когда переменная отклика находится в первом столбце tbl, определить его местоположение. Для примера, fitlmпо умолчанию принимает, что bore - переменная отклика. Можно задать переменную отклика в модели с помощью:

fitlm(tbl,'ResponseVar','price');

или

fitlm(tbl,'ResponseVar',logical([1 0 0 0]));

Выполните ступенчатую регрессию.

stepwiselm(tbl,'quadratic','lower','price~1',...
'ResponseVar','price')
1. Removing bore^2, FStat = 0.01282, pValue = 0.90997
2. Removing engine_size^2, FStat = 0.078043, pValue = 0.78027
3. Removing curb_weight:bore, FStat = 0.70558, pValue = 0.40195
ans = 
Linear regression model:
    price ~ 1 + curb_weight*engine_size + engine_size*bore + curb_weight^2

Estimated Coefficients:
                                Estimate          SE         tStat       pValue  
                               ___________    __________    _______    __________

    (Intercept)                     131.13        14.273     9.1873    6.2319e-17
    curb_weight                  -0.043315     0.0085114    -5.0891    8.4682e-07
    engine_size                   -0.17102       0.13844    -1.2354       0.21819
    bore                           -12.244         4.999    -2.4493      0.015202
    curb_weight:engine_size    -6.3411e-05    2.6577e-05     -2.386      0.017996
    engine_size:bore              0.092554      0.037263     2.4838      0.013847
    curb_weight^2               8.0836e-06    1.9983e-06     4.0451    7.5432e-05


Number of observations: 201, Error degrees of freedom: 194
Root Mean Squared Error: 3.59
R-squared: 0.735,  Adjusted R-Squared: 0.726
F-statistic vs. constant model: 89.5, p-value = 3.58e-53

Начальная модель является квадратичной формулой, и самая низкая из рассмотренных моделей является константой. Здесь, stepwiselm выполняет метод обратного устранения, чтобы определить членов в модели. Конечная модель price ~ 1 + curb_weight*engine_size + engine_size*bore + curb_weight^2, что соответствует

P=β0+βCC+βEE+βBB+βCECE+βEBEB+βC2C2+ϵ

где P является ценой, C - снаряженный вес, E - размер двигателя, B - отверстие, βi является коэффициентом для соответствующего члена в модели, и ϵ - термин ошибки. Итоговая модель включает все три основных эффекта, эффекты взаимодействия для снаряженного веса и размера двигателя и размера двигателя и отверстия, и термин второго порядка для снаряженного веса.

См. также

| |

Похожие темы