Оршил
Энэхүү практик хэрэглээ нь Америк долларын жижиглэнгийн ханшийг хандлагаар загварчилж, уг загвараараа таамаглал хийх зорилготой билээ.(Diebold,2006) Чухамдаа номд буй Eviews - ийн бэлэн үр дүнг R дээр гаргаж авах талаар боломжит хувилбаруудыг дэвшүүлэхийн сацуу энэхүү гайхалтай программын ид шидийг мэргэжил нэгт ах дүүстээ таниулах, илүү сайныг хийх сэдэл өгөх нууцхан зорилго тээн эхний хичээлээ нийтэлж байна. /Ялангуяа Python хувилбарыг хийх сэдэл./
1955.01-1994.12 хугацааны хооронд буй сарын давтамжтай, улирлын нөлөөгөөр засварласан өгөгдлийг шинжилгээндээ ашиглах бөгөөд:
- 1955.01-1993.12 хүртэлх хэсгийн хандлагыг загварчлах
- 1 жилийн дараах таамаглалыг хийж үүнийгээ бодит байдалтай харьцуулах алхмуудыг гүйцэтгэнэ.
1. Багц болон өгөгдөл:
Eviews ийн өгөгдлийг импортлохын тулд hexView
багцын readEviews()
командыг, хүссэн хэсгээ тасалж авахын тулд tidyverse
багцын filter()
командыг ашиглаж статистик тооцоолол болон таамаглалыг lmtest
,forecast
багцуудын тусламжтай гүйцэтгэх болно.
“R ядаргаатай олон багц татах шаардлагатай бөгөөд хэрэглэх бүрдээ тухайн багцаа дууддаг (ачаална) ядаргаатай программ” гэсэн бодолтой хүмүүст хэлэхэд энэхүү багцын шийдэл нь R болон Python -ийн хамгийн сэтгэл татам чанар юм. Чухам хэрэглэгдэхгүй байгаа үйлдлүүдээ багц хэлбэрээр хадгалж хэрэгтэй үедээ дуудаж гэмээ нь таны машины ачаалал буурна. Энэ төрлийн программууд дээр маш олон төрлийн зүйл хийх боломжтой тул бусад программууд шиг бүхлээрээ суух боломжгүй юм.
— зохиогчийн байр суурь
Тодорхой зорилгын улмаас энгийн RTRR
болон хугацааны цуваа хэлбэртэй rtrr
өгөгдлүүдийг 1955 оны 1 сараас 1993 оны 12 сар хүртэл сарын давтамжтайгаар салган авлаа.
library("hexView") # read Eviews data
library("lmtest") # some statistics
library("tidyverse") # data wrangling and transforming (the most hot package!)
library("forecast") # forecasing or predict
library("xtable")
library("knitr")
data<-readEViews("/Users/Mongol/Documents/Eviews/ElementsOfForecasting/fcst_05/fcst5input.wf1")
mydata<-filter(data,between(Date,as.Date("1955-01-01"),as.Date("1993-12-01")))
attach(mydata)
rtrr<-ts(mydata$RTRR,start = c(1955,1),end = c(1993,12),frequency = 12)
# View(rtrr)
print(rtrr)
Хугацааны цувааг Зураг 5.14-д харуулав. График зурахтай холбоотой нэмэлт функцийг ?par()
командаар харах боломжтой юм. Энэхүү хэсэгт энгийн plot()
болон илүү хүчирхэг ggplot
багцын ggplot()
функцийг ажиллуулсан болно. ggplot
багц нь tidyverse
багцад агуулагддаг тул дахин ачаалах шаардлагагүй юм. Анхан шатны агуулгатай (мэргэжлийн бус, сонирхогчийн) нийтлэлийн хувьд график, дүрслэлийн бурхан тэнгэр болсон ggplot
багцыг тусад нь хичээл болгон оруулах тул уншигч танаас хүлцэл өчиж байна.
2. Шугаман хэлбэртэй хандлага:
Энгийн регресс үнэлж буйтай яг ижилхэн зарчмаар хандлагыг загварчилж болно.
# Table 5.1 Retail sales, linear trend regression
TIME<-1:length(rtrr)
reg1<-lm(rtrr~TIME)
result1<-summary(reg1)
result1
##
## Call:
## lm(formula = rtrr ~ TIME)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22718 -13982 -2026 15151 33213
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16391.248 1469.177 -11.16 <2e-16 ***
## TIME 349.773 5.429 64.43 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15870 on 466 degrees of freedom
## Multiple R-squared: 0.8991, Adjusted R-squared: 0.8989
## F-statistic: 4151 on 1 and 466 DF, p-value: < 2.2e-16
Estimate | Std. Error | t value | Pr(>|t|) | |
---|---|---|---|---|
(Intercept) | -16391.2480 | 1469.17668 | -11.15676 | 0 |
TIME | 349.7731 | 5.42867 | 64.43073 | 0 |
Eviews ийн үр дүнг R дээр гарган авах 2 боломжит арга байна.
Нэгдүгээр арга нь dataframe хэлбэрээр үзүүлэлтүүдийг оноож оруулах юм. Нэг талаар R дээр хийсэн байгаа тооцоолол, үр дүнгүүдийг Eviews хэлбэрээр авах л логик үйлчилж байгаа юм.
# First method to take a Eviews result : to use data.frame
"Rsquared"=signif(result1$r.squared,digits = 6)
"Adjusted Rsquared"=signif(result1$adj.r.squared,digits = 6)
"SE"=round(result1$sigma,digits = 6)
"SSR"=ifelse(deviance(reg1)>1000000,round(deviance(reg1),
digits = -8),round(deviance(reg1),digits = 6))
"Log lokelihood"=logLik(reg1)
"Durbin-Watson stat."=round(as.numeric(dwtest(reg1))[1],digits = 6)
"Mean dependent var."=mean(rtrr)
"SD dependent var."=sd(rtrr)
"Akaike info criterion"=AIC(reg1)
"Schwarz criterion"=BIC(reg1)
"F-statistic"=result1$r.squared/(1-result1$r.squared)*
(length(RTRR)-(length(reg1$coefficients))/(length(reg1$coefficients)-1))
"p-value"=round(pf(result1$r.squared/(1-result1$r.squared)*
(length(RTRR)-(length(reg1$coefficients))/(length(reg1$coefficients)-1)),
length(reg1$coefficients)-1,length(RTRR)-(length(reg1$coefficients)),
lower.tail = F),digits = 6)
criteria<-c("Rsquared","Adjusted Rsquared","SE","SSR","Log lokelihood","Durbin-Watson stat.",
"Mean dependent var.","SD dependent var.","Akaike info criterion","Schwarz criterion",
"F-statistic","p-value")
Table5.1<-data.frame(Rsquared,`Adjusted Rsquared`,SE,SSR,`Log lokelihood`,
`Durbin-Watson stat.`,`Mean dependent var.`,`SD dependent var.`,
`Akaike info criterion`,`Schwarz criterion`,`F-statistic`,`p-value`)
print(Table5.1)
## Rsquared Adjusted.Rsquared SE SSR Log.lokelihood
## 1 0.899076 0.898859 15866.12 1.173e+11 -5189.529
## Durbin.Watson.stat. Mean.dependent.var. SD.dependent.var.
## 1 0.004682 65630.56 49889.26
## Akaike.info.criterion Schwarz.criterion F.statistic p.value
## 1 10385.06 10397.5 4151.319 0
Дээрх аргыг ашиглах буюу утга бүрээр нь оноон өгөх нь нэг бодлын ярвигтай юм. Олон удаа регресс үнэлэх энэ загваруудад бол үлгэр шиг л санагдана. Иймд хүсэж буй үр дүнг нэгхэн мөр код бичээд авах боломж нь өөрийн функцийг зохиох явдал юм. Би хувьдаа өөрийн ядмаг мэдлэгийг ашиглан ger()
функцийг бичлээ.
# Second method to take Eviews result : Create own function
# GER - Get Eviews Result
ger<-function(regression,result,dependent.var){
print(data.frame(value=c(result$r.squared
,result$adj.r.squared
,result$sigma,deviance(regression)
,logLik(regression)
,sum(diff(regression$residuals,lag=1)^2)/sum(regression$residuals^2)
,mean(dependent.var),sd(dependent.var),AIC(regression),BIC(regression)
,result$r.squared/(1-result$r.squared)
*(length(dependent.var)-(length(regression$coefficients))/(length(regression$coefficients)-1))
,pf(result$r.squared/(1-result$r.squared)
*(length(dependent.var)-(length(regression$coefficients))/(length(regression$coefficients)-1))
,length(regression$coefficients)-1,length(dependent.var)-(length(regression$coefficients))
,lower.tail = F))
,row.names = c("Rsquared","Adjusted Rsquared","SE","SSR","Log lokelihood",
"Durbin-Watson stat.","Mean dependent var.","SD dependent var.",
"Akaike info criterion","Schwarz criterion","F-statistic","p-value")))}
Table5.1.2<-ger(reg1,result1,rtrr)
## value
## Rsquared 8.990756e-01
## Adjusted Rsquared 8.988590e-01
## SE 1.586612e+04
## SSR 1.173079e+11
## Log lokelihood -5.189529e+03
## Durbin-Watson stat. 4.681602e-03
## Mean dependent var. 6.563056e+04
## SD dependent var. 4.988926e+04
## Akaike info criterion 1.038506e+04
## Schwarz criterion 1.039750e+04
## F-statistic 4.151319e+03
## p-value 3.323512e-234
Энэхүү функц нь Get Eviews Result буюу Eviews-ийн үр дүнг авах гэсэн утгатай функц юм. Хар ухаандаа өмнөх оноож өгдөг аргыг функц болгож хувиргасан бөгөөд нэг дутагдалтай тал нь үр дүн “e” тэй гарч ирээд байгаа буюу ойролцоолох round()
болон бусад оператор ажиллахгүй байгаа явдал юм. Харин үзүүлэлтийг нэг бүрээр нь дуудахад энэ асуудал үүсэхгүй байгаа нь авууштай.
## [1] 117307861336
## [1] 0.898859
Регрессийн үр дүнд үндэслэн бодит утга, fitted утга болон үлдэгдлийг 1 хавтгайд дүрслэв. Ингэхдээ бодит болон fitted утгын хэмжилтийг зүүн тэнхлэгт, үлдэгдлийн хэмжилтийг баруун тэнхлэгт тооцсон болно. График зурахтай холбоотой дэлгэрэнгүй мэдээллийг удахгүй нийтлэгдэх онлайн хичээлээс үзнэ үү.
# Figure 5.15 Retail sales, linear trend residual plot
par(mar=c(4,4,4,4))
plot(Date,RTRR,type="l",lwd=2
,main="Figure 5.15 Retail sales, linear trend residual plot"
,ylab="",yaxt="n",ylim=c(-220000,200000),bty="o",xlab="TIME")
par(new=T)
plot(Date,reg1$fitted.values,lwd=2,type="l",lty=2,ylab="",yaxt="n"
,ylim=c(-220000,200000),xaxt="n",xlab="")
axis(4,at=c(seq(-50000,200000,50000))
,labels = c("-50000","0","50000","100000","150000","200000")
,las=2,cex.axis=1,xlab="")
par(new=T)
plot(Date,reg1$residuals
,col="red",lwd=2,type="l",ylab="",yaxt="n"
,ylim=c(-40000,110000),xaxt="n",xlab="")
axis(2,at=c(seq(-40000,40000,20000))
,labels = c("-40000","-20000","0","20000","40000")
,las=2,cex.axis=1)
abline(h=mean(reg1$residuals))
abline(h=mean(reg1$residuals)+result1$sigma)
abline(h=mean(reg1$residuals)-result1$sigma)
legend("topleft",c("Residual","Actual","Fitted")
,lty=c(1,1,2),col=c("red","black","black"),cex=0.7)
# X axis simulation
par(mar=c(4,4,4,4))
plot.ts(rtrr,type="l",lwd=2
,main="Figure 5.15 Retail sales, linear trend residual plot"
,ylab="",yaxt="n",xaxt="n",ylim=c(-220000,200000),bty="o",xlab="TIME")
lines(ts(reg1$fitted.values,start = c(1955,1),end = c(1993,12),frequency = 12)
,lwd=2,lty=2,col="black")
axis(1,at=c(seq(1955,1990,5)),labels =c(seq(55,90,5)))
axis(4,at=c(seq(-50000,200000,50000))
,labels = c("-50000","0","50000","100000","150000","200000")
,las=2,cex.axis=1,xlab="")
par(new=T)
resid1<-ts(reg1$residuals,start = c(1955,1),end = c(1993,12),frequency = 12)
plot(resid1,col="red",lwd=2,type="l",ylab="",yaxt="n"
,ylim=c(-40000,110000),xaxt="n",xlab="")
axis(2,at=c(seq(-40000,40000,20000))
,labels = c("-40000","-20000","0","20000","40000")
,las=2,cex.axis=1)
abline(h=mean(resid1))
abline(h=mean(resid1)+result1$sigma)
abline(h=mean(resid1)-result1$sigma)
legend("topleft",c("Residual","Actual","Fitted")
,lty=c(1,1,2),col=c("red","black","black"),cex=0.7)
Энэ мэтчилэн квадратлаг болон хагас логарифм хэлбэрийг загварчилна.
3. Квадрат хэлбэртэй хандлага
# Table 5.2 Retail sales, quadratic trend regression
TIME2<-TIME^2
reg2<-lm(rtrr~TIME+I(TIME^2))
reg2<-lm(rtrr~TIME+TIME2)
result2<-summary(reg2)
print(result2$coefficients)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 18708.7003219 3.799566e+02 49.23905 1.406007e-186
## TIME -98.3112971 3.741388e+00 -26.27669 5.902748e-94
## TIME2 0.9554039 7.725091e-03 123.67544 0.000000e+00
## value
## Rsquared 9.970223e-01
## Adjusted Rsquared 9.970095e-01
## SE 2.728205e+03
## SSR 3.461043e+09
## Log lokelihood -4.365093e+03
## Durbin-Watson stat. 1.510894e-01
## Mean dependent var. 6.563056e+04
## SD dependent var. 4.988926e+04
## Akaike info criterion 8.738186e+03
## Schwarz criterion 8.754780e+03
## F-statistic 1.561999e+05
## p-value 0.000000e+00
Estimate | Std. Error | t value | Pr(>|t|) | |
---|---|---|---|---|
(Intercept) | 18708.7003 | 379.956551 | 49.2391 | 0 |
TIME | -98.3113 | 3.741388 | -26.2767 | 0 |
TIME2 | 0.9554 | 0.007725 | 123.6754 | 0 |
# Figure 5.16 Retail sales, quadratic trend residual plot
par(mar=c(4,4,4,4))
plot(rtrr,type="l",lwd=2
,main="Figure 5.16 Retail sales, quadratic trend residual plot"
,ylab="",yaxt="n",xaxt="n",ylim=c(-140000,200000),bty="o",xlab="TIME")
lines(ts(reg2$fitted.values,start = c(1955,1),end = c(1993,12),frequency = 12)
,lwd=2,col="blue",lty=2)
axis(1,at=c(seq(1955,1990,5)),labels = c(seq(55,90,5)))
axis(4,at=c(seq(0,200000,50000))
,labels = c("0","50000","100000","150000","200000")
,las=2,cex.axis=1,xlab="")
# curve(ts(reg2$residuals,start = c(1955,1),end = c(1993,12)
# ,frequency = 12),col="red",lwd=2,type="l",ylab="",yaxt="n"
# ,ylim=c(-10000,20000),xaxt="n",xlab="")
resid2<-ts(reg2$residuals,start = c(1955,1),end = c(1993,12),frequency = 12)
par(new=T)
plot(resid2,col="red",lwd=2,type="l",ylab="",yaxt="n"
,ylim=c(-10000,20000),xaxt="n",xlab="")
axis(2,at=c(seq(-10000,10000,5000))
,labels = c("-10000","-5000","0","5000","10000")
,las=2,cex.axis=1)
abline(h=mean(resid2))
abline(h=mean(resid2)+result2$sigma)
abline(h=mean(resid2)-result2$sigma)
legend("topleft",c("Residual","Actual","Fitted")
,lty=c(1,1,2),col=c("red","black","blue"),cex=0.7)
4. Хагас логарифм хэлбэртэй хандлага
# Table 5.3 Retail sales, log-linear trend regression
reg3<-lm(log(rtrr)~TIME)
result3<-summary(reg3)
print(result3$coefficients)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.389974655 8.507844e-03 1103.6843 0
## TIME 0.005930689 3.143684e-05 188.6541 0
## value
## Rsquared 9.870758e-01
## Adjusted Rsquared 9.870481e-01
## SE 9.187897e-02
## SSR 3.933853e+00
## Log lokelihood 4.541874e+02
## Durbin-Watson stat. 1.994893e-02
## Mean dependent var. 1.078072e+01
## SD dependent var. 8.073254e-01
## Akaike info criterion -9.023748e+02
## Schwarz criterion -8.899294e+02
## F-statistic 3.559036e+04
## p-value 0.000000e+00
Estimate | Std. Error | t value | Pr(>|t|) | |
---|---|---|---|---|
(Intercept) | 9.38997 | 0.008508 | 1103.6843 | 0 |
TIME | 0.00593 | 0.000031 | 188.6541 | 0 |
par(mar=c(4,4,4,4))
plot(log(rtrr),type="l",lwd=2
,main="Figure 5.17 Retail sales, log-linear trend residual plot"
,ylab="",yaxt="n",xaxt="n",ylim=c(6,13),bty="o",xlab="TIME")
lines(ts(reg3$fitted.values,start = c(1955,1),end = c(1993,12),frequency = 12),lwd=2,lty=2,col="blue")
axis(1,at=c(seq(1955,1990,5)),labels = c(seq(55,90,5)))
axis(4,at=c(seq(9,13,1))
,labels = c("9","10","11","12","13"),las=2,cex.axis=1,xlab="")
resid3<-ts(reg3$residuals,start = c(1955,1),end = c(1993,12),frequency = 12)
par(new=T)
plot(resid3,col="red",lwd=2,type="l",ylab=""
,yaxt="n",ylim=c(-.2,.7),xaxt="n",xlab="")
axis(2,at=c(seq(-.2,.3,.1))
,labels = c("-0.2","-0.1","0.0","0.1","0.2","0.3")
,las=2,cex.axis=1)
abline(h=mean(resid3))
abline(h=mean(resid3)+result3$sigma)
abline(h=mean(resid3)-result3$sigma)
legend("topleft",c("Residual","Actual","Fitted")
,lty=c(1,1,2),col=c("red","black","blue"),cex=.7)
5. Экспоненциал хэлбэртэй хандлага
Экспоненциал гэж нэрлэгдсэн ч энэхүү Eviews дээр үнэлсэн тэгшитгэл нь R дээрх жирийн exp()
функц ашигласнаас ондоо юм. Өөрөөр тогтмол нь экспоненциал хэлбэртэй биш байгаа тул nls
(nonlinear least squares) функцийн тусламжтай параметрүүдийг урьдчилсан олох замаар энэхүү загварыг үнэллээ.
Диболд номын хэсгээс:
parameters<-lm(log(rtrr)~TIME)
res<-summary(parameters)
reg4<-nls(rtrr~a*exp(b*TIME)
,start =c(a=exp(res$coefficients[1]),b=res$coefficients[2])
,trace=T)
## 13106462277 : 1.196780e+04 5.930689e-03
## 12465550980 : 1.279680e+04 5.771636e-03
## 12447822456 : 1.276582e+04 5.783612e-03
## 12447812932 : 1.276926e+04 5.782911e-03
## 12447812901 : 1.276907e+04 5.782951e-03
## Nonlinear regression model
## model: rtrr ~ a * exp(b * TIME)
## data: parent.frame()
## a b
## 1.277e+04 5.783e-03
## residual sum-of-squares: 1.245e+10
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 2.941e-06
Үр дүн бага зэрэг зөрж буй нь Eviews ийн итерац нь 1 харин R хамгийн сайн тайлбарлах чадвартай загварыг сонгосон буюу 4 итерацын дараах загварыг сонгон авсан юм." (Өгөгдлийн шинжээч М.Чойсүрэн ахын тусламжтайгаар үүнийг олж харсан тул ишлэв. Фэйсбүүк болон Rpubs цахим хаягийг орууллаа.)
## Estimate Std. Error t value Pr(>|t|)
## a 1.276907e+04 1.807096e+02 70.66072 3.75442e-251
## b 5.782951e-03 3.605723e-05 160.38255 0.00000e+00
##
## Formula: rtrr ~ a * exp(b * TIME)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a 1.277e+04 1.807e+02 70.66 <2e-16 ***
## b 5.783e-03 3.606e-05 160.38 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5168 on 466 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 2.941e-06
gernls<-function(regression,result,dependent.var,resid,parnum){
print(data.frame(
value=c(1-deviance(regression)/(sum((dependent.var-mean(dependent.var))^2))
,1-(deviance(regression)/(sum((dependent.var-mean(dependent.var))^2)))*((length(dependent.var)-1)/(length(dependent.var)-parnum-1))
,result$sigma,deviance(regression)
,logLik(regression)
,sum(diff(resid,lag = 1)^2)/sum(resid^2),mean(dependent.var)
,sd(dependent.var)
,AIC(regression)
,BIC(regression)
,as.numeric((1-deviance(regression)/(sum((dependent.var-mean(dependent.var))^2)))
/(deviance(regression)/(sum((dependent.var-mean(dependent.var))^2)))
*((length(dependent.var)-parnum)/(parnum-1)))
,pf((1-deviance(regression)/(sum((dependent.var-mean(dependent.var))^2)))
/(deviance(regression)/(sum((dependent.var-mean(dependent.var))^2)))
*((length(dependent.var)-parnum)/(parnum-1))
,parnum-1,length(dependent.var)-parnum,lower.tail = F))
,row.names = c("Rsquared","Adjusted Rsquared","SE","SSR","Log lokelihood","Durbin-Watson stat."
,"Mean dependent var.","SD dependent var.","Akaike info criterion"
,"Schwarz criterion","F-statistic","p-value")))}
Table5.4<-gernls(reg4,result4,rtrr,result4$residuals,2)
## value
## Rsquared 9.892907e-01
## Adjusted Rsquared 9.892446e-01
## SE 5.168370e+03
## SSR 1.244781e+10
## Log lokelihood -4.664607e+03
## Durbin-Watson stat. 4.231971e-02
## Mean dependent var. 6.563056e+04
## SD dependent var. 4.988926e+04
## Akaike info criterion 9.335215e+03
## Schwarz criterion 9.347660e+03
## F-statistic 4.304749e+04
## p-value 0.000000e+00
value | |
---|---|
Rsquared | 9.892900e-01 |
Adjusted Rsquared | 9.892400e-01 |
SE | 5.168370e+03 |
SSR | 1.244781e+10 |
Log lokelihood | -4.664607e+03 |
Durbin-Watson stat. | 4.232000e-02 |
Mean dependent var. | 6.563056e+04 |
SD dependent var. | 4.988926e+04 |
Akaike info criterion | 9.335215e+03 |
Schwarz criterion | 9.347660e+03 |
F-statistic | 4.304749e+04 |
p-value | 0.000000e+00 |
# Figure 5.18 Retail sales, Exponential trend residual plot
par(mar=c(4,4,4,4))
plot(rtrr,type="l",lwd=2
,main="Figure 5.18 Retail sales, exponential trend residual plot"
,ylab="",yaxt="n",xaxt="n",ylim=c(-110000,200000),bty="o",xlab="TIME")
lines(ts(predict(reg4,list(Date)),start = c(1955,1),end = c(1993,12),frequency = 12)
,col="blue",lty=2,lwd=2)
axis(1,at=c(seq(1955,1990,5)),labels = c(seq(55,90,5)))
axis(4,at=c(seq(0,200000,50000))
,labels = c("0","50000","100000","150000","200000")
,las=2,cex.axis=1,xlab="")
resid4<-rtrr-predict(reg4)
par(new=T)
plot(resid4,col="red",lwd=2,type="l",ylab="",yaxt="n"
,ylim=c(-20000,50000),xaxt="n",xlab="")
axis(2,at=c(seq(-20000,20000,10000))
,labels = c("-20000","-10000","0","10000","20000")
,las=2,cex.axis=1)
abline(h=mean(resid4))
abline(h=mean(resid4)+result4$sigma)
abline(h=mean(resid4)-result4$sigma)
legend("topleft",c("Residual","Actual","Fitted")
,lty=c(1,1,2),col=c("red","black","black"),cex=.7)
6. Хамгийн сайн загвар
Онолын дагуу хамгийн бага AIC,SIC тай загварыг сонгон авдаг. 2 программын тооцоолол ондоо учир харилцан адилгүй гардаг боловч үндсэн зорилгыг биелүүлдэг юм.
Мэдээллийн шинжүүрүүд, тооцоолол:
# Table 5.5 Model selection criteria linear,quadratic and exponential trend models
linear_trend<-c(AIC(reg1),BIC(reg1))
quadratic_trend<-c(AIC(reg2),BIC(reg2))
exponential_trend<-c(AIC(reg4),BIC(reg4))
Table5.5<-data.frame(linear_trend,quadratic_trend,exponential_trend
,row.names = c("AIC","SIC"))
print(Table5.5)
## linear_trend quadratic_trend exponential_trend
## AIC 10385.06 8738.186 9335.215
## SIC 10397.50 8754.780 9347.660
linear_trend | quadratic_trend | exponential_trend | |
---|---|---|---|
AIC | 10385.06 | 8738.186 | 9335.215 |
SIC | 10397.50 | 8754.780 | 9347.660 |
7. Таамаглал болон бодит байдал
Энэ хэсэгт сонгосон загвараар таамаглал хийлээ. Eviews ийн үр дүнг буюу графикийг R дээр гаргаж авах зорилгыг агуулж байгаа тул механик үйлдэл их хийсэн бөгөөд үүндээ хүлцэл өчиж байна. R дээр таамаглал хийхэд арай өөр дүрслэл харагддаг билээ.
History<-ts(data[1081:1128,4],start = c(1990,1),end = c(1993,12),frequency = 12)
Realization<-ts(data[1081:1140,4],start = c(1990,1),end =c(1994,12),frequency = 12)
R дээрх таамаглал хийж буй хэв маяг:
Eviews - ийн үр дүнг гаргаж авав.
# Figure 5.19 Retail sales: History 1990.01-1993.12 and quadratic trend forecast 1994.01-1994.12
t<-1:length(History)
t2<-t^2
q<-lm(History~t+t2)
ts.q<-ts(q$fitted.values,start = c(1990,01),end = c(1993,12),frequency = 12)
qforecast<-forecast(ts.q,h=12,level=.95)
par(mar=c(4,6,4,2))
plot(History,ylim = c(150000,200000),lwd=2,type="l",xlim=c(1990.01,1995.01)
,yaxt="n",xaxt="n"
,ylab="History and quadratic forecast"
,main="Figure 5.19 History and forecast")
axis(1,at=c(seq(1990,1994.7,.5)),
labels = c("90:01","90:07","91:01","91:07","92:01","92:07","93:01","93:07","94:01","94:07")
,cex.axis=.7)
axis(2,at=c(seq(150000,200000,10000)),
labels=c("150000","160000","170000","180000","190000","200000"),
las=2,cex.axis=.8)
lines(qforecast$mean,lty=2,lwd=2)
lines(qforecast$upper,lty=2,lwd=2)
lines(qforecast$lower,lty=2,lwd=2)
legend("topleft",c("History","Forecast"),lty=c(1,2),
lwd=2,col=c("black","black"),cex=.7)
# Figure 5.20 Retail sales: History 1990.01-1993.12 and quadratic trend forecast and realization 1994.01-1994.12
plot(Realization,type="l",lwd=2,ylim = c(150000,200000),xlim=c(1990.01,1995.01),yaxt="n",xaxt="n",
ylab="History,quadratic forecast and realization",
main="Figure 5.20 History,forecast and realization")
axis(1,at=c(seq(1990,1994.7,.5)),
labels = c("90:01","90:07","91:01","91:07","92:01","92:07",
"93:01","93:07","94:01","94:07"),cex.axis=.7)
axis(2,at=c(seq(150000,200000,10000)),
labels=c("150000","160000","170000","180000","190000",
"200000"),las=2,cex.axis=.8)
lines(qforecast$mean,lty=2,lwd=2,col="blue")
lines(qforecast$upper,lty=2,lwd=2,col="blue")
lines(qforecast$lower,lty=2,lwd=2,col="blue")
legend("topleft",c("Realization","Forecast"),lty=c(1,2),
lwd=2,col=c("black","blue"),cex=.7)
# Figure 5.21 Retail sales: History 1990.01-1993.12; and linear trend forecast,1994.01-1994.12
l<-lm(History~t)
ts.l<-ts(l$fitted.values,start = c(1990,01),end = c(1993,12),frequency = 12)
lforecast<-forecast(ts.l,h=12,level = .95)
par(mar=c(4,6,4,2))
plot(History,ylim = c(100000,200000),type="l",lwd=2,xlim=c(1990.01,1995.01),yaxt="n",
xaxt="n",ylab="History and linear forecast",
main="Figure 5.21 History and forecast")
axis(1,at=c(seq(1990,1994.7,.5)),
labels = c("90:01","90:07","91:01","91:07","92:01","92:07",
"93:01","93:07","94:01","94:07"),cex.axis=.7)
axis(2,at=c(seq(100000,200000,20000)),
labels=c("100000","120000","140000","160000","180000",
"200000"),las=2,cex.axis=.8)
lines(lforecast$mean,lty=2,lwd=2)
lines(lforecast$upper,lty=2,lwd=2)
lines(lforecast$lower,lty=2,lwd=2)
legend("topleft",c("History","Forecast"),lty=c(1,2),lwd=2,col=c("black","black"),cex=.7)
library(forecast)
# Figure 5.22 Retail sales: History 1990.01-1993.12; and linear trend forecast and realization,1994.01-1994.12
par(mar=c(4,6,4,2))
plot(Realization,lty=c(1,2),lwd=2,ylim = c(100000,200000),type="l",xlim=c(1990.01,1995.01),
ylab="History, linear forecast and realization",yaxt="n",xaxt="n",
main="Figure 5.22 History, forecast and realization")
axis(1,at=c(seq(1990,1994.7,.5))
,labels = c("90:01","90:07","91:01","91:07","92:01","92:07","93:01","93:07","94:01","94:07")
,cex.axis=.7)
axis(2,at=c(seq(100000,200000,20000))
,labels=c("100000","120000","140000","160000","180000","200000")
,las=2,cex.axis=.8)
lines(lforecast$mean,lty=2,lwd=2,col="blue")
legend("topleft",c("Realization","Forecast")
,lty=c(1,2),lwd=2,col=c("black","blue"),cex=.7)
8. Ашигласан материал:
Diebold https://www.sas.upenn.edu/~fdiebold/Textbooks.html
Хичээлтэй холбоотой санал сэтгэгдлийг мэйл хаяг болон фэйсбүүк хаягаар нээлттэй хүлээн авах болно .
Мөн тайлбарыг оруулаагүй ч дараагийн бүлэг болох Бүлэг 6 болон Бүлэг 7 -ийн холбоосыг энд оруулав.