## ----------------------------------------------------------------------------------------------------------------- # Load the package library(onlineforecast) ## ----------------------------------------------------------------------------------------------------------------- # Keep it in D to simplify notation D <- Dbuilding ## ----------------------------------------------------------------------------------------------------------------- # The class of D class(D) ## ----------------------------------------------------------------------------------------------------------------- # Print the names to see the variables in the data names(D) ## ----------------------------------------------------------------------------------------------------------------- summary.default(D) ## ----------------------------------------------------------------------------------------------------------------- summary(D) ## ----------------------------------------------------------------------------------------------------------------- # The time class(D$t) head(D$t) tail(D$t) ## ----eval=FALSE--------------------------------------------------------------------------------------------------- ## ?as.POSIXct ## ?strftime ## ----------------------------------------------------------------------------------------------------------------- # Convert from a time stamp (tz="GMT" per default) ct("2019-01-01 11:00") # Convert from unix time ct(3840928387) ## ----------------------------------------------------------------------------------------------------------------- str(D$heatload) ## ----------------------------------------------------------------------------------------------------------------- # Same length as time length(D$t) length(D$heatload) ## ----------------------------------------------------------------------------------------------------------------- plot(D$t, D$heatload, type="l", xlab="Time", ylab="Headload (kW)") ## ----------------------------------------------------------------------------------------------------------------- # The observation D$heatload[2] # Represents the average load between D$t[1] # and D$t[2] ## ----------------------------------------------------------------------------------------------------------------- # Global radiation forecasts head(D$I) ## ----------------------------------------------------------------------------------------------------------------- # First time point D$t[1] ## ----------------------------------------------------------------------------------------------------------------- # The forecast available ahead in time is in the first row D$I[1, ] ## ----------------------------------------------------------------------------------------------------------------- i <- 1:ncol(D$I) plot(D$t[i], D$I[1, ], type="l", xlab="Time", ylab="Global radiation forecast (I in W/m²)") ## ----------------------------------------------------------------------------------------------------------------- # Just pick some points by i <- 200:296 plot(D$t[i], D$I$k8[i], type="l", col=2, xlab="Time", ylab="Global radiation (W/m²)") # Add the observations lines(D$t[i], D$Iobs[i]) legend("topright", c("8-step forecasts","Observations"), bg="white", lty=1, col=2:1) ## ----------------------------------------------------------------------------------------------------------------- plot(D$t[i], lagvec(D$I$k8[i], 8), type="l", col=2, xlab="Time", ylab="Global radiation (W/m²)") lines(D$t[i], D$Iobs[i]) legend("topright", c("8-step forecasts lagged","Observations"), bg="white", lty=1, col=2:1) ## ----------------------------------------------------------------------------------------------------------------- plot_ts(D, patterns=c("^I"), c("2010-12-15","2010-12-18"), kseq=c(1,8,24,36)) ## ----eval=FALSE--------------------------------------------------------------------------------------------------- ## plotly_ts(D, patterns=c("heatload$","^I"), c("2010-12-15","2010-12-18"), kseq=c(1,8,24,36)) ## ----fig.width=2*fhs, fig.height=fhs, out.width=ows2-------------------------------------------------------------- par(mfrow=c(1,2)) plot(D$Ta$k8, D$heatload) plot(lagvec(D$Ta$k8, 8), D$heatload) ## ----fig.height=figwidth------------------------------------------------------------------------------------------ pairs(D, nms=c("heatload","Taobs","Ta","t"), kseq=c(1,8,24)) ## ----fig.width=fhs, fig.height=fhs, out.width=ows----------------------------------------------------------------- # Lag the 8-step forecasts to be aligned with the observations x <- lagvec(D$I$k8, 8) # Take a smaller range x <- x[i] # Take the observations y <- D$Iobs[i] # Fit a linear regression model fit <- lm(y ~ x) # Plot the result plot(x, y, xlab="8-step forecasts (W/m²)", ylab="Obsservations (W/m²)", main="Global radiation") abline(fit) ## ----------------------------------------------------------------------------------------------------------------- plot(D$t[i], predict.lm(fit, newdata=data.frame(x)), type="l", ylim=c(0,max(y)), xlab="Time", ylab="Global radiation (W/m^2)", col=2) lines(D$t[i], y) legend("topright", c("8-step forecasts lagged","Observations"), lty=1, col=2:1) ## ----------------------------------------------------------------------------------------------------------------- # Take the 1 to 4 values of each variable in D Dsub <- subset(D, 1:4) summary(Dsub) ## ----------------------------------------------------------------------------------------------------------------- which(in_range("2010-12-20",D$t,"2010-12-21")) ## ----------------------------------------------------------------------------------------------------------------- Dsub <- subset(D, c("2010-12-20","2010-12-21")) summary(Dsub) Dsub$t ## ----------------------------------------------------------------------------------------------------------------- Df <- as.data.frame(Dsub) names(Df) ## ----------------------------------------------------------------------------------------------------------------- library(data.table) setDT(Df) class(Df) ## ----------------------------------------------------------------------------------------------------------------- # Set back to data.frame setDF(Df) # Convert to a data.list Dsub2 <- as.data.list(Df) # Compare it with the original Dsub summary(Dsub2) summary(Dsub)