Commit aa9fffd0 authored by starter371639's avatar starter371639
Browse files

stationär und heterogen

parent a0cd7606
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
"Trading.Day","Closing.Price"
1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1
10,1
11,1
12,1
13,1
14,1
(6 KiB)

File changed.

No diff preview for this file type.

(6 KiB)

File changed.

No diff preview for this file type.

+84 −0
Original line number Diff line number Diff line
# Bibliotheken laden
library(forecast)
library(dplyr)
library(lubridate)

# Datenimport
EUA_data <- read.csv("/Users/benwais/Library/CloudStorage/OneDrive-Persönlich/Uni/AIDAHO Thinkering Club/carbonclaus/01_data/ets_EUA_time_series_secondary_market.csv", stringsAsFactors = FALSE, skip=1)

# Daten bereinigen
EUA_data <- EUA_data %>%
  mutate(Price = as.numeric(Price),
         Date = as.Date(Date)) %>%
  filter(!is.na(Price))

# Zeitreihe erstellen
EUA_ts <- ts(EUA_data$Price, frequency = 252) # 252 Handelstage im Jahr
# autokorrelationsfunktion (acf)
acf(EUA_ts)
# pacf
pacf(EUA_ts)
#######################
library(tseries)
adf.test(EUA_ts)
# -> sieht gar nicht gut aus - nicht stationär :(
EUA_ts_diff <- diff(EUA_ts)
plot(EUA_ts_diff, main = "Differenzierte Zeitreihe")
# -> heterokedastie
acf(EUA_ts_diff, main = "ACF der differenzierten Zeitreihe")
pacf(EUA_ts_diff, main = "PACF der differenzierten Zeitreihe")
# -> neuer Versuch
adf.test(EUA_ts_diff)
# -> sieht mega aus!
# log transformation, weil heterokedastie
EUA_ts_log <- log(EUA_ts)
EUA_ts_log_diff <- diff(EUA_ts_log)
plot(EUA_ts_log_diff, main = "Differenzierte logarithmierte Zeitreihe")
# -> nochmals chechen: 
adf.test(EUA_ts_log_diff)
acf(EUA_ts_log_diff, main = "ACF der differenzierten logarithmierten Zeitreihe")
pacf(EUA_ts_log_diff, main = "PACF der differenzierten logarithmierten Zeitreihe")
######################TRAINING#################
fit_nonseason <- auto.arima(EUA_ts_log_diff, seasonal = FALSE)
summary(fit_nonseason)

checkresiduals(fit_nonseason)

####### und noch nach Saisionalität checken?
decomposed <- stl(EUA_ts_log_diff, s.window = "periodic")
plot(decomposed)
#-> saisonality ist da
fit <- auto.arima(EUA_ts_log_diff, seasonal = TRUE)
summary(fit)

checkresiduals(fit)

# -> sieht oke aus :/
forecast_fit <- forecast(fit, h = 14)  # Prognose für 14 t
plot(forecast_fit, main = "Prognose der logarithmierten Zeitreihe")

###################### Rücktransformierung ####################################
exp_forecast <- exp(forecast_fit$mean)

plot(exp_forecast)

##########################################################neu##################
#######################neu#####################################################
###########neu#################################################################
################################neu############################################
###############################################################################
#############################neu###############################################
###############################################################################


# Lösung formatieren
solution <- data.frame(
  Trading.Day = 1:14,
  Closing.Price = round(exp_forecast, 2)
)

# CSV speichern
write.csv(solution, file = "/Users/benwais/Library/CloudStorage/OneDrive-Persönlich/Uni/AIDAHO Thinkering Club/carbonclaus/01_data/EUA_price_predictions_V1.csv", row.names = FALSE)

# Ausgabe der Lösung
print(solution)

carbonclaus.Rproj

0 → 100644
+13 −0
Original line number Diff line number Diff line
Version: 1.0

RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default

EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8

RnwWeave: Sweave
LaTeX: pdfLaTeX