Non-Gaussian Translation Processes

A translation processes results from the nonlinear transformation of a Gaussian stochastic process. The standard translation process, introduced and extensively studied by Grigoriu [53] and implemented in UQpy arises from the pointwise transformation of a Gaussian process through the inverse cumulative distribution function of a specified marginal probability distribution as:

\[X(t) = F^{-1}(\Phi(Y(t)))\]

where \(Y(x)\) is a Gaussian random process with zero mean and unit standard deviation, \(\Phi(x)\) is the standard normal cumulative distribution function and \(F^{-1}(\cdot)\) is the inverse cumulative distribution function of the prescribed non-Gaussian probability distribution.

The nonlinear translation in the equation above has the effect of distorting the correlation of the stochastic process. That is, if the Gaussian process has correlation function \(\rho(\tau)\) where \(\tau=t_2-t_1\) is a time lag, then the non-Gaussian correlation function of the process \(X(t)\) can be computed as:

\[\xi(\tau) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} F^{-1}(\Phi(y_1)) F^{-1}(\Phi(y_2)) \phi(y_1, y_2; \rho(\tau)) dy_1 dy_2\]

where \(\phi(y_1, y_2; \rho(\tau))\) is the bivariate normal probability density function having correlation \(\rho(\tau)\). This operation is known as correlation distortion and is not, in general, invertible. That is, given the non-Gaussian correlation function \(\xi(\tau)\) and an arbitrarily prescribed non-Gaussian probability distribution with cdf \(F(x)\), it is not always possible to identify a corresponding Gaussian process having correlation function \(\rho(\tau)\) that can be translated to this non-Gaussian process through the equations above [53].

This gives rise to the challenge of inverse translation process modeling, where the objective is to find the an underlying Gaussian process and its correlation function such that it maps as closely as possible to the desired non-Gaussian stochastic process with its arbitrarily prescribed distribution and correlation function. This problem is solved in UQpy using the Iterative Translation Approximation Method (ITAM) developed in [54] for processes described by their power spectrum (and using SpectralRepresentation for simulation) and in [55] for processes described through their correlation function (and using KarhunenLoeveExpansion for simulation). This is implemented in the InverseTranslation class.

The Translation class is imported using the following command:

>>> from UQpy.stochastic_process.Translation import Translation

Translation Class

Methods

class Translation(distributions, time_interval, frequency_interval, n_time_intervals, n_frequency_intervals, power_spectrum_gaussian=None, correlation_function_gaussian=None, samples_gaussian=None)[source]

A class to translate Gaussian Stochastic Processes to non-Gaussian Stochastic Processes

Parameters:
  • distributions (Distribution) – An instance of the UQpy Distribution class defining the marginal distribution to which the Gaussian stochastic process should be translated to.

  • time_interval (Union[list, ndarray, float]) – The value of time discretization.

  • frequency_interval (Union[list, ndarray, float]) – The value of frequency discretization.

  • n_time_intervals (Union[list, ndarray, float]) – The number of time discretizations.

  • n_frequency_intervals (Union[list, ndarray, float]) – The number of frequency discretizations.

  • power_spectrum_gaussian (Optional[ndarray]) – The power spectrum of the gaussian stochastic process to be translated. power_spectrum_gaussian must be of size (n_frequency_intervals).

  • correlation_function_gaussian (Optional[ndarray]) – The auto correlation function of the Gaussian stochastic process to be translated. Either the power spectrum or the auto correlation function of the gaussian stochastic process needs to be defined. correlation_function_gaussian must be of size (n_time_intervals).

  • samples_gaussian (Optional[ndarray]) – Samples of Gaussian stochastic process to be translated. samples_gaussian is optional. If no samples are passed, the Translation class will compute the correlation distortion.

run(samples_gaussian)[source]
Parameters:

samples_gaussian – Samples of Gaussian stochastic process to be translated. samples_gaussian is optional. If samples are provided at the object initialization then the run method is executed automatically. If no samples are passed, the Translation class will compute the correlation distortion and the use needs to execute the run method manually in order to compute non-gaussian samples.

Attributes

Translation.correlation_function_non_gaussian: callable

The correlation function of the translated non-Gaussian stochastic processes obtained by distorting the Gaussian correlation function.

Translation.power_spectrum_non_gaussian: ndarray

The power spectrum of the translated non-Gaussian stochastic processes.

Translation.samples_gaussian

Translated non-Gaussian stochastic process from Gaussian samples.

Translation.scaled_correlation_function_non_gaussian: callable

This obtained by scaling the correlation function of the non-Gaussian stochastic processes to make the correlation at ‘0’ lag to be 1

Examples


Inverse Translation Class

The InverseTranslation class is imported using the following command:

>>> from UQpy.stochastic_process.InverseTranslation import InverseTranslation

Methods

class InverseTranslation(distributions, time_interval, frequency_interval, n_time_intervals, n_frequency_intervals, correlation_function_non_gaussian=None, power_spectrum_non_gaussian=None, samples_non_gaussian=None, percentage_error=5.0)[source]

A class to perform Iterative Translation Approximation Method to find the underlying Gaussian Stochastic Processes which upon translation would yield the necessary non-Gaussian Stochastic Processes.

Parameters:
  • distributions (Distribution) – An instance of the UQpy Distributions class defining the marginal distribution of the non-Gaussian stochastic process.

  • time_interval (Union[list, ndarray]) – The value of time discretization.

  • frequency_interval (Union[list, ndarray]) – The value of frequency discretization.

  • n_time_intervals (Union[list, ndarray]) – The number of time discretizations.

  • n_frequency_intervals (Union[list, ndarray]) – The number of frequency discretizations.

  • correlation_function_non_gaussian (Union[ndarray, list, None]) – The auto correlation function of the non-Gaussian stochastic processes. Either the power spectrum or the auto correlation function of the Gaussian stochastic process needs to be defined.

  • power_spectrum_non_gaussian (Union[ndarray, list, None]) – The power spectrum of the non-Gaussian stochastic processes.

  • samples_non_gaussian (Union[ndarray, list, None]) – Samples of non-Gaussian stochastic processes. samples_non_gaussian is optional. If no samples are passed, the InverseTranslation class will compute the underlying Gaussian correlation using the ITAM.

  • percentage_error (float) –

run(samples_non_gaussian)[source]
Parameters:

samples_non_gaussian – Samples of non-Gaussian stochastic processes. If samples are provided at the initialization, then the run method is executed automatically. If no samples are passed at the initialization, the InverseTranslation class will compute the underlying Gaussian correlation using the ITAM and the run method needs to be manually executed by the user.

Attributes

InverseTranslation.correlation_function_gaussian: ndarray

The correlation function of the inverse translated Gaussian stochastic processes.

InverseTranslation.power_spectrum_gaussian: ndarray

The power spectrum of the inverse translated Gaussian stochastic processes

InverseTranslation.samples_gaussian

The inverse translated Gaussian samples from the non-Gaussian samples.