Tugas Individu Pertemuan 2
Nama : Ghonniyu Hiban Saputra NIM : G1401221012
Input Data
Data yang digunakan dalam kesempatan kali ini adalah data GDP Africa Eastern and Southern periode tahun 1960-1999 (40 Tahun).
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(orcutt) #untuk membuat model regresi Cochrane-Orcutt
library(HoRM) #untuk membuat model regresi Hildreth-Lu
dtafrica <- read.csv("C:/Users/Ghonniyu/Downloads/Data Individu Pert 2.csv")
dtafrica$Tanggal <- as.double(dtafrica$Tanggal)
dtafrica
## Tanggal GDP
## 1 1960 21216962290
## 2 1961 22307471356
## 3 1962 23702472100
## 4 1963 25779376633
## 5 1964 28049537325
## 6 1965 30374910060
## 7 1966 33049155473
## 8 1967 35933757402
## 9 1968 38749864977
## 10 1969 42964345101
## 11 1970 43702318276
## 12 1971 47632993913
## 13 1972 51627511757
## 14 1973 66610917871
## 15 1974 81658052383
## 16 1975 86883552689
## 17 1976 88290755581
## 18 1977 98868135190
## 19 1978 110802000000
## 20 1979 129781000000
## 21 1980 143250000000
## 22 1981 154793000000
## 23 1982 166208000000
## 24 1983 168165000000
## 25 1984 169303000000
## 26 1985 177750000000
## 27 1986 179898000000
## 28 1987 185812000000
## 29 1988 202093000000
## 30 1989 214473000000
## 31 1990 239433000000
## 32 1991 240271000000
## 33 1992 243565000000
## 34 1993 251212000000
## 35 1994 260992000000
## 36 1995 265429000000
## 37 1996 267815000000
## 38 1997 268834000000
## 39 1998 272519000000
## 40 1999 273433000000
Eksplorasi Data
Sebelum melakukan regresi, akan diperlihatkan plot time-series dari GDP Africa Eastern and Southern periode 1960-1999 ## Membuat plot time series
## Time Series:
## Start = 1
## End = 40
## Frequency = 1
## [1] 21216962290 22307471356 23702472100 25779376633 28049537325
## [6] 30374910060 33049155473 35933757402 38749864977 42964345101
## [11] 43702318276 47632993913 51627511757 66610917871 81658052383
## [16] 86883552689 88290755581 98868135190 110802000000 129781000000
## [21] 143250000000 154793000000 166208000000 168165000000 169303000000
## [26] 177750000000 179898000000 185812000000 202093000000 214473000000
## [31] 239433000000 240271000000 243565000000 251212000000 260992000000
## [36] 265429000000 267815000000 268834000000 272519000000 273433000000
#Membuat plot time series
ts.plot(data.ts, xlab="Time Period ", ylab="GDP", main= "Time Series Plot of GDP")
points(data.ts)
Penentuan Metode
Selanjutnya akan dilakukan ramalan dan pemulusan dengan metode DMA dan DES karena terlihat pada plot di atas menunjukkan adanya trend.
Metode DMA
dt.sma <- SMA(data.ts, n=4)
dma <- SMA(dt.sma, n = 4)
At <- 2*dt.sma - dma
Bt <- 2/(3-1)*(dt.sma - dma)
dt.dma<- At+Bt
dt.ramal<- c(NA, dt.dma)
t = 1:5
f = c()
for (i in t) {
f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}
Plot DMA
dt.gab <- cbind(aktual = c(data.ts,rep(NA,7)), #7 didapatkan dati n=4 diatas 2n-1
pemulusan1 = c(dt.sma,rep(NA,7)),
pemulusan2 = c(dt.dma, rep(NA,7)),
At = c(At, rep(NA,7)),
Bt = c(Bt,rep(NA,7)),
ramalan = c(dt.ramal, f[-1]))
## Warning in cbind(aktual = c(data.ts, rep(NA, 7)), pemulusan1 = c(dt.sma, :
## number of rows of result is not a multiple of vector length (arg 6)
## aktual pemulusan1 pemulusan2 At Bt
## [1,] 21216962290 NA NA NA NA
## [2,] 22307471356 NA NA NA NA
## [3,] 23702472100 NA NA NA NA
## [4,] 25779376633 23251570595 NA NA NA
## [5,] 28049537325 24959714354 NA NA NA
## [6,] 30374910060 26976574030 NA NA NA
## [7,] 33049155473 29313244873 35689182693 32501213783 3187968910
## [8,] 35933757402 31851840065 39004833535 35428336800 3576496735
## [9,] 38749864977 34526921978 42246475461 38386698720 3859776742
## [10,] 42964345101 37674280738 46339698388 42006989563 4332708825
## [11,] 43702318276 40337571439 48817407207 44577489323 4239917884
## [12,] 47632993913 43262380567 51886564339 47574472453 4312091886
## [13,] 51627511757 46481792262 55567364282 51024578272 4542786010
## [14,] 66610917871 52393435454 65942716502 59168075978 6774640524
## [15,] 81658052383 61882368981 83637118311 72759743646 10877374665
## [16,] 86883552689 71695008675 98858723339 85276866007 13581857332
## [17,] 88290755581 80860819631 109166642522 95013731077 14152911446
## [18,] 98868135190 88925123961 115093711258 102009417610 13084293649
## [19,] 110802000000 96211110865 119787301029 107999205947 11788095082
## [20,] 129781000000 106935472693 134340154504 120637813598 13702340905
## [21,] 143250000000 120675283798 155652355735 138163819766 17488535969
## [22,] 154793000000 134656500000 174730316322 154693408161 20036908161
## [23,] 166208000000 148508000000 190136371755 169322185877 20814185877
## [24,] 168165000000 158104000000 193340108101 175722054051 17618054051
## [25,] 169303000000 164617250000 190908875000 177763062500 13145812500
## [26,] 177750000000 170356500000 190276625000 180316562500 9960062500
## [27,] 179898000000 173779000000 187908625000 180843812500 7064812500
## [28,] 185812000000 178190750000 191100500000 184645625000 6454875000
## [29,] 202093000000 186388250000 204807500000 195597875000 9209625000
## [30,] 214473000000 195569000000 219743500000 207656250000 12087250000
## [31,] 239433000000 210452750000 246057875000 228255312500 17802562500
## [32,] 240271000000 224067500000 263963750000 244015625000 19948125000
## [33,] 243565000000 234435500000 271044125000 252739812500 18304312500
## [34,] 251212000000 243620250000 274572750000 259096500000 15476250000
## [35,] 260992000000 249010000000 271463375000 260236687500 11226687500
## [36,] 265429000000 255299500000 274715875000 265007687500 9708187500
## [37,] 267815000000 261362000000 279440125000 270401062500 9039062500
## [38,] 268834000000 265767500000 281583000000 273675250000 7907750000
## [39,] 272519000000 268649250000 280408625000 274528937500 5879687500
## [40,] 273433000000 270650250000 278736250000 274693250000 4043000000
## [41,] NA NA NA NA NA
## [42,] NA NA NA NA NA
## [43,] NA NA NA NA NA
## [44,] NA NA NA NA NA
## [45,] NA NA NA NA NA
## [46,] NA NA NA NA NA
## [47,] NA NA NA NA NA
## ramalan
## [1,] NA
## [2,] NA
## [3,] NA
## [4,] NA
## [5,] NA
## [6,] NA
## [7,] NA
## [8,] 35689182693
## [9,] 39004833535
## [10,] 42246475461
## [11,] 46339698388
## [12,] 48817407207
## [13,] 51886564339
## [14,] 55567364282
## [15,] 65942716502
## [16,] 83637118311
## [17,] 98858723339
## [18,] 109166642522
## [19,] 115093711258
## [20,] 119787301029
## [21,] 134340154504
## [22,] 155652355735
## [23,] 174730316322
## [24,] 190136371755
## [25,] 193340108101
## [26,] 190908875000
## [27,] 190276625000
## [28,] 187908625000
## [29,] 191100500000
## [30,] 204807500000
## [31,] 219743500000
## [32,] 246057875000
## [33,] 263963750000
## [34,] 271044125000
## [35,] 274572750000
## [36,] 271463375000
## [37,] 274715875000
## [38,] 279440125000
## [39,] 281583000000
## [40,] 280408625000
## [41,] 278736250000
## [42,] 282779250000
## [43,] 286822250000
## [44,] 290865250000
## [45,] 294908250000
## [46,] NA
## [47,] NA
#Plot time series
ts.plot(dt.gab[,1], xlab="Time Period ", ylab="GDP",
main= "DMA N=3 Data GDP", xlim=c(1, 45))
points(dt.gab[,1])
points(dt.gab[,3])
points(dt.gab[,6])
lines(dt.gab[,3],col="green",lwd=2)
lines(dt.gab[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"),
lty=8, col=c("black","green","red"), cex=0.8)
Menghitung nilai keakuratan
#Menghitung nilai keakuratan
error.dma = data.ts-dt.ramal[1:length(data.ts)]
SSE.dma = sum(error.dma[8:length(data.ts)]^2) #8 diambil dari n=4, nx2
MSE.dma = mean(error.dma[8:length(data.ts)]^2)
MAPE.dma = mean(abs((error.dma[8:length(data.ts)]/data.ts[8:length(data.ts)])*100))
akurasi.dma <- matrix(c(SSE.dma, MSE.dma, MAPE.dma))
row.names(akurasi.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.dma) <- c("Akurasi m = 3")
akurasi.dma
## Akurasi m = 3
## SSE 4.179738e+21
## MSE 1.266587e+20
## MAPE 5.931604e+00
Metode DMA
#membagi training dan testing
training<-dtafrica[1:32,2]
testing<-dtafrica[33:40,2]
#data time series
training.ts<-ts(training)
testing.ts<-ts(testing,start=33)
Plot DES
Menghitung nilai keakuratan
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = training.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 1
## beta : 0.2366748
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 240271000000
## b 10230378892
plot(des.opt)
legend("topleft", c("Data Aktual", "Peramalan"), col = c("black", "red"),
lty = c(1,1))
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 33 250501378892 242608988136 258393769647 238431008843 262571748941
## 34 260731757783 248179718568 273283796999 241535070380 279928445187
## 35 270962136675 253851616721 288072656629 244793854596 297130418754
## 36 281192515567 259399930385 302985100748 247863632645 314521398488
## 37 291422894458 264758824269 318086964648 250643718139 332202070778
## 38 301653273350 269905583247 333400963453 253099371293 350207175407
## 39 311883652242 274833353249 348933951235 255220109709 368547194775
## 40 322114031134 279542004543 364686057724 257005734980 387222327288
ssedes.train<-des.opt$SSE
msedes.train<-ssedes.train/length(training.ts)
sisaandes<-ramalandesopt$residuals
head(sisaandes)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 304491678 914329969 891187294 735477789
mapedes.train <- sum(abs(sisaandes[4:length(training.ts)]/training.ts[4:length(training.ts)])*100)/length(training.ts)
akurasides.opt <- matrix(c(ssedes.train,msedes.train,mapedes.train))
row.names(akurasides.opt)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.opt) <- c("Akurasi lamda dan gamma optimum")
akurasides.opt
## Akurasi lamda dan gamma optimum
## SSE 1.149585e+21
## MSE 3.592454e+19
## MAPE 3.820348e+00
## Time Series:
## Start = 33
## End = 40
## Frequency = 1
## [1] 6936378892 9519757783 9970136675 15763515567 23607894458 32819273350
## [7] 39364652242 48681031134
SSEtestingdesopt<-sum(selisihdesopt^2)
SSEtestingdesopt<-SSEtestingdesopt/length(testing.ts)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing.ts)*100)/length(testing.ts)
akurasiDesTesting <- matrix(c(SSEtestingdesopt,SSEtestingdesopt,MAPEtestingdesopt))
row.names(akurasiDesTesting)<- c("SSE", "MSE", "MAPE")
colnames(akurasiDesTesting) <- c("Akurasi lamda dan gamma optimum")
akurasiDesTesting
## Akurasi lamda dan gamma optimum
## SSE 7.550609e+20
## MSE 7.550609e+20
## MAPE 8.708468e+00
Perbandingan Metode DMA vs DES
Setelah didapatkan nilai akurasi untuk metode DMA dan DES, selanjutnya akan dibandingkan keakuratan antar metode keduanya.
## Akurasi m = 3 Akurasi lamda dan gamma optimum
## SSE 4.179738e+21 1.149585e+21
## MSE 1.266587e+20 3.592454e+19
## MAPE 5.931604e+00 3.820348e+00
Berdasarkan perbandingan akurasi tersebut, terlihat nilai SSE, MSE, dan MAPE metode DES lebih kecil dibandingkan dengan metode DMA. Oleh karena itu, metode peramalan dan pemulusan yang terbaik antara keduanya adalah dengan metode DES.
Regresi Time Series
Setelah melakukan peramalan, data yang telah dimasukkan kemudian dieksplorasi. Eksplorasi pertama yang dilakukan adalah dengan menggunakan scatter plot.
Eksplorasi Data Regresi
#Pembuatan Scatter Plot
plot(dtafrica$Tanggal,dtafrica$GDP, pch = 20, col = "blue",
main = "Scatter Plot Tahun vs Nilai GDP",
xlab = "Tahun",
ylab = "Nilai GDP")
## [1] 0.9868792
Berdasarkan scatter plot di atas, terlihat adanya hubungan / korelasi positif antara peubah tahun dengan nilai GDP, terlihat titik-titik pada plot yang naik ke arah kanan atas. Hal tersebut juga diperkuat dengan hasil perhitungan aplikasi R di mana didapatkan nilai korelasi sebesar \(0.9868792\).
Pembuatan Model Regresi
Setalah mengetahui adanya hubungan antar dua peubah, maka model regresi dapat ditentukan.
##
## Call:
## lm(formula = GDP ~ Tanggal, data = dtafrica)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.719e+10 -1.245e+10 -2.574e+08 1.061e+10 3.442e+10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.504e+13 4.029e+11 -37.34 <2e-16 ***
## Tanggal 7.668e+09 2.035e+08 37.68 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.486e+10 on 38 degrees of freedom
## Multiple R-squared: 0.9739, Adjusted R-squared: 0.9732
## F-statistic: 1420 on 1 and 38 DF, p-value: < 2.2e-16
Model yang dihasilkan adalah \[y_i=-1.504e13+7.668e09x_t\] Berdasarkan ringkasan model dapat diketahui bahwa hasil uji F memiliki p-value < \(\alpha\) (5%). Artinya, minimal terdapat satu variabel yang berpengaruh nyata terhadap model. Hasil uji-t parsial kedua parameter regresi, yaitu intersep dan koefisien regresi juga menunjukkan hal yang sama, yaitu memiliki p-value < \(\alpha\) (5%) sehingga nyata dalam taraf 5%. Selanjutnya dapat dilihat juga nilai \(R^2=0.9732\). Artinya, sebesar 97.32% keragaman nilai GDP dapat dijelaskan oleh peubah tahun. Hasil ini menunjukkan hasil yang bagus, seolah mendapatkan hasil terbaik. Namun, kita perlu melakukan uji terhadap sisaannya seperti berikut ini.
Uji Sisaan
sisaan<- residuals(modelaf)
fitValue<- predict(modelaf)
# Q-Q Plot for residuals
qqnorm(sisaan)
qqline(sisaan, col = "steelblue", lwd = 2)
# Sisaan vs Fitted Values Plot
plot(fitValue, sisaan, col = "steelblue", pch = 20, xlab = "Sisaan", ylab = "Fitted values", main = "Sisaan vs Fitted Values")
abline(a = 0, b = 0, lwd = 2)
# Histogram of Sisaan
hist(sisaan, col = "steelblue", main = "Histogram of Sisaan", xlab = "Sisaan")
# Sisaan vs Order Plot
plot(seq_along(sisaan), sisaan, col = "steelblue", pch = 20, xlab = "Sisaan", ylab = "Order", main = "Sisaan vs Order")
lines(seq_along(sisaan), sisaan, col = "red")
abline(a = 0, b = 0, lwd = 2)
Dua plot di samping kiri digunakan untuk melihat apakah sisaan menyebar normal. Normal Q-Q Plot di atas menunjukkan bahwa sisaan cenderung menyebar normal, namun histogram dari sisaan kurang menunjukkan sisaan menyebar normal Selanjutnya, dua plot di samping kanan digunakan untuk melihat autokorelasi. Plot Sisaan vs Fitted Value dan Plot Sisaan vs Order menunjukkan adanya pola pada sisaan. Untuk lebih lanjut akan digunakan uji formal melihat normalitas sisaan dan plot ACF dan PACF untuk melihat apakah ada autokorelasi atau tidak.
Uji Formal
Melihat Sisaan Menyebar Normal/Tidak
Hipotesis H0: sisaan mengikuti sebaran normal H1: sisaan tidak mengikuti sebaran normal
##
## Shapiro-Wilk normality test
##
## data: sisaan
## W = 0.98547, p-value = 0.8785
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: sisaan
## D = 0.076687, p-value = 0.9584
## alternative hypothesis: two-sided
Berdasarkan uji formal Saphiro-Wilk dan Kolmogorov-Smirnov didapatkan nilai p-value > \(\alpha\) (5%). Artinya, cukup bukti untuk menyatakan sisaan berdistribusi normal.
Pendeteksian Autokorelasi
Berdasarkan plot ACF dan PACF, terlihat semua diluar rentang batas dan terdapat lag yang signifikan. Namun, untuk lebih memastikan akan dilakukan uji formal dengan uji Durbin Watson.
Hipotesis H0: tidak ada autokorelasi H1: ada autokorelasi
##
## Durbin-Watson test
##
## data: modelaf
## DW = 0.16924, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
dengan nilai p-value < 0.05 dapat disimpulkan bahwa tolak H0, cukup bukti mengatakan adanya autokorelasi. Oleh karena itu, diperlukan penangan autokorelasi. Penanganan yang akan digunakan menggunakan dua metode, yaitu Cochrane-Orcutt dan Hildret-Lu.
Penanganan Autokorelasi
Metode Cochrane-Orcutt
Penanganan metode Cochrane-Orcutt dapat dilakukan dengan bantuan packages Orcutt pada aplikasi R maupun secara manual. Berikut ini ditampilkan cara menggunakan bantuan library packages Orcutt.
## Cochrane-orcutt estimation for first order autocorrelation
##
## Call:
## lm(formula = GDP ~ Tanggal, data = dtafrica)
##
## number of interaction: 17
## rho 0.850065
##
## Durbin-Watson statistic
## (original): 0.16924 , p-value: 2.284e-19
## (transformed): 1.19653 , p-value: 2.384e-03
##
## coefficients:
## (Intercept) Tanggal
## -1.632997e+13 8.312521e+09
Hasil keluaran model setelah dilakukan penanganan adalah sebagai berikut. \[y_i=-1.632997\text{x}10^{13}+8.312521\text{x}10^{9}x_t\] Untuk nilai \(ρ ̂\) optimum yang digunakan adalah \(0.8500649\). Nilai tersebut dapat diketahui dengan syntax berikut.
## [1] 0.8500649
Selanjutnya akan dilakukan transformasi secara manual dengan syntax berikut ini.
## [1] 21216962290 22307471356 23702472100 25779376633 28049537325
## [6] 30374910060 33049155473 35933757402 38749864977 42964345101
## [11] 43702318276 47632993913 51627511757 66610917871 81658052383
## [16] 86883552689 88290755581 98868135190 110802000000 129781000000
## [21] 143250000000 154793000000 166208000000 168165000000 169303000000
## [26] 177750000000 179898000000 185812000000 202093000000 214473000000
## [31] 239433000000 240271000000 243565000000 251212000000 260992000000
## [36] 265429000000 267815000000 268834000000 272519000000 273433000000
## [1] 22307471356 23702472100 25779376633 28049537325 30374910060
## [6] 33049155473 35933757402 38749864977 42964345101 43702318276
## [11] 47632993913 51627511757 66610917871 81658052383 86883552689
## [16] 88290755581 98868135190 110802000000 129781000000 143250000000
## [21] 154793000000 166208000000 168165000000 169303000000 177750000000
## [26] 179898000000 185812000000 202093000000 214473000000 239433000000
## [31] 240271000000 243565000000 251212000000 260992000000 265429000000
## [36] 267815000000 268834000000 272519000000 273433000000
#Transformasi Manual
gdp.trans<- dtafrica$GDP[-1]-dtafrica$GDP[-40]*rho
tahun.trans<- dtafrica$Tanggal[-1]-dtafrica$Tanggal[-40]*rho
modelCOmanual<- lm(gdp.trans~tahun.trans)
summary(modelCOmanual)
##
## Call:
## lm(formula = gdp.trans ~ tahun.trans)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.287e+09 -3.746e+09 -1.507e+09 3.243e+09 1.827e+10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.448e+12 1.568e+11 -15.62 <2e-16 ***
## tahun.trans 8.313e+09 5.267e+08 15.78 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.55e+09 on 37 degrees of freedom
## Multiple R-squared: 0.8707, Adjusted R-squared: 0.8672
## F-statistic: 249.1 on 1 and 37 DF, p-value: < 2.2e-16
#Mencari Penduga Koefisien Regresi setelah Transformasi ke Persamaan Awal
b0bintang <- modelCOmanual$coefficients[-2]
b0 <- b0bintang/(1-rho)
b1 <- modelCOmanual$coefficients[-1]
b0
## (Intercept)
## -1.632997e+13
## tahun.trans
## 8312520660
Metode Hildreth-Lu
Penanganan kedua adalah menggunakan metode Hildreth-Lu. Metode ini akan mencari nilai SSE terkecil dan dapat dicari secara manual maupun menggunakan packages. Jika menggunakan packages, gunakan library packages HORM.
#Penanganan Autokorelasi Hildreth lu
# Hildreth-Lu
hildreth.lu.func<- function(r, model){
x <- model.matrix(model)[,-1]
y <- model.response(model.frame(model))
n <- length(y)
t <- 2:n
y <- y[t]-r*y[t-1]
x <- x[t]-r*x[t-1]
return(lm(y~x))
}
#Pencariab rho yang meminimumkan SSE
r <- c(seq(0.8,1, by= 0.01))
tab <- data.frame("rho" = r, "SSE" = sapply(r, function(i){deviance(hildreth.lu.func(i, modelaf))}))
round(tab, 4)
## rho SSE
## 1 0.80 1.160293e+21
## 2 0.81 1.152886e+21
## 3 0.82 1.147122e+21
## 4 0.83 1.143002e+21
## 5 0.84 1.140526e+21
## 6 0.85 1.139693e+21
## 7 0.86 1.140504e+21
## 8 0.87 1.142959e+21
## 9 0.88 1.147058e+21
## 10 0.89 1.152800e+21
## 11 0.90 1.160186e+21
## 12 0.91 1.169216e+21
## 13 0.92 1.179890e+21
## 14 0.93 1.192207e+21
## 15 0.94 1.206168e+21
## 16 0.95 1.221773e+21
## 17 0.96 1.239021e+21
## 18 0.97 1.257913e+21
## 19 0.98 1.278449e+21
## 20 0.99 1.300629e+21
## 21 1.00 1.363601e+21
#Rho optimal di sekitar 0.9
rOpt <- seq(0.9, 1, by= 0.01)
tabOpt <- data.frame("rho" = rOpt, "SSE" = sapply(rOpt, function(i){deviance(hildreth.lu.func(i, modelaf))}))
head(tabOpt[order(tabOpt$SSE),])
## rho SSE
## 1 0.90 1.160186e+21
## 2 0.91 1.169216e+21
## 3 0.92 1.179890e+21
## 4 0.93 1.192207e+21
## 5 0.94 1.206168e+21
## 6 0.95 1.221773e+21
#Grafik SSE optimum
par(mfrow = c(1,1))
plot(tab$SSE ~ tab$rho , type = "l", xlab = "Rho", ylab = "SSE")
abline(v = tabOpt[tabOpt$SSE==min(tabOpt$SSE),"rho"], lty = 2, col="red",lwd=2)
text(x=0.9, y=1.160186e+21, labels = "rho=0.9", cex = 0.8)
Model Terbaik
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.940e+09 -3.929e+09 -1.871e+09 3.447e+09 1.805e+10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.693e+12 1.585e+11 -10.68 7.39e-13 ***
## x 8.609e+09 7.967e+08 10.81 5.32e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.6e+09 on 37 degrees of freedom
## Multiple R-squared: 0.7594, Adjusted R-squared: 0.7529
## F-statistic: 116.8 on 1 and 37 DF, p-value: 5.323e-13
## y = -1.692582e+13+8609002215x
##
## Durbin-Watson test
##
## data: modelHL
## DW = 1.2275, p-value = 0.003355
## alternative hypothesis: true autocorrelation is greater than 0
##
## Durbin-Watson test
##
## data: modelHL
## DW = 1.2275, p-value = 0.003355
## alternative hypothesis: true autocorrelation is greater than 0
#Perbandingan
sseModelawal <- anova(modelaf)$`Sum Sq`[-1]
sseModelCO <- anova(modelCOmanual)$`Sum Sq`[-1]
sseModelHL <- anova(modelHL)$`Sum Sq`[-1]
mseModelawal <- sseModelawal/length(dtafrica$GDP)
mseModelCO <- sseModelCO/length(dtafrica$GDP)
mseModelHL <- sseModelHL/length(dtafrica$GDP)
akurasi <- matrix(c(sseModelawal,sseModelCO,sseModelHL,
mseModelawal,mseModelCO,mseModelHL),nrow=2,ncol=3,byrow = T)
colnames(akurasi) <- c("Model Awal", "Model Cochrane-Orcutt", "Model Hildreth-Lu")
row.names(akurasi) <- c("SSE","MSE")
akurasi
## Model Awal Model Cochrane-Orcutt Model Hildreth-Lu
## SSE 8.389669e+21 1.139693e+21 1.160186e+21
## MSE 2.097417e+20 2.849233e+19 2.900466e+19
Berdasarkan hasil tersebut dapat diketahui bahwa hasil penanganan autokorelasi dengan metode Cochrane-Orcutt dan Hildreth-Lu telah berhasil terbukti dapat mengurangi nilai SSE dan lebih baik dibandingkan model awal ketika autokorelasi masih terjadi, yaitu sebesar \(8.389669\text{x}10^{21}\) menjadi \(1.139693\text{x}10^{21}\) pada model Cochrane-Orcutt dan sebesar \(1.160186\text{x}10^{21}\) pada model Hildreth-Lu.
Akan tetapi penanganan autokorelasi masih terjadi, sehingga diperlukan metode yang lebih lanjut
Dengan model terbaik yang terbangun \[y = -1.692582\text{x}10^{13}+8609002215x\]