Nothing
################################################################################
################################################################################
## ##
## Copyright Yoann Robin, 2020 ##
## ##
## yoann.robin.k@gmail.com ##
## ##
## This software is a computer program that is part of the ROOPSD (R Object ##
## Oriented Programming for Statistical Distribution). This library makes it ##
## possible to draw, fit and access to CDF and SF function ##
## for classic statistical distribution. ##
## ##
## This software is governed by the CeCILL-C license under French law and ##
## abiding by the rules of distribution of free software. You can use, ##
## modify and/ or redistribute the software under the terms of the CeCILL-C ##
## license as circulated by CEA, CNRS and INRIA at the following URL ##
## "http://www.cecill.info". ##
## ##
## As a counterpart to the access to the source code and rights to copy, ##
## modify and redistribute granted by the license, users are provided only ##
## with a limited warranty and the software's author, the holder of the ##
## economic rights, and the successive licensors have only limited ##
## liability. ##
## ##
## In this respect, the user's attention is drawn to the risks associated ##
## with loading, using, modifying and/or developing or reproducing the ##
## software by the user in light of its specific status of free software, ##
## that may mean that it is complicated to manipulate, and that also ##
## therefore means that it is reserved for developers and experienced ##
## professionals having in-depth computer knowledge. Users are therefore ##
## encouraged to load and test the software's suitability as regards their ##
## requirements in conditions enabling the security of their systems and/or ##
## data to be ensured and, more generally, to use and operate it in the ##
## same conditions as regards security. ##
## ##
## The fact that you are presently reading this means that you have had ##
## knowledge of the CeCILL-C license and that you accept its terms. ##
## ##
################################################################################
################################################################################
################################################################################
################################################################################
## ##
## Copyright Yoann Robin, 2020 ##
## ##
## yoann.robin.k@gmail.com ##
## ##
## Ce logiciel est un programme informatique faisant partie de la librairie ##
## ROOPSD (R Object Oriented Programming for Statistical Distribution). Cette ##
## librarie permet de tirer aléatoirement, inférer et acceder aux fonctions ##
## CDF et SF des distributions statistisques classiques. ##
## ##
## Ce logiciel est régi par la licence CeCILL-C soumise au droit français et ##
## respectant les principes de diffusion des logiciels libres. Vous pouvez ##
## utiliser, modifier et/ou redistribuer ce programme sous les conditions ##
## de la licence CeCILL-C telle que diffusée par le CEA, le CNRS et l'INRIA ##
## sur le site "http://www.cecill.info". ##
## ##
## En contrepartie de l'accessibilité au code source et des droits de copie, ##
## de modification et de redistribution accordés par cette licence, il n'est ##
## offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, ##
## seule une responsabilité restreinte pèse sur l'auteur du programme, le ##
## titulaire des droits patrimoniaux et les concédants successifs. ##
## ##
## A cet égard l'attention de l'utilisateur est attirée sur les risques ##
## associés au chargement, à l'utilisation, à la modification et/ou au ##
## développement et à la reproduction du logiciel par l'utilisateur étant ##
## donné sa spécificité de logiciel libre, qui peut le rendre complexe à ##
## manipuler et qui le réserve donc à des développeurs et des professionnels ##
## avertis possédant des connaissances informatiques approfondies. Les ##
## utilisateurs sont donc invités à charger et tester l'adéquation du ##
## logiciel à leurs besoins dans des conditions permettant d'assurer la ##
## sécurité de leurs systèmes et ou de leurs données et, plus généralement, ##
## à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. ##
## ##
## Le fait que vous puissiez accéder à cet en-tête signifie que vous avez ##
## pris connaissance de la licence CeCILL-C, et que vous en avez accepté les ##
## termes. ##
## ##
################################################################################
################################################################################
#' rspd_matrix
#'
#' Generate a random symetric positive definite matrix. The generator just
#' draw matrix of the form O * diag(positive values) * t(O), where O is an
#' orthogonal matrix from ROOPSD::rorthogonal_group. Note that the parameter
#' gen = stats::rexp draw positive eigen values, but the code do not control
#' if eigen values are positive. So you can accept negative eigen values using
#' another generators.
#'
#' @param d [integer] Dimension of the matrix
#' @param n [integer] numbers of samples drawn
#' @param sort_eigenvalues [bool] If eigen values (i.e. variance) are sorted
#' @param gen [function] Eigenvalues generator
#'
#' @return [array or matrix], dim = d * d * n or d * d if n == 1
#'
#' @examples
#' mean = stats::runif( n = 2 , min = -5 , max = 5 )
#' cov = ROOPSD::rspd_matrix(2)
#' X = ROOPSD::rmultivariate_normal( 10000 , mean , cov )
#'
#' @export
rspd_matrix = function( d , n = 1 ,
sort_eigenvalues = TRUE , gen = stats::rexp )
{
O = array( ROOPSD::rorthogonal_group( d , n = n ) , dim = base::c(d,d,n) )
s = matrix( gen( d * n ) , nrow = n , ncol = d )
if( sort_eigenvalues )
s = base::t( base::apply( s , 1 , base::sort , decreasing = TRUE ) )
for( i in 1:n )
O[,,i] = O[,,i] %*% base::diag(s[i,]) %*% base::t(O[,,i])
if( n == 1 )
O = matrix( O , nrow = d , ncol = d )
return( O )
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.