aemet_temp {goffda} | R Documentation |
AEMET daily temperatures during 1974–2013
Description
Series of daily temperatures of 73 Spanish weather stations during the 40-year period 1974–2013.
Usage
aemet_temp
Format
A list with the following entries:
- temp
an
fdata
with 2892 temperature (in Celsius degrees) curves, discretized on 365 equispaced grid points (days) on. Each curve corresponds to the yearly records of a weather station.
- df
a dataframe with metadata for each curve:
ind
: identifier of the weather station.name
: name of the weather station.year
: year of the observation.
Details
For consistency with the fda.usc-package
's
aemet
dataset, the names and identifiers of the 73
weather stations are the same as in that dataset. Only a minor fix has been
applied to the "A CORUÑA/ALVEDRO" station, whose identifier was the same
as the "A CORUÑA" station, "1387"
. The former was set to
"1387A"
.
Information about the province, altitude, longitude, and latitude of
each weather station can be retrieved in df
from the
fda.usc-package
's aemet
dataset.
The dataset is a curated version of a larger database of 115 stations. It excludes stations with inconsistent records or that were relocated, closed, or opened during the 40-year period. There are 9 stations with missing years. The total of missing years is 28.
In leap years, the daily-average temperature is computed as the average of February 28th and 29th.
Author(s)
Original data processing scripts by Manuel Febrero-Bande and Manuel Oviedo de la Fuente. Adaptations by Eduardo García-Portugués.
Source
The data was retrieved from the FTP of the
Meteorological State Agency of Spain
(AEMET) in 2014 using a processing script by the authors of the
fda.usc-package
.
References
Febrero-Bande, M. and Oviedo de la Fuente, M. (2012). Statistical Computing in Functional Data Analysis: The R Package fda.usc. Journal of Statistical Software, 51(4):1–28. doi:10.18637/jss.v051.i04
Examples
## Data splitting
# Load raw data
data("aemet_temp")
# Partition the dataset in the first and last 20 years
with(aemet_temp, {
ind_pred <- which((1974 <= df$year) & (df$year <= 1993))
ind_resp <- which((1994 <= df$year) & (df$year <= 2013))
aemet_temp_pred <<- list("df" = df[ind_pred, ], "temp" = temp[ind_pred])
aemet_temp_resp <<- list("df" = df[ind_resp, ], "temp" = temp[ind_resp])
})
# Average the temperature on each period
mean_aemet <- function(x) {
m <- tapply(X = 1:nrow(x$temp$data), INDEX = x$df$ind,
FUN = function(i) colMeans(x$temp$data[i, , drop = FALSE],
na.rm = TRUE))
x$temp$data <- do.call(rbind, m)
return(x$temp)
}
# Build predictor and response fdatas
aemet_temp_pred <- mean_aemet(aemet_temp_pred)
aemet_temp_resp <- mean_aemet(aemet_temp_resp)
# Plot
old_par <- par(mfrow = c(1, 2))
plot(aemet_temp_pred)
plot(aemet_temp_resp)
par(old_par)
# Average daily temperatures
day_avg_pred <- func_mean(aemet_temp_pred)
day_avg_resp <- func_mean(aemet_temp_resp)
# Average yearly temperatures
avg_year_pred <- rowMeans(aemet_temp_pred$data)
avg_year_resp <- rowMeans(aemet_temp_resp$data)
## Test the linear model with functional response and predictor
(comp_flmfr <- flm_test(X = aemet_temp_pred, Y = aemet_temp_resp,
est_method = "fpcr_l1s"))
beta0 <- diag(rep(1, length(aemet_temp_pred$argvals)))
(simp_flmfr <- flm_test(X = aemet_temp_pred, Y = aemet_temp_resp,
beta0 = beta0, est_method = "fpcr_l1s"))
# Visualize estimation
filled.contour(x = aemet_temp_pred$argvals, y = aemet_temp_resp$argvals,
z = comp_flmfr$fit_flm$Beta_hat,
color.palette = viridisLite::viridis, nlevels = 20)
## Test the linear model with scalar response and functional predictor
(comp_flmsr <- flm_test(X = aemet_temp_pred, Y = avg_year_resp,
est_method = "fpcr_l1s"))
(simp_flmsr <- flm_test(X = aemet_temp_pred, Y = avg_year_resp,
beta0 = 1 / 365, est_method = "fpcr_l1s"))
# Visualize estimation
plot(aemet_temp_pred$argvals, comp_flmsr$fit_flm$Beta_hat, type = "l",
ylim = c(0, 30 / 365))
abline(h = 1 / 365, col = 2)
## Test the linear model with functional response and scalar predictor
(comp_frsp <- flm_test(X = avg_year_pred, Y = aemet_temp_resp))
(simp_frsp <- flm_test(X = avg_year_pred, Y = aemet_temp_resp, beta0 = 1))
## Test the linear model with scalar response and predictor
(comp_srsp <- flm_test(X = avg_year_pred, Y = avg_year_resp))
(simp_srsp <- flm_test(X = avg_year_pred, Y = avg_year_resp, beta0 = 1))