ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_statistique.cpp
Revision: 27
Committed: Thu Jul 5 15:26:40 2007 UTC (17 years, 10 months ago) by foucault
Original Path: magic/lib/outil/outil/src/ot_statistique.cpp
File size: 2478 byte(s)
Log Message:

File Contents

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