ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_statistique.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Original Path: magic/lib/outil/outil/src/ot_statistique.cpp
File size: 2458 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //---------------------------------------------------------------------------
2    
3     #pragma hdrstop
4    
5     #include "ot_statistique.h"
6     //---------------------------------------------------------------------------
7     #pragma package(smart_init)
8    
9     /// ecart type dans le cas d'une serie discrete
10     /// racine carree de la moyenne de carrés moins le carré de la moyenne
11     double OT_STATISTIQUE::ecart_type (double * x, int n)
12     {
13     int i;
14    
15     double moyenne_x = 0;
16     for (i=0;i<n;i++)
17     moyenne_x += x[i];
18     moyenne_x /= n;
19    
20    
21     double moyenne_x2 = 0;
22     for (i=0;i<n;i++)
23     moyenne_x2 += x[i]*x[i];
24     moyenne_x2 /= n;
25    
26     return sqrt(moyenne_x2-moyenne_x*moyenne_x);
27     }
28    
29     /// la moyenne des produits moins le produit des moyennes
30     double OT_STATISTIQUE::covariance (double * x, double * y, int n)
31     {
32     int i;
33    
34     double moyenne_xy = 0;
35     for (i=0;i<n;i++)
36     moyenne_xy += x[i]*y[i];
37     moyenne_xy /= n;
38    
39     double moyenne_x = 0;
40     for (i=0;i<n;i++)
41     moyenne_x += x[i];
42     moyenne_x /= n;
43    
44     double moyenne_y = 0;
45     for (i=0;i<n;i++)
46     moyenne_y += y[i];
47     moyenne_y /= n;
48    
49     return moyenne_xy - moyenne_x * moyenne_y;
50     }
51    
52     /// la moyenne des carrés moins le carré de la moyenne
53     double OT_STATISTIQUE::variance (double * x, int n)
54     {
55     int i;
56    
57     double moyenne_carres = 0;
58     for (i=0;i<n;i++)
59     moyenne_carres += x[i]*x[i];
60     moyenne_carres /= n;
61    
62     double moyenne = 0;
63     for (i=0;i<n;i++)
64     moyenne += x[i];
65     moyenne /= n;
66    
67     return moyenne_carres - moyenne*moyenne;
68     }
69    
70     ///
71     void OT_STATISTIQUE::regression_lineaire(double *x, double *y, int n, double *pente, double *valY0)
72     {
73     int i;
74    
75     // coef directeur de la droite
76     double a = variance(y,n) / covariance(x,y,n);
77    
78     // b = valeur de y (0) par moindre carrés
79     double b = 0;
80     for (i=0; i<n; i++)
81     b += y[i] - a*x[i];
82     b /= n;
83    
84     *pente = a;
85     *valY0 = b;
86     }
87    
88     double OT_STATISTIQUE::max(double *x, int n)
89     {
90     if (n==0)
91     return 0;
92    
93     double max_x = x[0];
94     for (int i=0;i<n;i++)
95     if (x[i] > max_x)
96     max_x = x[i];
97    
98     return max_x;
99     }
100    
101     double OT_STATISTIQUE::min(double *x, int n)
102     {
103     if (n==0)
104     return 0;
105    
106     double min_x = x[0];
107     for (int i=0;i<n;i++)
108     if (x[i] < min_x)
109     min_x = x[i];
110    
111     return min_x;
112     }