* Bug #13050 fixed - The result of mvvacov function was not symmetric.
[scilab.git] / scilab / modules / statistics / macros / mvvacov.sci
1
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2001 - INRIA - Carlos Klimann
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 //
11
12
13 function [v]=mvvacov(x)
14     //
15     //This    function    computes    v,   the    matrix    of
16     //variance-covariance of the "tableau" x (x is a numerical
17     //matrix nxp)  who gives  the values of  p variables for n
18     //individuals:   the    (i,j)   coefficient   of    v   is
19     //v(i,j)=E(xi-xibar)(xj-xjbar),  where   E  is  the  first
20     //moment of a variable, xi  is the i-th variable and xibar
21     //the mean of the xi variable.
22     //
23     //References: Saporta, Gilbert, Probabilites,  Analyse des
24     //Donnees et Statistique, Editions Technip, Paris, 1990.
25     //Mardia,  K.V., Kent,  J.T. &  Bibby,  J.M., Multivariate
26     //Analysis, Academic Press, 1979.
27     //
28     //
29     warnobsolete("cov", "6.0.0");
30     if x==[] then s=%nan, return, end
31     [lhs,rhs]=argn(0)
32     if rhs<>1 then error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"mvvacov",1)), end
33     [n p]=size(x);
34     fact=1/n
35     v = fact * ((x'*x) - fact * ( (ones(1,n)*x)' * (ones(1,n)*x)))
36 endfunction
37