* Bug #7858 fixed - variance and variancef can now return mean
[scilab.git] / scilab / modules / statistics / tests / unit_tests / variance.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 // Copyright (C) 2008 - INRIA - Michael Baudin
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8 //
9 // <-- CLI SHELL MODE -->
10
11 // With x as a row vector and 1 argument
12 data = [10 20 30 40 50 60 70 80 90];
13 [Variance, Mean] = variance(data);
14 expectedM = 50;
15 expectedV = 750;
16 assert_checkequal([Variance Mean], [expectedV expectedM]);
17 // With x as a column vector and 1 argument
18 data = [10; 20; 30; 40; 50; 60; 70; 80; 90];
19 [Variance, Mean] = variance(data);
20 expectedM = 50;
21 expectedV = 750;
22 assert_checkequal([Variance Mean], [expectedV expectedM]);
23 // With x as a matrix
24 data = [10 20 30 40; 50 60 70 90];
25 [Variance, Mean] = variance(data);
26 expectedM = 46.25;
27 expectedV = 712.5;
28 assert_checkequal([Variance Mean], [expectedV expectedM]);
29 // With x as a row vector and specified orient
30 data = [10 20 30 40; 50 60 70 90];
31 [Variance, Mean] = variance(data, 1);
32 expectedM = [30 40 50 65];
33 expectedV = [800 800 800 1250];
34 assert_checkequal([Variance Mean], [expectedV expectedM]);
35 // With x as a row vector and specified orient
36 data = [10 20 30 40; 50 60 70 90];
37 [Variance, Mean] = variance(data, "r");
38 expectedM = [30 40 50 65];
39 expectedV = [800 800 800 1250];
40 assert_checkequal([Variance Mean], [expectedV expectedM]);
41 // With x as a row vector and specified orient
42 data = [10 20 30 40; 50 60 70 90];
43 [Variance, Mean] = variance(data, 2);
44 expectedM = [50; 135]/2;
45 expectedV = [500; 875]/3;
46 assert_checkequal([Variance Mean], [expectedV expectedM]);
47 // With x as a row vector and specified orient
48 data = [10 20 30 40; 50 60 70 90];
49 [Variance, Mean] = variance(data, "c");
50 expectedM = [50; 135]/2;
51 expectedV = [500; 875]/3;
52 assert_checkequal([Variance Mean], [expectedV expectedM]);
53
54 // With x as a complex row vector and 1 argument
55 a = [ 0.9, 0.7;
56 0.1, 0.1;
57 0.5, 0.4 ];
58 data = a + a * 2 * %i;
59 [Variance, Mean] = variance(data);
60 expectedM = 0.45+0.9*%i;
61 expectedV = 0.515;
62 assert_checkequal([Variance Mean], [expectedV expectedM]); // Must be variance(real(data)) + variance(imag(data))
63
64 // With x as a complex row vector and computation by column
65 a = [ 0.9, 0.7;
66 0.1, 0.1;
67 0.5, 0.4 ];
68 data = a + a * 2 * %i;
69 [Variance, Mean] = variance(data, 1);
70 expectedM = [0.5+%i 0.4+0.8*%i];
71 expectedV = [0.8 0.45];
72 assert_checkalmostequal([Variance Mean], [expectedV expectedM]);
73 // With x as a complex row vector and computation by row
74 a = [ 0.9, 0.7;
75 0.1, 0.1;
76 0.5, 0.4 ];
77 data = a + a * 2 * %i;
78 [Variance, Mean] = variance(data, 2);
79 expectedM = [0.8+1.6*%i; 0.1+0.2*%i; 0.45+0.9*%i];
80 expectedV = [0.1; 0; 0.025];
81 assert_checkalmostequal([Variance Mean], [expectedV expectedM]);
82
83 // Normalization with N-1
84 x = [0.9    0.7
85 0.1    0.1
86 0.5    0.4];
87 orien = 1;
88 w = 0;
89 [Variance, Mean] = variance(x,orien,w);
90 expectedM = [0.5 0.4];
91 expectedV = [0.16 0.09];
92 assert_checkalmostequal([Variance Mean], [expectedV expectedM]);
93 // Normalization with N
94 x = [0.9    0.7
95 0.1    0.1
96 0.5    0.4];
97 orien = 1;
98 w = 1;
99 [Variance, Mean] = variance(x,orien,w);
100 expectedM = [0.5 0.4];
101 expectedV = [0.32 0.18]/3;
102 assert_checkalmostequal([Variance Mean], [expectedV expectedM]);