Цель: исследовать набор данных Carseats с помощью линейной регрессионной модели. Задействовав все возможные регрессоры, сделать вывод о пригодности модели для прогноза. Сравнить с методом k ближайших соседей по MSE на тестовой выборке.
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## 'data.frame': 400 obs. of 4 variables:
## $ Sales : num 9.5 11.22 10.06 7.4 4.15 ...
## $ Advertising: num 11 16 10 4 3 13 0 15 0 0 ...
## $ Price : num 120 83 80 97 128 72 108 120 124 124 ...
## $ Urban : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 2 2 1 1 ...
Sales - продажи детских автокресел в тысячах.
Prices - цена на каждое из автокресел.
Advertising - бюджет компаний на рекламу.
Urban - фактор, принимающий значения Yes, No, показывающий расположение магазина в городе или селе.
Размерность обучающей выборки: n=340 строк, p=3 объясняющих переменных. Зависимая переменная – Sales.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
##
## Call:
## lm(formula = Sales ~ . + Urban:Price + Urban:Advertising, data = df.train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.9798 -1.5933 -0.0498 1.4930 6.1437
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.335216 1.319732 10.104 < 2e-16 ***
## Advertising 0.100273 0.040879 2.453 0.0147 *
## Price -0.055840 0.010924 -5.112 5.39e-07 ***
## UrbanYes -0.358080 1.534855 -0.233 0.8157
## Price:UrbanYes 0.001866 0.012738 0.146 0.8836
## Advertising:UrbanYes 0.024831 0.047203 0.526 0.5992
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.449 on 334 degrees of freedom
## Multiple R-squared: 0.2708, Adjusted R-squared: 0.2599
## F-statistic: 24.8 on 5 and 334 DF, p-value: < 2.2e-16
Убираем Urban:Price, т.к. этот коэффициент является наиболее незначимым.
##
## Call:
## lm(formula = Sales ~ . + Urban:Advertising, data = df.train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.9864 -1.5928 -0.0612 1.4895 6.1911
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.175307 0.740669 17.788 <2e-16 ***
## Advertising 0.100933 0.040570 2.488 0.0133 *
## Price -0.054468 0.005611 -9.708 <2e-16 ***
## UrbanYes -0.141491 0.411643 -0.344 0.7313
## Advertising:UrbanYes 0.024354 0.047022 0.518 0.6049
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.445 on 335 degrees of freedom
## Multiple R-squared: 0.2707, Adjusted R-squared: 0.262
## F-statistic: 31.09 on 4 and 335 DF, p-value: < 2.2e-16
В целом модель особо лучше выглядеть не стала, поэтому перейдем к следующей модели.
##
## Call:
## lm(formula = Sales ~ Price + Advertising + Urban, data = df.train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.9132 -1.6014 -0.0504 1.5022 6.3096
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.032539 0.686713 18.978 < 2e-16 ***
## Price -0.054172 0.005575 -9.716 < 2e-16 ***
## Advertising 0.119124 0.020283 5.873 1.03e-08 ***
## UrbanYes 0.006969 0.295116 0.024 0.981
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.442 on 336 degrees of freedom
## Multiple R-squared: 0.2701, Adjusted R-squared: 0.2636
## F-statistic: 41.45 on 3 and 336 DF, p-value: < 2.2e-16
Urban является незначимым, поэтому обойдемся без него.
##
## Call:
## lm(formula = Sales ~ Price + Advertising, data = df.train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.9113 -1.5993 -0.0516 1.5007 6.3050
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.036410 0.665870 19.578 < 2e-16 ***
## Price -0.054163 0.005555 -9.751 < 2e-16 ***
## Advertising 0.119141 0.020240 5.886 9.54e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.439 on 337 degrees of freedom
## Multiple R-squared: 0.2701, Adjusted R-squared: 0.2658
## F-statistic: 62.37 on 2 and 337 DF, p-value: < 2.2e-16
Получили модель, в которой все коэффициенты являются значимыми. Будем продолжать работать с ней дальше.
##
## studentized Breusch-Pagan test
##
## data: model.4
## BP = 1.3637, df = 2, p-value = 0.5057
##
## Durbin-Watson test
##
## data: model.4
## DW = 2.1168, p-value = 0.8602
## alternative hypothesis: true autocorrelation is greater than 0
Гетероскедастичность и автокорреляция в этой модели отсутствует.
В целом, можно сказать, что ошибка метода k ближайших соседей на всем графике больше, чем на тестовой выборке. Но модель, как я считаю, не стоит считать хорошей для прогноза, несмотря на хорошие показатели тестов. Связано это с тем, что модель может объяснить лишь 27% выборки, что не всегда есть хорошо. Возможно, используя дополнительные регрессоры, Р-квадрат(нормированный) удалось бы поднять.