View source: R/conditional_ccf.R
conditional_ccf | R Documentation |
This function computes cross correlation between $x_t$ and $y_t+k$ at $k = 1,2,...$ conditional on a set of time series $z_t$
conditional_ccf(
data,
formula,
lag_max = 10,
fit_mean_x,
fit_var_x,
fit_mean_y,
fit_var_y,
df_correlation
)
data |
a tibble containing all the time series including ystar*xstar which are uniquely identified by the corresponding Timestamp. |
formula |
A GAM formula. The response variable should be in the format of
I(x*y) ~ . See |
lag_max |
Maximum lag at which to calculate the conditional ccf |
fit_mean_x |
Model object of class "conditional_moment" returned from
|
fit_var_x |
Model object of class "conditional_moment" returned from
|
fit_mean_y |
Model object of class "conditional_moment" returned from
|
fit_var_y |
Model object of class "conditional_moment" returned from
|
df_correlation |
a vector specifying the degrees of freedom to be considered for each numerical predictor when fitting additive models for conditional cross-correlations. Each component of the vector should corresponds to the degrees of freedom each predictor. |
Suppose $x_t$ and $y_t$ are conditionally normalised with respect
to $z_t$ using conditional_mean
and conditional_var
. Then
we can estimate the conditional cross-correlation between $x_t$ and $y_t$ at lag $k$, i.e. $r_k = E(x_ty_t+k|z_t)$
via generalised additive models (GAM). conditional_ccf
uses natural splines implemented
in splines
package to estimate the conditional cross-correlations between two
time series given a set of time series predictors. Users first need to
normalise $x_t$ and $y_t$ at lag $k$ using conditional_mean
and conditional_var
The function returns a list of objects of class
"glm" as described in glm
. the length og the list is equal to lag_max
glm
old_ts <- NEON_PRIN_5min_cleaned |>
dplyr::select(
Timestamp, site, turbidity, level,
conductance, temperature
) |>
tidyr::pivot_wider(
names_from = site,
values_from = turbidity:temperature
)
fit_mean_y <- old_ts |>
conditional_mean(turbidity_downstream ~
s(level_upstream, k = 8) +
s(conductance_upstream, k = 8) +
s(temperature_upstream, k = 8))
fit_var_y <- old_ts |>
conditional_var(
turbidity_downstream ~
s(level_upstream, k = 7) +
s(conductance_upstream, k = 7) +
s(temperature_upstream, k = 7),
family = "Gamma",
fit_mean = fit_mean_y
)
fit_mean_x <- old_ts |>
conditional_mean(turbidity_upstream ~
s(level_upstream, k = 8) +
s(conductance_upstream, k = 8) +
s(temperature_upstream, k = 8))
fit_var_x <- old_ts |>
conditional_var(
turbidity_upstream ~
s(level_upstream, k = 7) +
s(conductance_upstream, k = 7) +
s(temperature_upstream, k = 7),
family = "Gamma",
fit_mean = fit_mean_x
)
fit_c_ccf <- old_ts |>
tidyr::drop_na() |>
conditional_ccf(
I(turbidity_upstream * turbidity_downstream) ~ splines::ns(
level_upstream,
df = 5
) +
splines::ns(temperature_upstream, df = 5),
lag_max = 10,
fit_mean_x = fit_mean_x, fit_var_x = fit_var_x,
fit_mean_y = fit_mean_y, fit_var_y = fit_var_y,
df_correlation = c(5, 5)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.