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:
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:
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 UQpyDistribution
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, theTranslation
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 theUQpy
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, theInverseTranslation
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.