1 |
//####//------------------------------------------------------------ |
2 |
//####//------------------------------------------------------------ |
3 |
//####// MAGiC |
4 |
//####// Jean Christophe Cuilliere et Vincent FRANCOIS |
5 |
//####// Departement de Genie Mecanique - UQTR |
6 |
//####//------------------------------------------------------------ |
7 |
//####// MAGIC est un projet de recherche de l equipe ERICCA |
8 |
//####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres |
9 |
//####// http://www.uqtr.ca/ericca |
10 |
//####// http://www.uqtr.ca/ |
11 |
//####//------------------------------------------------------------ |
12 |
//####//------------------------------------------------------------ |
13 |
//####// |
14 |
//####// ot_statistique.cpp |
15 |
//####// |
16 |
//####//------------------------------------------------------------ |
17 |
//####//------------------------------------------------------------ |
18 |
//####// COPYRIGHT 2000-2024 |
19 |
//####// jeu 13 jun 2024 11:54:00 EDT |
20 |
//####//------------------------------------------------------------ |
21 |
//####//------------------------------------------------------------ |
22 |
|
23 |
#pragma hdrstop |
24 |
|
25 |
#include "ot_statistique.h" |
26 |
#pragma package(smart_init) |
27 |
|
28 |
|
29 |
double OT_STATISTIQUE::moyenne (double * x, int n) |
30 |
{ |
31 |
int i; |
32 |
double moyenne_x = 0; |
33 |
for (i=0;i<n;i++) |
34 |
moyenne_x += x[i]; |
35 |
moyenne_x /= n; |
36 |
return moyenne_x; |
37 |
} |
38 |
|
39 |
double OT_STATISTIQUE::ecart_type (double * x, int n) |
40 |
{ |
41 |
int i; |
42 |
double moyenne_x = moyenne(x,n); |
43 |
|
44 |
double moyenne_x2 = 0; |
45 |
for (i=0;i<n;i++) |
46 |
moyenne_x2 += x[i]*x[i]; |
47 |
moyenne_x2 /= n; |
48 |
|
49 |
return sqrt(moyenne_x2-moyenne_x*moyenne_x); |
50 |
} |
51 |
|
52 |
double OT_STATISTIQUE::covariance (double * x, double * y, int n) |
53 |
{ |
54 |
int i; |
55 |
|
56 |
double moyenne_xy = 0; |
57 |
for (i=0;i<n;i++) |
58 |
moyenne_xy += x[i]*y[i]; |
59 |
moyenne_xy /= n; |
60 |
|
61 |
double moyenne_x = 0; |
62 |
for (i=0;i<n;i++) |
63 |
moyenne_x += x[i]; |
64 |
moyenne_x /= n; |
65 |
|
66 |
double moyenne_y = 0; |
67 |
for (i=0;i<n;i++) |
68 |
moyenne_y += y[i]; |
69 |
moyenne_y /= n; |
70 |
|
71 |
return moyenne_xy - moyenne_x * moyenne_y; |
72 |
} |
73 |
|
74 |
double OT_STATISTIQUE::variance (double * x, int n) |
75 |
{ |
76 |
int i; |
77 |
|
78 |
double moyenne_carres = 0; |
79 |
for (i=0;i<n;i++) |
80 |
moyenne_carres += x[i]*x[i]; |
81 |
moyenne_carres /= n; |
82 |
|
83 |
double moyenne = 0; |
84 |
for (i=0;i<n;i++) |
85 |
moyenne += x[i]; |
86 |
moyenne /= n; |
87 |
|
88 |
return moyenne_carres - moyenne*moyenne; |
89 |
} |
90 |
|
91 |
void OT_STATISTIQUE::regression_lineaire(double *x, double *y, int n, double *pente, double *valY0) |
92 |
{ |
93 |
int i; |
94 |
|
95 |
// coef directeur de la droite |
96 |
double a = variance(y,n) / covariance(x,y,n); |
97 |
|
98 |
// b = valeur de y (0) par moindre carr�s |
99 |
double b = 0; |
100 |
for (i=0; i<n; i++) |
101 |
b += y[i] - a*x[i]; |
102 |
b /= n; |
103 |
|
104 |
*pente = a; |
105 |
*valY0 = b; |
106 |
} |
107 |
|
108 |
double OT_STATISTIQUE::max(double *x, int n) |
109 |
{ |
110 |
if (n==0) |
111 |
return 0; |
112 |
|
113 |
double max_x = x[0]; |
114 |
for (int i=0;i<n;i++) |
115 |
if (x[i] > max_x) |
116 |
max_x = x[i]; |
117 |
|
118 |
return max_x; |
119 |
} |
120 |
|
121 |
double OT_STATISTIQUE::min(double *x, int n) |
122 |
{ |
123 |
if (n==0) |
124 |
return 0; |
125 |
|
126 |
double min_x = x[0]; |
127 |
for (int i=0;i<n;i++) |
128 |
if (x[i] < min_x) |
129 |
min_x = x[i]; |
130 |
|
131 |
return min_x; |
132 |
} |