gllim_inverse_map {xLLiM}R Documentation

Inverse Mapping from gllim or bllim parameters

Description

This function computes the prediction of a new response from the estimation of the GLLiM model, returned by the function gllim. Given an observed XX, the prediction of the corresponding YY is obtained by setting YY to the mean of the distribution p(YX)p(Y | X).

Usage

gllim_inverse_map(y,theta,verb=0)

Arguments

y

An D x N matrix of input observations with variables in rows and subjects on columns

theta

An object returned by the gllim function corresponding to the learned GLLiM model

verb

Verbosity: print out the progression of the algorithm. If verb=0, there is no print, if verb=1, the progression is printed out. Default is 0.

Details

This function computes the prediction of a new response from the estimation of GLLiM or a BLLiM model, returned by functions gllim and bllim. Indeed, if the inverse conditional density p(XY)p(X | Y) and the marginal density p(Y)p(Y) are defined according to a GLLiM model (or BLLiM) (as described on xLLiM-package and gllim), the forward conditional density p(YX)p(Y | X) can be deduced.

Under GLLiM and BLLiM model, it is recalled that the inverse conditional p(XY)p(X | Y) is a mixture of Gaussian regressions with parameters (πk,ck,Γk,Ak,bk,Σk)k=1K(\pi_k,c_k,\Gamma_k,A_k,b_k,\Sigma_k)_{k=1}^K. Interestingly, the forward conditional p(YX)p(Y | X) is also a mixture of Gaussian regressions with parameters (πk,ck,Γk,Ak,bk,Σk)k=1K(\pi_k,c_k^*,\Gamma_k^*,A_k^*,b_k^*,\Sigma_k^*)_{k=1}^K. These parameters have a closed-form expression depending only on (πk,ck,Γk,Ak,bk,Σk)k=1K(\pi_k,c_k,\Gamma_k,A_k,b_k,\Sigma_k)_{k=1}^K.

Finally, the forward density (of interest) has the following expression:

p(YX=x)=k=1KπkN(x;ck,Γk)jπjN(x;cj,Γj)N(y;Akx+bk,Σk)p(Y | X=x) = \sum_{k=1}^K \frac{\pi_k N(x; c_k^*,\Gamma_k^*)}{\sum_j \pi_j N(x; c_j^*,\Gamma_j^*)} N(y; A_k^*x + b_k^*,\Sigma_k^*)

and a prediction of a new vector of responses is computed as:

E(YX=x)=k=1KπkN(x;ck,Γk)jπjN(x;cj,Γj)(Akx+bk)E (Y | X=x) = \sum_{k=1}^K \frac{\pi_k N(x; c_k^*,\Gamma_k^*)}{\sum_j \pi_j N(x; c_j^*,\Gamma_j^*)} (A_k^*x + b_k^*)

where xx is a new vector of observed covariates.

When applied on a BLLiM model (returned by function bllim), the prediction function gllim_inverse_map accounts for the block structure of covariance matrices of the model.

Value

Returns a list with the following elements:

x_exp

An L x N matrix of predicted responses by posterior mean. If LwL_w latent factors are added to the model, the first LtLt rows (1:Lt1:Lt) are predictions of responses and rows (Lt+1):L(L_t+1):L (recall that L=Lt+LwL=L_t+L_w) are estimations of latent factors.

alpha

Weights of the posterior Gaussian mixture model

Author(s)

Emeline Perthame (emeline.perthame@inria.fr), Florence Forbes (florence.forbes@inria.fr), Antoine Deleforge (antoine.deleforge@inria.fr)

References

[1] A. Deleforge, F. Forbes, and R. Horaud. High-dimensional regression with Gaussian mixtures and partially-latent response variables. Statistics and Computing, 25(5):893–911, 2015.

[2] E. Devijver, M. Gallopin, E. Perthame. Nonlinear network-based quantitative trait prediction from transcriptomic data. Submitted, 2017, available at https://arxiv.org/abs/1701.07899.

[3] E. Perthame, F. Forbes, and A. Deleforge. Inverse regression approach to robust nonlinear high-to-low dimensional mapping. Journal of Multivariate Analysis, 163(C):1–14, 2018. https://doi.org/10.1016/j.jmva.2017.09.009

Converted to R from the Matlab code of the GLLiM toolbox available on: https://team.inria.fr/perception/gllim_toolbox/

See Also

xLLiM-package,gllim

Examples

data(data.xllim)

## Setting 5 components in the model
K = 5

## the model can be initialized by running an EM algorithm for Gaussian Mixtures (EMGM)
r = emgm(data.xllim, init=K); 
## and then the gllim model is estimated
responses = data.xllim[1:2,] # 2 responses in rows and 100 observations in columns
covariates = data.xllim[3:52,] # 50 covariates in rows and 100 observations in columns
mod = gllim(responses,covariates,in_K=K,in_r=r);

## Charge testing data
data(data.xllim.test)
## Prediction on a test dataset
pred = gllim_inverse_map(data.xllim.test,mod)
## Predicted responses
print(pred$x_exp)

## Can also be applied on an object returned by bllim function 
## Learn the BLLiM model
# mod = bllim(responses,covariates,in_K=K,in_r=r);
## Prediction on a test dataset
# pred = gllim_inverse_map(data.xllim.test,mod)
## Predicted responses
# print(pred$x_exp)

[Package xLLiM version 2.3 Index]