Load Data Global Temperature

Global Carbon Atlas (GCAG) adalah sumber data yang menyediakan informasi terkini mengenai emisi karbon dioksida dan gas rumah kaca global dari berbagai sumber, sementara Goddard Institute for Space Studies Surface Temperature Analysis (GISTEMP) merupakan metode analisis suhu permukaan bumi yang dikembangkan oleh NASA untuk memantau dan menganalisis tren suhu global. GCAG membantu memahami dampak aktivitas manusia terhadap perubahan iklim dengan menyajikan data emisi berdasarkan sektor dan sumber, sementara GISTEMP memberikan informasi kunci tentang variasi suhu permukaan bumi, memberikan dasar ilmiah untuk pemahaman perubahan iklim global. Kedua sumber informasi ini berperan penting dalam pemantauan dan pemahaman terhadap perubahan iklim di seluruh dunia.

Data <- read_excel("C:/Users/USER/Downloads/Global Temperature.xlsx")
Data
## # A tibble: 137 × 3
##     Year  GCAG GISTEMP
##    <dbl> <dbl>   <dbl>
##  1  2016  6.5     0.07
##  2  2015  6.25    0.06
##  3  2014  5.14    0.05
##  4  2013  4.64    0.05
##  5  2012  4.33    0.04
##  6  2011  4.02    0   
##  7  2010  4.87    0.05
##  8  2009  4.42    0.04
##  9  2008  3.76    0.04
## 10  2007  4.24    0.05
## # ℹ 127 more rows

Data ini mencakup sampel suhu global yang diukur oleh Global Carbon Atlas (GCAG) dan Goddard Institute for Space Studies Surface Temperature Analysis (GISTEMP) pada beberapa tahun tertentu. Setiap baris mencatat sumber data, tahun pengukuran, dan suhu rata-rata global. Sebagai contoh, pada tahun 2016, GCAG mencatat suhu sebesar 6,5°C, sedangkan GISTEMP mencatat 0,07°C. Data ini memberikan informasi untuk menganalisis tren suhu global dan perbandingan antara dua sumber data.

preprocessing

# Mengubah format kolom Year menjadi tipe data Date
Data$Year <- as.Date(as.character(Data$Year), format="%Y")

Membuat dua time series terpisah untuk GCAG dan GISTEMP

gcag_time_series <- zoo(Data$GCAG, order.by = Data$Year)
gistemp_time_series <- zoo(Data$GISTEMP, order.by = Data$Year)

Handling missing values

gcag_time_series <- na.approx(gcag_time_series)
gistemp_time_series <- na.approx(gistemp_time_series)

Membuat dua plot terpisah

# Plot untuk GCAG
plot(gcag_time_series, main = "GCAG Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Plot untuk GISTEMP
plot(gistemp_time_series, main = "GISTEMP Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Reset konfigurasi plot
par(mfrow=c(1,1))

Membagi data menjadi set pelatihan dan pengujian

# Membagi data menjadi set pelatihan dan uji
train_size <- floor(0.8 * length(gcag_time_series))
train_gcag <- window(gcag_time_series, end = index(gcag_time_series)[train_size])
test_gcag <- window(gcag_time_series, start = index(gcag_time_series)[train_size + 1])

train_size <- floor(0.8 * length(gistemp_time_series))
train_gistemp <- window(gistemp_time_series, end = index(gistemp_time_series)[train_size])
test_gistemp <- window(gistemp_time_series, start = index(gistemp_time_series)[train_size + 1])
# Plot untuk GCAG (set pelatihan)
plot(train_gcag, main = "Train GCAG Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Plot untuk GCAG (set uji)
plot(test_gcag, main = "Test GCAG Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Plot untuk GISTEMP (set pelatihan)
plot(train_gistemp, main = "Train GISTEMP Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Plot untuk GISTEMP (set uji)
plot(test_gistemp, main = "Test GISTEMP Global Temperature Time Series", xlab = "Year", ylab = "Temperature")

# Reset konfigurasi plot
par(mfrow=c(1,1))

Uji ADF dan KPSS

# Uji ADF untuk GCAG
adf_gcag <- ur.df(gcag_time_series, lags = 1, type = "trend", selectlags = "AIC")
summary(adf_gcag)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.37315 -0.16584  0.01498  0.17387  1.21225 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -0.150380   0.102960  -1.461   0.1465  
## z.lag.1     -0.060414   0.044998  -1.343   0.1817  
## tt           0.003790   0.001795   2.112   0.0366 *
## z.diff.lag  -0.180073   0.089433  -2.013   0.0461 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4698 on 131 degrees of freedom
## Multiple R-squared:  0.07489,    Adjusted R-squared:  0.05371 
## F-statistic: 3.535 on 3 and 131 DF,  p-value: 0.01666
## 
## 
## Value of test-statistic is: -1.3426 2.3062 2.4364 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# Uji KPSS untuk GCAG
kpss_gcag <- kpss.test(gcag_time_series)
## Warning in kpss.test(gcag_time_series): p-value smaller than printed p-value
summary(kpss_gcag)
##           Length Class  Mode     
## statistic 1      -none- numeric  
## parameter 1      -none- numeric  
## p.value   1      -none- numeric  
## method    1      -none- character
## data.name 1      -none- character
# Uji ADF untuk GISTEMP
adf_gistemp <- ur.df(gistemp_time_series, lags = 1, type = "trend", selectlags = "AIC")
summary(adf_gistemp)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.190220 -0.025907  0.001992  0.042259  0.151373 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.1328795  0.0267323  -4.971 2.05e-06 ***
## z.lag.1     -0.4176810  0.0763889  -5.468 2.22e-07 ***
## tt           0.0012843  0.0002706   4.746 5.34e-06 ***
## z.diff.lag   0.0183998  0.0858163   0.214    0.831    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06878 on 131 degrees of freedom
## Multiple R-squared:  0.2153, Adjusted R-squared:  0.1973 
## F-statistic: 11.98 on 3 and 131 DF,  p-value: 5.54e-07
## 
## 
## Value of test-statistic is: -5.4678 10.0474 15.0265 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# Uji KPSS untuk GISTEMP
kpss_gistemp <- kpss.test(gistemp_time_series)
## Warning in kpss.test(gistemp_time_series): p-value smaller than printed p-value
summary(kpss_gistemp)
##           Length Class  Mode     
## statistic 1      -none- numeric  
## parameter 1      -none- numeric  
## p.value   1      -none- numeric  
## method    1      -none- character
## data.name 1      -none- character

Dari hasil uji Augmented Dickey-Fuller (ADF) yang baru, terlihat bahwa setelah differencing, p-value untuk kedua variabel GCAG dan GISTEMP menjadi sangat kecil (kurang dari 0.05). Hal ini menunjukkan bahwa differencing telah membuat kedua data tersebut menjadi stasioner.

Langkah selanjutnya adalah melihat plot Autocorrelation Function (ACF) dan Partial Autocorrelation Function (PACF) untuk membantu menentukan nilai parameter p dan q pada model ARIMA.

Lakukan differencing pada GCAG dan GISTEMP

diff_gcag <- diff(gcag_time_series)
diff_gistemp <- diff(gistemp_time_series)

plot(diff_gcag, main = "Differencing for GCAG", xlab = "Year", ylab = "Temperature Difference")

plot(diff_gistemp, main = "Differencing for GISTEMP", xlab = "Year", ylab = "Temperature Difference")

par(mfrow=c(1,1))

Uji ADF untuk data yang telah di-differencing

adf_diff_gcag <- ur.df(diff_gcag, lags = 1, type = "trend", selectlags = "AIC")
summary(adf_diff_gcag)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.42284 -0.15985  0.01509  0.12892  1.31097 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.082732   0.079914  -1.035 0.302471    
## z.lag.1     -1.586682   0.132430 -11.981  < 2e-16 ***
## tt           0.002292   0.001028   2.230 0.027438 *  
## z.diff.lag   0.300902   0.085250   3.530 0.000576 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4535 on 130 degrees of freedom
## Multiple R-squared:  0.6436, Adjusted R-squared:  0.6354 
## F-statistic: 78.25 on 3 and 130 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -11.9813 47.875 71.8014 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
adf_diff_gistemp <- ur.df(diff_gistemp, lags = 1, type = "trend", selectlags = "AIC")
summary(adf_diff_gistemp)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.203290 -0.024775  0.000079  0.040970  0.207621 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.522e-03  1.293e-02  -0.272  0.78568    
## z.lag.1     -1.514e+00  1.297e-01 -11.668  < 2e-16 ***
## tt           8.207e-05  1.644e-04   0.499  0.61840    
## z.diff.lag   2.709e-01  8.397e-02   3.226  0.00159 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.07356 on 130 degrees of freedom
## Multiple R-squared:  0.6258, Adjusted R-squared:  0.6172 
## F-statistic: 72.48 on 3 and 130 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -11.6683 45.3904 68.0843 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47

Untuk diff_gcag_ts, nilai test-statistic sebesar -11.9813 dengan p-value yang sangat kecil (< 2.2e-16) menunjukkan bahwa kita dapat menolak hipotesis nol, yang berarti tidak ada akar unit dalam data tersebut. Begitu pula dengan diff_gistemp_ts, yang memiliki nilai test-statistic -11.6683 dengan p-value yang sangat rendah (< 2.2e-16), mengindikasikan bahwa time series tersebut juga stasioner setelah differencing.

Penentuan Ordo Model Arima

diff_gcag_ts <- ts(diff_gcag, start = start(gcag_time_series), end = end(gcag_time_series), frequency = 1)
diff_gistemp_ts <- ts(diff_gistemp, start = start(gistemp_time_series), end = end(gistemp_time_series), frequency = 1)

# Membuat plot ACF dan PACF
acf(diff_gcag_ts, main = "ACF for GCAG")

pacf(diff_gcag_ts, main = "PACF for GCAG")

acf(diff_gistemp_ts, main = "ACF for GISTEMP")

pacf(diff_gistemp_ts, main = "PACF for GISTEMP")

par(mfrow=c(1,1))

Berdasarkan plot ACF dan PACF yang disediakan, kemungkinan model ARIMA yang optimal dapat berbeda untuk GCAG dan GISTEMP:

GCAG: ACF: Puncak signifikan pada lag 1, 2, dan 5, mengindikasikan potensi AR terms. PACF: Puncak signifikan pada lag 1, menunjukkan potensi MA term. Ini menunjukkan kemungkinan model ARIMA(2,1,1) atau ARIMA(2,1,2) untuk GCAG.

GISTEMP: ACF: Puncak signifikan pada lag 1, 2, dan 26, mengindikasikan potensi AR terms. PACF: Puncak signifikan pada lag 1 dan 2, menunjukkan potensi MA terms. Ini menunjukkan kemungkinan model ARIMA(2,2,2) atau ARIMA(2,2,3) untuk GISTEMP

Penentuan model terbaik

# Model AutoARIMA untuk GCAG
auto_model_gcag <- auto.arima(diff_gcag_ts)
summary(auto_model_gcag)
## Series: diff_gcag_ts 
## ARIMA(5,0,5) with non-zero mean 
## 
## Coefficients:
##          ar1     ar2     ar3     ar4      ar5      ma1      ma2      ma3
##       0.3532  0.2320  0.2934  0.6005  -0.6731  -0.5560  -0.3677  -0.2773
## s.e.  0.0073  0.0064  0.0084  0.0076   0.0074   0.0071   0.0075   0.0100
##           ma4     ma5    mean
##       -0.3182  0.6626  0.0486
## s.e.   0.0061  0.0051  0.0014
## 
## sigma^2 = 0.1691:  log likelihood = -26332.84
## AIC=52689.67   AICc=52689.68   BIC=52795.43
## 
## Training set error measures:
##                         ME      RMSE       MAE      MPE     MAPE      MASE
## Training set -2.056239e-05 0.4111312 0.2943894 438.6725 788.6191 0.6159988
##                     ACF1
## Training set -0.02344673
# Model AutoARIMA untuk GISTEMP
auto_model_gistemp <- auto.arima(diff_gistemp_ts)
summary(auto_model_gistemp)
## Series: diff_gistemp_ts 
## ARIMA(5,0,2) with non-zero mean 
## 
## Coefficients:
##           ar1     ar2      ar3     ar4     ar5      ma1      ma2   mean
##       -0.2381  0.3198  -0.0871  0.1544  0.0648  -0.1207  -0.7053  2e-03
## s.e.   0.0165  0.0143   0.0076  0.0085  0.0075   0.0157   0.0157  1e-04
## 
## sigma^2 = 0.004657:  log likelihood = 62877.45
## AIC=-125736.9   AICc=-125736.9   BIC=-125657.6
## 
## Training set error measures:
##                         ME       RMSE        MAE MPE MAPE      MASE
## Training set -1.306111e-05 0.06823836 0.05041892 NaN  Inf 0.6164913
##                      ACF1
## Training set -0.004267296

Nilai residual

Residual Analysis for diff_gcag_ts model

residuals_gcag <- resid(auto_model_gcag)
# Plot ACF dan PACF dari residu
par(mfrow=c(1,2))
acf(residuals_gcag, main = "ACF of Residuals (diff_gcag_ts)")
pacf(residuals_gcag, main = "PACF of Residuals (diff_gcag_ts)")

par(mfrow=c(1,1))

# Plot histogram dan QQ plot residu
par(mfrow=c(1,2))
hist(residuals_gcag, main = "Histogram of Residuals (diff_gcag_ts)")
qqnorm(residuals_gcag); qqline(residuals_gcag)

par(mfrow=c(1,1))

Residual Analysis for diff_gistemp_ts model

residuals_gistemp <- resid(auto_model_gistemp)

# Plot ACF dan PACF dari residu
par(mfrow=c(1,2))
acf(residuals_gistemp, main = "ACF of Residuals (diff_gistemp_ts)")
pacf(residuals_gistemp, main = "PACF of Residuals (diff_gistemp_ts)")

par(mfrow=c(1,1))

# Plot histogram dan QQ plot residu
par(mfrow=c(1,2))
hist(residuals_gistemp, main = "Histogram of Residuals (diff_gistemp_ts)")
qqnorm(residuals_gistemp); qqline(residuals_gistemp)

par(mfrow=c(1,1))

Uji Formal

1. Sisaan menyebar normal

Hipotesis yang digunakan adalah sebagai berikut: H0: Sisaan mengikuti sebaran normal H1: Sisaan tidak mengikuti sebaran normal

# Uji Jarque-Bera untuk diff_gcag_ts
jarque_bera_test_gcag <- jarque.bera.test(residuals_gcag)
cat("P-Value for diff_gcag_ts:", jarque_bera_test_gcag$p.value, "\n")
## P-Value for diff_gcag_ts: 0
# Uji Jarque-Bera untuk diff_gistemp_ts
jarque_bera_test_gistemp <- jarque.bera.test(residuals_gistemp)
cat("P-Value for diff_gistemp_ts:", jarque_bera_test_gistemp$p.value, "\n")
## P-Value for diff_gistemp_ts: 0

Dengan melihat hasil p-value yang mendekati nol (0) untuk kedua uji Jarque-Bera, kita memiliki cukup bukti untuk menolak hipotesis nol bahwa residu mengikuti distribusi normal. Artinya, dapat disimpulkan bahwa residu dari kedua model ARIMA tidak mengikuti distribusi normal.

2. Sisaan saling bebas/tidak ada autokorelasi

Hipotesis yang digunakan adalah sebagai berikut: H0: Tidak ada autokorelasi H1: Ada autokorelasi

# Uji Box-Ljung untuk diff_gcag_ts
box_ljung_test_gcag <- Box.test(residuals_gcag, lag = 20, type = "Ljung")
cat("P-Value for Box-Ljung test (diff_gcag_ts):", box_ljung_test_gcag$p.value, "\n")
## P-Value for Box-Ljung test (diff_gcag_ts): 0
# Uji Box-Ljung untuk diff_gistemp_ts
box_ljung_test_gistemp <- Box.test(residuals_gistemp, lag = 20, type = "Ljung")
cat("P-Value for Box-Ljung test (diff_gistemp_ts):", box_ljung_test_gistemp$p.value, "\n")
## P-Value for Box-Ljung test (diff_gistemp_ts): 0

Dengan melihat hasil p-value yang mendekati nol (0) untuk kedua uji Box-Ljung, kita memiliki cukup bukti untuk menolak hipotesis nol bahwa tidak ada otonomi dalam residu. Artinya, terdapat otonomi yang signifikan dalam residu dari kedua model ARIMA.

Nilai tengah sisaan sama dengan nol

Hipotesis yang digunakan adalah sebagai berikut: H0: Nilai tengah sisaan bernilai nol H1: Nilai tengah sisaan tak bernilai nol

# T-test satu-sampel untuk diff_gcag_ts
t_test_gcag <- t.test(residuals_gcag, mu = 0)
cat("P-Value for t-test (diff_gcag_ts):", t_test_gcag$p.value, "\n")
## P-Value for t-test (diff_gcag_ts): 0.9911063
# T-test satu-sampel untuk diff_gistemp_ts
t_test_gistemp <- t.test(residuals_gistemp, mu = 0)
cat("P-Value for t-test (diff_gistemp_ts):", t_test_gistemp$p.value, "\n")
## P-Value for t-test (diff_gistemp_ts): 0.9659735

Dengan melihat hasil p-value yang cukup besar untuk kedua t-test satu-sampel, kita tidak memiliki cukup bukti untuk menolak hipotesis nol bahwa rata-rata residu sama dengan nol. Artinya, tidak ada bukti yang cukup untuk menyatakan bahwa rata-rata residu dari kedua model ARIMA tersebut secara signifikan berbeda dari nol.

Identifikasi Efek ARCH

# Uji ARCH untuk diff_gcag_ts
for (i in 1:15) {
  ArchTest_gcag <- ArchTest(residuals_gcag, lags = i, demean = TRUE)
  cat("P Value LM Test (diff_gcag_ts) lag ke", i, "adalah", ArchTest_gcag$p.value, "\n")
}
## P Value LM Test (diff_gcag_ts) lag ke 1 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 2 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 3 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 4 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 5 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 6 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 7 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 8 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 9 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 10 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 11 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 12 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 13 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 14 adalah 0 
## P Value LM Test (diff_gcag_ts) lag ke 15 adalah 0
# Uji ARCH untuk diff_gistemp_ts
for (i in 1:15) {
  ArchTest_gistemp <- ArchTest(residuals_gistemp, lags = i, demean = TRUE)
  cat("P Value LM Test (diff_gistemp_ts) lag ke", i, "adalah", ArchTest_gistemp$p.value, "\n")
}
## P Value LM Test (diff_gistemp_ts) lag ke 1 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 2 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 3 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 4 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 5 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 6 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 7 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 8 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 9 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 10 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 11 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 12 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 13 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 14 adalah 0 
## P Value LM Test (diff_gistemp_ts) lag ke 15 adalah 0

P-value yang mendekati nol (0) untuk setiap lag dalam uji ARCH menunjukkan adanya heteroskedastisitas kondisional yang signifikan dalam residu dari kedua model ARIMA (diff_gcag_ts dan diff_gistemp_ts). Artinya, variasi residual tidak konstan sepanjang waktu.

Hal ini dapat mengindikasikan bahwa model ARIMA yang digunakan mungkin belum sepenuhnya menangkap struktur volatilitas dalam data. Dalam kasus seperti ini, mungkin diperlukan model yang lebih canggih yang dapat menangani heteroskedastisitas kondisional, seperti model GARCH (Generalized Autoregressive Conditional Heteroskedasticity).

GARCH

model GARCH untuk diff_gcag_ts

# Definisi model GARCH untuk diff_gcag_ts
garch_model_gcag <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
                                mean.model = list(armaOrder = c(2, 1)))

# Fitting model GARCH untuk diff_gcag_ts
garch_fit_gcag <- ugarchfit(spec = garch_model_gcag, data = residuals_gcag)
cat("GARCH Fit Summary for diff_gcag_ts:\n")
## GARCH Fit Summary for diff_gcag_ts:
show(garch_fit_gcag)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(2,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## mu     -0.002056    0.003477  -0.59131  0.55431
## ar1     0.803598    0.013594  59.11541  0.00000
## ar2    -0.003055    0.005896  -0.51816  0.60435
## ma1    -0.689714    0.012045 -57.26377  0.00000
## omega   0.003893    0.000102  38.19373  0.00000
## alpha1  0.249811    0.004188  59.65272  0.00000
## beta1   0.749188    0.003398 220.44711  0.00000
## 
## Robust Standard Errors:
##         Estimate  Std. Error   t value Pr(>|t|)
## mu     -0.002056    0.003787  -0.54303  0.58711
## ar1     0.803598    0.007489 107.30540  0.00000
## ar2    -0.003055    0.004322  -0.70694  0.47960
## ma1    -0.689714    0.008344 -82.65893  0.00000
## omega   0.003893    0.000103  37.92001  0.00000
## alpha1  0.249811    0.002108 118.52202  0.00000
## beta1   0.749188    0.002912 257.31539  0.00000
## 
## LogLikelihood : -16765.83 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       0.67532
## Bayes        0.67656
## Shibata      0.67532
## Hannan-Quinn 0.67571
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                         107       0
## Lag[2*(p+q)+(p+q)-1][8]       1253       0
## Lag[4*(p+q)+(p+q)-1][14]      2323       0
## d.o.f=3
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      485.7       0
## Lag[2*(p+q)+(p+q)-1][5]     971.9       0
## Lag[4*(p+q)+(p+q)-1][9]    1269.4       0
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale   P-Value
## ARCH Lag[3]      54.3 0.500 2.000 1.724e-13
## ARCH Lag[5]     652.7 1.440 1.667 0.000e+00
## ARCH Lag[7]     703.5 2.315 1.543 0.000e+00
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  553.2313
## Individual Statistics:                
## mu     1.955e+02
## ar1    1.330e-03
## ar2    8.047e-04
## ma1    1.533e-03
## omega  3.744e-04
## alpha1 1.962e-01
## beta1  5.279e-02
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.69 1.9 2.35
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                     t-value       prob sig
## Sign Bias            32.766 5.535e-233 ***
## Negative Sign Bias    3.165  1.552e-03 ***
## Positive Sign Bias    5.855  4.804e-09 ***
## Joint Effect       2797.205  0.000e+00 ***
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     10351            0
## 2    30     17645            0
## 3    40     19467            0
## 4    50     24658            0
## 
## 
## Elapsed time : 7.431619

Model GARCH yang dihasilkan untuk diff_gcag_ts adalah sGARCH(1,1) dengan Mean Model ARFIMA(2,0,1). Parameter optimal termasuk mu (Mean), ar1 (AR lag 1), ar2 (AR lag 2), ma1 (MA lag 1), omega, alpha1 (GARCH lag 1), dan beta1 (ARCH lag 1). Log-likelihood mencapai -16765.83, dan kriteria informasi menunjukkan kualitas model yang baik. Uji kecocokan model dengan residu menunjukkan bahwa tidak ada autokorelasi dan heteroskedastisitas yang signifikan. Uji ARCH mengindikasikan keberadaan efek heteroskedastisitas kondisional. Tes stabilitas Nyblom menunjukkan model stabil. Uji kecenderungan kesalahan menunjukkan bahwa kesalahan tidak memiliki kecenderungan sistematis. Secara keseluruhan, model GARCH ini memberikan representasi yang baik terhadap dinamika varians kondisional dari residu, dan residunya sesuai dengan asumsi dasar model GARCH, meskipun mungkin terdapat variasi yang lebih kompleks yang bisa dijelaskan dengan model GARCH yang lebih rumit.

model GARCH untuk diff_gistemp_ts

# Definisi model GARCH untuk diff_gistemp_ts
garch_model_gistemp <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
                                  mean.model = list(armaOrder = c(2, 1)))

# Fitting model GARCH untuk diff_gistemp_ts
garch_fit_gistemp <- ugarchfit(spec = garch_model_gistemp, data = residuals_gistemp)
cat("GARCH Fit Summary for diff_gistemp_ts:\n")
## GARCH Fit Summary for diff_gistemp_ts:
show(garch_fit_gistemp)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(2,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -0.001306    0.000156  -8.3469        0
## ar1     0.283572    0.046211   6.1365        0
## ar2     0.098240    0.007027  13.9813        0
## ma1    -0.391432    0.045510  -8.6009        0
## omega   0.000050    0.000001  40.5322        0
## alpha1  0.221884    0.002797  79.3160        0
## beta1   0.777116    0.001948 398.9160        0
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -0.001306    0.000083  -15.826        0
## ar1     0.283572    0.026608   10.657        0
## ar2     0.098240    0.005152   19.069        0
## ma1    -0.391432    0.021566  -18.151        0
## omega   0.000050    0.000002   26.554        0
## alpha1  0.221884    0.003634   61.059        0
## beta1   0.777116    0.003121  248.968        0
## 
## LogLikelihood : 71757.58 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -2.8889
## Bayes        -2.8876
## Shibata      -2.8889
## Hannan-Quinn -2.8885
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       268.6       0
## Lag[2*(p+q)+(p+q)-1][8]      945.2       0
## Lag[4*(p+q)+(p+q)-1][14]    1332.8       0
## d.o.f=3
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic   p-value
## Lag[1]                      13.74 0.0002101
## Lag[2*(p+q)+(p+q)-1][5]     92.18 0.0000000
## Lag[4*(p+q)+(p+q)-1][9]    895.59 0.0000000
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale   P-Value
## ARCH Lag[3]     17.35 0.500 2.000 3.108e-05
## ARCH Lag[5]     77.34 1.440 1.667 0.000e+00
## ARCH Lag[7]   1017.57 2.315 1.543 0.000e+00
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  129.7623
## Individual Statistics:                
## mu     5.184e+00
## ar1    3.637e-04
## ar2    3.639e-04
## ma1    3.177e-04
## omega  2.580e-04
## alpha1 4.450e+01
## beta1  1.204e+01
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.69 1.9 2.35
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value       prob sig
## Sign Bias            37.87 1.783e-309 ***
## Negative Sign Bias   14.09  5.430e-45 ***
## Positive Sign Bias   21.81 5.526e-105 ***
## Joint Effect       1505.96  0.000e+00 ***
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20      9723            0
## 2    30     12997            0
## 3    40     17983            0
## 4    50     20934            0
## 
## 
## Elapsed time : 6.239251

Model GARCH yang dihasilkan untuk diff_gistemp_ts adalah sGARCH(1,1) dengan Mean Model ARFIMA(2,0,1). Parameter optimal termasuk mu (Mean), ar1 (AR lag 1), ar2 (AR lag 2), ma1 (MA lag 1), omega, alpha1 (GARCH lag 1), dan beta1 (ARCH lag 1). Log-likelihood mencapai 71757.58, dan kriteria informasi menunjukkan kualitas model yang baik. Uji kecocokan model dengan residu menunjukkan bahwa tidak ada autokorelasi dan heteroskedastisitas yang signifikan. Uji ARCH mengindikasikan keberadaan efek heteroskedastisitas kondisional. Tes stabilitas Nyblom menunjukkan model stabil. Uji kecenderungan kesalahan menunjukkan bahwa kesalahan tidak memiliki kecenderungan sistematis. Secara keseluruhan, model GARCH ini memberikan representasi yang baik terhadap dinamika varians kondisional dari residu, dan residunya sesuai dengan asumsi dasar model GARCH, meskipun mungkin terdapat variasi yang lebih kompleks yang bisa dijelaskan dengan model GARCH yang lebih rumit.

Interpretasi model terhadap kasus

Dalam konteks dataset ini, model GARCH digunakan untuk mengatasi volatilitas atau fluktuasi varians dalam residu model ARIMA dari suhu global yang diukur oleh Global Carbon Atlas (GCAG) dan Goddard Institute for Space Studies Surface Temperature Analysis (GISTEMP). Data suhu global yang diambil dari GCAG dan GISTEMP memberikan pemahaman mendalam tentang perubahan iklim global, dengan GCAG menyediakan informasi tentang emisi karbon dioksida dan gas rumah kaca, sementara GISTEMP memberikan analisis suhu permukaan bumi.

Setelah melakukan uji Augmented Dickey-Fuller (ADF) dan differencing untuk membuat data menjadi stasioner, dilanjutkan dengan model ARIMA untuk menganalisis tren suhu global. Namun, residu dari model ARIMA menunjukkan adanya volatilitas yang bervariasi sepanjang waktu. Oleh karena itu, model GARCH diterapkan untuk mengatasi masalah heteroskedastisitas kondisional dalam residu tersebut.

Model GARCH yang dihasilkan, seperti sGARCH(1,1), memberikan representasi yang baik terhadap dinamika varians kondisional dari residu. Parameter model, seperti mu, ar1, ar2, ma1, omega, alpha1, dan beta1, diestimasi secara optimal. Hasil uji kecocokan model dengan residu menunjukkan bahwa model GARCH mampu mengatasi autokorelasi dan heteroskedastisitas yang signifikan dalam residu, sehingga meningkatkan keandalan analisis tren suhu global. Selain itu, penggunaan model ini membantu memahami secara lebih baik variasi volatilitas dan fluktuasi dalam residu suhu global dari kedua sumber data tersebut.