Skip to article frontmatterSkip to article content

Spatiotemporal Effects

CSIC
UCM
IGEO

TLDR: We will incorporate spatiotemporal effects into our model assumptions. We will use nonparametric Gaussian process models to account for the spatial and temporal autocorrelations present within the data. We assume that each of the parameters of the distribution are a random field given which is the result of an underlying latent spatial process. Then, we can say that the extreme values are conditionally independent of the parameters of the data likelihood. These latent models will be used to parameterize the data likelihood parameters. We can include the covariates within the kernel function (Deep Kernel Learning) or we can include them within the mean function. The heterogeneity can be accounted for by having a separate GP for the scale parameter for the data likelihood. We can use approximations like inducing points or spectral approximations to deal with the large number of spatial samples present.

Questions

How do we go beyond the univariate site-per-site or spatially aggregated modeling?

Can we take into account the spatial pairwise dependence among different sites?


Assumptions

The idea is that standard EVT methods can greatly benefit from spatial considerations. We assume that these spatial methods can map risk at an individual location and borrow strength of spatial neighbours which would be helpful to estimate rare-event probabilities. We assume that this spatial dependence consideration is necessary and valid for inference.

Conditional Independence. The extreme values, yy, are independent given the distribution parameters.

Process Layer. The parameters, θ\boldsymbol{\theta}, of the distribution, p()p(\cdot), are random fields and result from an unobservable latent spatiotemporal process.


Model

Data Layer. We make the following assumption for the data layer.

Data:=p(DataProcess,Covariates,Parameters) \begin{aligned} \text{Data} &:= p(\text{Data}|\text{Process},\text{Covariates},\text{Parameters}) \end{aligned}

More concretely, the extreme observations, yy, stem from a conditional distribution which is a distribution parameterized by some process, θ, and the hyperparameters of the process, α.

ynp(ynθn,xn,α) y_n \sim p(y_n|\boldsymbol{\theta}_n,\boldsymbol{x}_n,\boldsymbol{\alpha})

Process Layer. We assume that the process layer has the form:

Process:=p(ProcessParameters) \begin{aligned} \text{Process} &:=p(\text{Process}|\text{Parameters}) \end{aligned}

More concretely, we believe the parameters of the data distribution are parameters by some covariates and hyperparameters.

θnp(θnxn,α) \boldsymbol{\theta}_n \sim p(\boldsymbol{\theta}_n|\boldsymbol{x}_n,\boldsymbol{\alpha})

For example, we could have the following Mean Function:

μn=μ(x,s;θ)=b+W1s+W2x+MVN(0,α0exp(α1sisj22)) \mu_n = \boldsymbol{\mu}(\boldsymbol{x},\mathbf{s};\boldsymbol{\theta})= b + \mathbf{W}_1^\top \mathbf{s} + \mathbf{W}_2^\top\boldsymbol{x} + \text{MVN}\left(0,\alpha_0 \exp \left(-\alpha_1 ||\mathbf{s}_i - \mathbf{s}_j||^2_2 \right) \right)

where the hyperparameters are α={b,w1,W2,α1,α2}\boldsymbol{\alpha} = \{b, \mathbf{w}_1,\mathbf{W}_2, \alpha_1, \alpha_2 \}.

Previous Work

PseudoCode

Gaussian Process Model

Mean Function

def mean_function(
		X: Array["N Dx+Ds+Dt"], weight: Array["Dy Dx"], bias: Array["Dy"]
	) -> Array["Dy"]:
    # extract covariates only
    return weight @ x[:,-2:] + bias
def gp_model(S: Array["N"], T: Array["N"], X: Array["N Dx"], Y: Array["N Dy"]):
    # mean function hyper parameters
    mean = numpyro.sample("mean", dist.Normal(0.0, prior_sigma))
    jitter = numpyro.sample("jitter", dist.HalfNormal(prior_sigma))
    
    # hyperparameters for spatial coordinates
    s_sigma = numpyro.sample("s_sigma", dist.HalfNormal(prior_sigma))
    s_rho = numpyro.sample("s_rho", dist.HalfNormal(prior_sigma))
    s_tau = numpyro.sample("s_tau", dist.HalfNormal(prior_sigma))
    kernel_s = sigma1**2 * kernels.ExpSquared(tau) * kernels.Cosine(rho1)

    # compute kernel
    kernel = kernel_s(S) + kernel_t(T) + kernel_x(X)
    # concaténate input
    input: Array["N 3"] = jnp.vstack([S,T,X])

    # sample Y according to the standard gaussian process formula
    gp = GaussianProcess(kernel, input, diag=yerr**2 + jitter, mean=mean)
    numpyro.sample("gp", gp.numpyro_dist(), obs=y)

    if y is not None:
        numpyro.deterministic("pred", gp.condition(y, true_t).gp.loc)
References
  1. Schlather, M. (2003). A dependence measure for multivariate and spatial extreme values: Properties and inference. Biometrika, 90(1), 139–156. 10.1093/biomet/90.1.139
  2. Pereira, A. M., & Andraz, J. M. (2005). Public Investment in Transportation Infrastructure and Economic Performance in Portugal. Review of Development Economics, 9(2), 177–196. 10.1111/j.1467-9361.2005.00271.x
  3. Vannitsem, S., & Naveau, P. (2007). Spatial dependences among precipitation maxima over Belgium. Nonlinear Processes in Geophysics, 14(5), 621–630. 10.5194/npg-14-621-2007
  4. Cooley, D., Nychka, D., & Naveau, P. (2007). Bayesian Spatial Modeling of Extreme Precipitation Return Levels. Journal of the American Statistical Association, 102(479), 824–840. 10.1198/016214506000000780
  5. Coles, S. G., & Tawn, J. A. (1996). A Bayesian Analysis of Extreme Rainfall Data. Applied Statistics, 45(4), 463. 10.2307/2986068