1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | export function linear(points) {
|
18 |
|
19 | var sx = 0;
|
20 | var sy = 0;
|
21 | var sx2 = 0;
|
22 | var sxy = 0;
|
23 | for (var _iterator = points, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
24 | var _ref;
|
25 |
|
26 | if (_isArray) {
|
27 | if (_i >= _iterator.length) break;
|
28 | _ref = _iterator[_i++];
|
29 | } else {
|
30 | _i = _iterator.next();
|
31 | if (_i.done) break;
|
32 | _ref = _i.value;
|
33 | }
|
34 |
|
35 | var p = _ref;
|
36 |
|
37 | var x = p.x;
|
38 | var y = p.y;
|
39 | sx += x;
|
40 | sy += y;
|
41 | sx2 += x * x;
|
42 | sxy += x * y;
|
43 | }
|
44 | var n = points.length;
|
45 | var d = n * sx2 - sx * sx;
|
46 |
|
47 | var a = (n * sxy - sx * sy) / d;
|
48 | var b = (sy * sx2 - sx * sxy) / d;
|
49 | return [a, b];
|
50 | }
|
51 |
|
52 |
|
53 |
|
54 |
|
55 | export function correlationCoefficient(points) {
|
56 |
|
57 | var sx = 0;
|
58 | var sy = 0;
|
59 | var sx2 = 0;
|
60 | var sy2 = 0;
|
61 | var sxy = 0;
|
62 | for (var _iterator2 = points, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
63 | var _ref2;
|
64 |
|
65 | if (_isArray2) {
|
66 | if (_i2 >= _iterator2.length) break;
|
67 | _ref2 = _iterator2[_i2++];
|
68 | } else {
|
69 | _i2 = _iterator2.next();
|
70 | if (_i2.done) break;
|
71 | _ref2 = _i2.value;
|
72 | }
|
73 |
|
74 | var p = _ref2;
|
75 |
|
76 | var x = p.x;
|
77 | var y = p.y;
|
78 | sx += x;
|
79 | sy += y;
|
80 | sx2 += x * x;
|
81 | sy2 += y * y;
|
82 | sxy += x * y;
|
83 | }
|
84 | var n = points.length;
|
85 |
|
86 | return (n * sxy - sx * sy) / (Math.sqrt(n * sx2 - sx * sx) * Math.sqrt(n * sy2 - sy * sy));
|
87 | }
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 | export function quadratic(points) {
|
96 | var P = 0;
|
97 | var Q = 0;
|
98 | var R = 0;
|
99 | var S = 0;
|
100 | var T = 0;
|
101 | var U = 0;
|
102 | var V = 0;
|
103 | for (var _iterator3 = points, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
104 | var _ref3;
|
105 |
|
106 | if (_isArray3) {
|
107 | if (_i3 >= _iterator3.length) break;
|
108 | _ref3 = _iterator3[_i3++];
|
109 | } else {
|
110 | _i3 = _iterator3.next();
|
111 | if (_i3.done) break;
|
112 | _ref3 = _i3.value;
|
113 | }
|
114 |
|
115 | var p = _ref3;
|
116 |
|
117 | var x = p.x;
|
118 | var y = p.y;
|
119 | var x2 = x * x;
|
120 | P += x;
|
121 | Q += x2;
|
122 | R += x * x2;
|
123 | S += x2 * x2;
|
124 | T += y;
|
125 | U += x * y;
|
126 | V += x2 * y;
|
127 | }
|
128 | var N = points.length;
|
129 |
|
130 | var D = N * Q * S + 2 * P * Q * R - Q * Q * Q - P * P * S - N * R * R;
|
131 |
|
132 | var a = (N * Q * V + P * R * T + P * Q * U - Q * Q * T - P * P * V - N * R * U) / D;
|
133 | var b = (N * S * U + P * Q * V + Q * R * T - Q * Q * U - P * S * T - N * R * V) / D;
|
134 | var c = (Q * S * T + Q * R * U + P * R * V - Q * Q * V - P * S * U - R * R * T) / D;
|
135 | return [a, b, c];
|
136 | }
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 | export function func3(points, f0, f1, f2) {
|
146 | var M = 0;
|
147 | var P = 0;
|
148 | var Q = 0;
|
149 | var R = 0;
|
150 | var S = 0;
|
151 | var T = 0;
|
152 | var U = 0;
|
153 | var V = 0;
|
154 | var W = 0;
|
155 | for (var _iterator4 = points, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
156 | var _ref4;
|
157 |
|
158 | if (_isArray4) {
|
159 | if (_i4 >= _iterator4.length) break;
|
160 | _ref4 = _iterator4[_i4++];
|
161 | } else {
|
162 | _i4 = _iterator4.next();
|
163 | if (_i4.done) break;
|
164 | _ref4 = _i4.value;
|
165 | }
|
166 |
|
167 | var p = _ref4;
|
168 |
|
169 | var x = p.x;
|
170 | var y = p.y;
|
171 | var y0 = f0(x);
|
172 | var y1 = f1(x);
|
173 | var y2 = f2(x);
|
174 | M += y0 * y0;
|
175 | P += y0 * y1;
|
176 | Q += y0 * y2;
|
177 | R += y1 * y1;
|
178 | S += y1 * y2;
|
179 | T += y2 * y2;
|
180 | U += y * y0;
|
181 | V += y * y1;
|
182 | W += y * y2;
|
183 | }
|
184 |
|
185 | var D = M * R * T + 2 * P * Q * S - M * S * S - R * Q * Q - T * P * P;
|
186 | var a = (U * (R * T - S * S) + V * (Q * S - P * T) + W * (P * S - Q * R)) / D;
|
187 | var b = (U * (S * Q - P * T) + V * (M * T - Q * Q) + W * (P * Q - M * S)) / D;
|
188 | var c = (U * (P * S - R * Q) + V * (P * Q - M * S) + W * (M * R - P * P)) / D;
|
189 | return [a, b, c];
|
190 | }
|
191 |
|
192 |
|
193 |
|
194 |
|
195 |
|
196 |
|
197 |
|
198 | export function func1(points, f) {
|
199 | var syf = 0;
|
200 | var sf2 = 0;
|
201 |
|
202 | for (var _iterator5 = points, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
|
203 | var _ref5;
|
204 |
|
205 | if (_isArray5) {
|
206 | if (_i5 >= _iterator5.length) break;
|
207 | _ref5 = _iterator5[_i5++];
|
208 | } else {
|
209 | _i5 = _iterator5.next();
|
210 | if (_i5.done) break;
|
211 | _ref5 = _i5.value;
|
212 | }
|
213 |
|
214 | var p = _ref5;
|
215 |
|
216 | var fx = f(p.x);
|
217 | var y = p.y;
|
218 | syf += y * fx;
|
219 | sf2 += fx * fx;
|
220 | }
|
221 | return syf / sf2;
|
222 | }
|
223 |
|
224 | export default {
|
225 | linear: linear,
|
226 | correlationCoefficient: correlationCoefficient,
|
227 | quadratic: quadratic,
|
228 | func3: func3,
|
229 | func1: func1
|
230 | }; |
\ | No newline at end of file |