* Bug #13050 fixed - The result of mvvacov function was not symmetric.
[scilab.git] / scilab / modules / statistics / tests / unit_tests / cov.dia.ref
1 // Copyright (C) 2012-2013 - Michael Baudin
2 // Copyright (C) 2010 - INRIA - Michael Baudin
3 //
4 // This file must be used under the terms of the GNU Lesser General Public License license :
5 // http://www.gnu.org/copyleft/lesser.html
6 // Run with test_run('statistics', 'cov', ['no_check_error_output']);
7 // <-- JVM NOT MANDATORY -->
8 // <-- ENGLISH IMPOSED -->
9 // Check error
10 assert_checkfalse(execstr("cov()"   ,"errcatch") == 0);
11 refMsg = msprintf(_("%s: Wrong number of input argument(s): %d, %d or %d expected.\n"),"cov", 1, 2, 3);
12 assert_checkerror("cov()", refMsg);
13 assert_checkfalse(execstr("cov(""r"")"   ,"errcatch") == 0);
14 refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
15 assert_checkerror("cov(""r"")", refMsg);
16 assert_checkfalse(execstr("cov([1;2], ""r"")"   ,"errcatch") == 0);
17 refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer or a real matrix expected.\n"),"cov", 2);
18 assert_checkerror("cov([1;2], ""r"")", refMsg);
19 assert_checkfalse(execstr("cov(""r"", [1;2])"   ,"errcatch") == 0);
20 refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
21 assert_checkerror("cov(""r"", [1;2])", refMsg);
22 assert_checkfalse(execstr("cov(""r"", [1;2], 1)"   ,"errcatch") == 0);
23 refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 1);
24 assert_checkerror("cov(""r"", [1;2], 1)", refMsg);
25 assert_checkfalse(execstr("cov([1;2], ""r"", 1)"   ,"errcatch") == 0);
26 refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real matrix expected.\n"),"cov", 2);
27 assert_checkerror("cov([1;2], ""r"", 1)", refMsg);
28 assert_checkfalse(execstr("cov([1;2], [3;4], ""r"")"   ,"errcatch") == 0);
29 refMsg = msprintf(_("%s: Wrong type for input argument #%d: an integer expected.\n"),"cov", 3);
30 assert_checkerror("cov([1;2], [3;4], ""r"")", refMsg);
31 x = [1;2];
32 y = [3;4];
33 computed = cov (x,y);
34 expected = [0.5,0.5;0.5,0.5];
35 assert_checkequal ( computed , expected );
36 //
37 // The same, with nrmlztn=0
38 x = [1;2];
39 y = [3;4];
40 computed = cov (x,y,0);
41 expected = [0.5,0.5;0.5,0.5];
42 assert_checkequal ( computed , expected );
43 //
44 x = [230;181;165;150;97;192;181;189;172;170];
45 y = [125;99;97;115;120;100;80;90;95;125];
46 expected = [1152.4556,-88.911111;-88.911111,244.26667];
47 computed = cov (x,y);
48 assert_checkalmostequal ( computed , expected , 1.e-7 );
49 //
50 // The same, with nrmlztn=0
51 x = [230;181;165;150;97;192;181;189;172;170];
52 y = [125;99;97;115;120;100;80;90;95;125];
53 expected = [1152.4556,-88.911111;-88.911111,244.26667];
54 computed = cov (x,y,0);
55 assert_checkalmostequal ( computed , expected , 1.e-7 );
56 //
57 x = [1;2;3;4;5];
58 computed = cov (x);
59 expected = 2.5;
60 assert_checkequal ( computed , expected );
61 //
62 // The same, with nrmlztn=0
63 x = [1;2;3;4;5];
64 computed = cov (x,0);
65 expected = 2.5;
66 assert_checkequal ( computed , expected );
67 //
68 A = [-1 1 2 ; -2 3 1 ; 4 0 3];
69 Cexpected = [
70    10.3333   -4.1667    3.0000
71    -4.1667    2.3333   -1.5000
72     3.0000   -1.5000    1.0000
73 ];
74 C = cov (A);
75 assert_checkalmostequal ( Cexpected , C , [] , 1.e-4, "element");
76 //
77 // The same, with nrmlztn=0
78 A = [-1 1 2 ; -2 3 1 ; 4 0 3];
79 Cexpected = [
80    10.3333   -4.1667    3.0000
81    -4.1667    2.3333   -1.5000
82     3.0000   -1.5000    1.0000
83 ];
84 C = cov(A,0);
85 assert_checkalmostequal ( Cexpected , C , [] , 1.e-4, "element");
86 //
87 // Reference
88 // 6.5.4.1. Mean Vector and Covariance Matrix
89 // http://www.itl.nist.gov/div898/handbook/pmc/section5/pmc541.htm
90 A = [
91 4.0 2.0 0.60
92 4.2 2.1 0.59
93 3.9 2.0 0.58
94 4.3 2.1 0.62
95 4.1 2.2 0.63
96 ];
97 S = [
98 0.025 0.0075 0.00175
99 0.0075 0.007 0.00135
100 0.00175 0.00135 0.00043
101 ];
102 C = cov (A);
103 assert_checkalmostequal ( S , C , 10*%eps , [] , "element");
104 //
105 // The same, with nrmlztn=0
106 A = [
107 4.0 2.0 0.60
108 4.2 2.1 0.59
109 3.9 2.0 0.58
110 4.3 2.1 0.62
111 4.1 2.2 0.63
112 ];
113 S = [
114 0.025 0.0075 0.00175
115 0.0075 0.007 0.00135
116 0.00175 0.00135 0.00043
117 ];
118 C = cov (A,0);
119 assert_checkalmostequal ( S , C , 10*%eps , [] , "element");
120 //
121 x = [1;2];
122 computed = cov (x,1);
123 expected = 0.25;
124 assert_checkequal ( computed , expected );
125 //
126 x = [1;2];
127 computed = cov (x,0);
128 expected = 0.5;
129 assert_checkequal ( computed , expected );
130 //
131 x = [1;2];
132 y = [3;4];
133 computed = cov (x,y,1);
134 expected = [0.25,0.25;0.25,0.25];
135 assert_checkequal ( computed , expected );
136 //
137 // Matlab compatibility
138 x=[-1 1 2 ; -2 3 1 ; 4 0 3];
139 computed = cov (x);
140 expected = [
141    10.3333   -4.1667    3.0000
142    -4.1667    2.3333   -1.5000
143     3.0000   -1.5000    1.0000
144 ];
145 assert_checkalmostequal ( computed , expected ,[],1.e-4);