Линейная регрессия Используя таблицы

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

Загрузка демонстрационных данных.

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 коэффициент для соответствующего члена в модели, и ϵ остаточный член. Итоговая модель включает все три основных эффекта, эффекты взаимодействия для собственного веса и объема двигателя и объема двигателя и скуки и термина второго порядка для собственного веса.

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

| |

Похожие темы