Skip to content

Commit c5e7e47

Browse files
committed
average abs mistake
1 parent 35f2cc2 commit c5e7e47

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

css/style.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ div.chart {
77
margin-left: 20%;
88
margin-right: 20%;
99
width: 60%;
10-
height: 400px;
10+
height: 500px;
1111
}
1212

1313
div.firstChart {

index.html

+5-1
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
<div class="chart firstChart">
2525
<h2>Moving average prediction</h2>
2626
<p id="maMistake"></p>
27+
<p id="maAbsMistake"></p>
2728
<canvas id="maChart"></canvas>
2829
</div>
2930

3031
<div class="chart">
3132
<h2>Weighted Moving average prediction</h2>
3233
<p id="wmaMistake"></p>
34+
<p id="wmaAbsMistake"></p>
3335

3436
<div class="slideContainer">
3537
<p>Previous : <span id="wmaPrevRate"></span>
@@ -44,6 +46,7 @@ <h2>Weighted Moving average prediction</h2>
4446
<div class="chart">
4547
<h2>Exponential Smoothing prediction</h2>
4648
<p id="esMistake"></p>
49+
<p id="esAbsMistake"></p>
4750

4851
<div class="slideContainer">
4952
<p>Alpha : <span id="esAlpha"></span>
@@ -57,6 +60,7 @@ <h2>Exponential Smoothing prediction</h2>
5760
<div class="chart">
5861
<h2>Double Exponential Smoothing prediction</h2>
5962
<p id="desMistake"></p>
63+
<p id="desAbsMistake"></p>
6064

6165
<div class="slideContainer">
6266
<p>Alpha (level rate) : <span id="desAlpha"></span>
@@ -74,4 +78,4 @@ <h2>Double Exponential Smoothing prediction</h2>
7478

7579
<script src="js/mychart.js"></script>
7680
</body>
77-
</html>
81+
</html>

js/mychart.js

+22-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ let chartMa, chartWma, chartEs, chartDes;
2020
const PURPLE = 'rgb(150, 99, 132)';
2121
const BLUE = 'rgb(99, 99, 132)';
2222
const MISTAKE_TEXT = 'Average mistake = ';
23+
const ABS_MISTAKE_TEXT = 'Average absolute mistake = ';
2324

2425
// todo: make generation, not hard code
2526
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) {
9899
return (allMistake / realList.length).toFixed(2);
99100
}
100101

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+
101113
let maData = {
102114
context: document.getElementById('maChart').getContext('2d'),
103115
/**
@@ -125,11 +137,13 @@ let maData = {
125137
}
126138
return predictedValues;
127139
},
128-
140+
129141
// view
130142
setMistake: function () {
131143
document.getElementById("maMistake").innerHTML =
132144
MISTAKE_TEXT + averageMistake(realValues, maData.predictList(realValues));
145+
document.getElementById("maAbsMistake").innerHTML =
146+
ABS_MISTAKE_TEXT + averageAbsoluteMistake(realValues, maData.predictList(realValues));
133147
}
134148
};
135149

@@ -165,6 +179,8 @@ let wmaData = {
165179
setMistake: function() {
166180
document.getElementById("wmaMistake").innerHTML =
167181
MISTAKE_TEXT + averageMistake(realValues, wmaData.predictList(realValues, this.prevRate));
182+
document.getElementById("wmaAbsMistake").innerHTML =
183+
ABS_MISTAKE_TEXT + averageAbsoluteMistake(realValues, wmaData.predictList(realValues));
168184
}
169185
};
170186

@@ -195,6 +211,8 @@ let esData = {
195211
setMistake: function () {
196212
document.getElementById("esMistake").innerHTML =
197213
MISTAKE_TEXT + averageMistake(realValues, esData.predictList(realValues, this.alpha));
214+
document.getElementById("esAbsMistake").innerHTML =
215+
ABS_MISTAKE_TEXT + averageAbsoluteMistake(realValues, esData.predictList(realValues));
198216
}
199217
};
200218

@@ -250,6 +268,8 @@ let desData = {
250268
setMistake: function () {
251269
document.getElementById("desMistake").innerHTML =
252270
MISTAKE_TEXT + averageMistake(realValues, this.predictList(realValues, this.alpha));
271+
document.getElementById("desAbsMistake").innerHTML =
272+
ABS_MISTAKE_TEXT + averageAbsoluteMistake(realValues, desData.predictList(realValues));
253273
}
254274
};
255275

@@ -407,4 +427,4 @@ function drawAll() {
407427

408428
drawAll();
409429

410-
430+
console.log(desData.predictList(DATA_SET_1));

0 commit comments

Comments
 (0)