@@ -20,6 +20,7 @@ let chartMa, chartWma, chartEs, chartDes;
20
20
const PURPLE = 'rgb(150, 99, 132)' ;
21
21
const BLUE = 'rgb(99, 99, 132)' ;
22
22
const MISTAKE_TEXT = 'Average mistake = ' ;
23
+ const ABS_MISTAKE_TEXT = 'Average absolute mistake = ' ;
23
24
24
25
// todo: make generation, not hard code
25
26
const DATA_SET_1 = [ 30 , 32 , 35 , 40 , 38 , 51 , 50 , 49 , 55 , 50 , 40 , 59 , 35 , 36 , 40 ] ; // DES
@@ -98,6 +99,17 @@ function averageMistake(realList, predictedList) {
98
99
return ( allMistake / realList . length ) . toFixed ( 2 ) ;
99
100
}
100
101
102
+ function averageAbsoluteMistake ( realList , predictedList ) {
103
+ if ( realList . length !== predictedList . length ) {
104
+ throw 'real and predicted lists must be the same length' ;
105
+ }
106
+ let allMistake = 0 ;
107
+ for ( let i = 0 ; i < realList . length ; i ++ ) {
108
+ allMistake += Math . abs ( realList [ i ] - predictedList [ i ] ) / realList [ i ] ;
109
+ }
110
+ return ( allMistake / realList . length ) . toFixed ( 2 ) ;
111
+ }
112
+
101
113
let maData = {
102
114
context : document . getElementById ( 'maChart' ) . getContext ( '2d' ) ,
103
115
/**
@@ -125,11 +137,13 @@ let maData = {
125
137
}
126
138
return predictedValues ;
127
139
} ,
128
-
140
+
129
141
// view
130
142
setMistake : function ( ) {
131
143
document . getElementById ( "maMistake" ) . innerHTML =
132
144
MISTAKE_TEXT + averageMistake ( realValues , maData . predictList ( realValues ) ) ;
145
+ document . getElementById ( "maAbsMistake" ) . innerHTML =
146
+ ABS_MISTAKE_TEXT + averageAbsoluteMistake ( realValues , maData . predictList ( realValues ) ) ;
133
147
}
134
148
} ;
135
149
@@ -165,6 +179,8 @@ let wmaData = {
165
179
setMistake : function ( ) {
166
180
document . getElementById ( "wmaMistake" ) . innerHTML =
167
181
MISTAKE_TEXT + averageMistake ( realValues , wmaData . predictList ( realValues , this . prevRate ) ) ;
182
+ document . getElementById ( "wmaAbsMistake" ) . innerHTML =
183
+ ABS_MISTAKE_TEXT + averageAbsoluteMistake ( realValues , wmaData . predictList ( realValues ) ) ;
168
184
}
169
185
} ;
170
186
@@ -195,6 +211,8 @@ let esData = {
195
211
setMistake : function ( ) {
196
212
document . getElementById ( "esMistake" ) . innerHTML =
197
213
MISTAKE_TEXT + averageMistake ( realValues , esData . predictList ( realValues , this . alpha ) ) ;
214
+ document . getElementById ( "esAbsMistake" ) . innerHTML =
215
+ ABS_MISTAKE_TEXT + averageAbsoluteMistake ( realValues , esData . predictList ( realValues ) ) ;
198
216
}
199
217
} ;
200
218
@@ -250,6 +268,8 @@ let desData = {
250
268
setMistake : function ( ) {
251
269
document . getElementById ( "desMistake" ) . innerHTML =
252
270
MISTAKE_TEXT + averageMistake ( realValues , this . predictList ( realValues , this . alpha ) ) ;
271
+ document . getElementById ( "desAbsMistake" ) . innerHTML =
272
+ ABS_MISTAKE_TEXT + averageAbsoluteMistake ( realValues , desData . predictList ( realValues ) ) ;
253
273
}
254
274
} ;
255
275
@@ -407,4 +427,4 @@ function drawAll() {
407
427
408
428
drawAll ( ) ;
409
429
410
-
430
+ console . log ( desData . predictList ( DATA_SET_1 ) ) ;
0 commit comments