5. Параметрическая регрессия в R
# исходные данные
library(datasets)
ozone <- airquality$Ozone
rad <- airquality$Solar.R
rem <- is.na(ozone) | is.na(rad)
ozone <- ozone[!rem]; rad <- rad[!rem]
# разделим выборку на обучающую и экзаменующую
N <- length(ozone); E <- 20; T <- N-E
eval.obs <- sample(1:N,size=E,replace=FALSE)
train.obs <- (1:N)[-eval.obs]
t.rad <- rad[train.obs]; t.ozone <- ozone[train.obs]
e.rad <- rad[eval.obs]; e.ozone <- ozone[eval.obs]
6. Параметрическая регрессия в R
# регрессионная модель
fit.par <- lm(ozone ~ radiation,
data=data.frame(radiation=t.rad,ozone=t.ozone),
weights=NULL)
# другой вариант
fit.par <- lm(t.ozone ~ t.rad)
7. Анализ качества модели
summary(fit.par)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.85005 7.37407 2.421 0.017524 *
radiation 0.13726 0.03613 3.799 0.000265 ***
Multiple R-squared: 0.1395, Adjusted R-squared: 0.1299
F-statistic: 14.43 on 1 and 89 DF, p-value: 0.0002655
fit.par$coefficients
fit.par$residuals
fit.par$fitted.values
150
plot(t.rad,t.ozone,
xlab="radiation",ylab="ozone")
100
points(t.rad,
ozone
fit.par$fitted.values,
col="blue",pch=20)
50
0
0 50 100 150 200 250 300
radiation
8. Histogram of res
Анализ остатков модели
0.015
res <- fit.par$residuals
0.010
Density
hist(res)
plot(res,type="l")
0.005
# тесты на нормальность
library(fBasics)
0.000
shapiro.test(res) -50 0 50 100
res
jarqueberaTest(res)
100
50
res
0
Тест p.value
Shapiro – Wilks 0.000
-50
Jarque – Bera 0.000 0 20 40 60 80
Index
25. Построение прогноза в R
e <- t.ozone - ozone.hat
s2 <- var(e)
g <- (4/(3*T))^(1/5)*sqrt(s2)
# симулированные значения ошибок
b <- 10^4
e.star <- e[sample(1:T,size=b,replace=TRUE)]+g*rnorm(b)
e.star <- sort(e.star)
# прогноз и доверительные границы
alpha <- 0.1
y <- predict(fit.npar,newdata=data.frame(rad=e.rad))
bottom <- y + e.star[alpha/2*b]
top <- y + e.star[(1-alpha/2)*b]
26. Построение прогноза в R
z <- order(e.rad)
plot(e.rad,e.ozone,ylim=range(c(top,bottom)))
lines(e.rad[z],y[z],col="blue",lwd=2)
lines(e.rad[z],top[z],col="red",lty="dashed")
lines(e.rad[z],bottom[z],col="red",lty="dashed")
100
80
60
e.ozone
40
20
0
-20
0 50 100 150 200 250 300
e.rad
34. Домашнее задание
• рассмотреть данные о величине спроса на деньги в пакете
lmtest: moneydemand
• разделить выборку на обучающую и экзаменующую части
• на пространстве обучающей выборки построить
параметрическую и непараметрическую регрессионные
модели с эндогенной переменной logM
• проверить качество параметрической модели с помощью
тестов на нормальность, гетероскедастичность и
автокорреляцию
• построить прогноз и доверительные интервалы для
эндогенной переменной на экзаменующей выборке
• написать комментарии