-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStandardDeviationMean.java
More file actions
62 lines (44 loc) · 1.6 KB
/
StandardDeviationMean.java
File metadata and controls
62 lines (44 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.util.LinkedList;
public class StandardDeviationMean {
// need to keep track of all values for standard deviation calculation
private LinkedList<Double> Xs = new LinkedList<>();
// necessary for calculating mean & standard deviation
private double sumOfAllData = 0, numberOfData = 0, sumOfXMinusMeanWholeSquare = 0;
// sample, mean, standard deviation
private double X = 0, mean = 0, standardDeviation = 0;
public StandardDeviationMean() {
}
public void addSample(double X){
// update the mean & standard deviation with the new sample
this.X = X;
// linked list size is not limited (or at least 10^9, which is large enough)
Xs.add(X);
// mean calculation
sumOfAllData = 0;
Xs.forEach( (x) -> sumOfAllData+=x );
numberOfData = Xs.size();
mean = sumOfAllData/numberOfData;
// standard deviation calculation
sumOfXMinusMeanWholeSquare = 0;
Xs.forEach( (x) -> sumOfXMinusMeanWholeSquare += (x-mean)*(x-mean) ); // have to do this everytime mean changes
standardDeviation = Math.sqrt(sumOfXMinusMeanWholeSquare/numberOfData);
}
public double getSumOfAllData() {
return sumOfAllData;
}
public double getNumberOfData() {
return numberOfData;
}
public double getSumOfXMinusMeanWholeSquare() {
return sumOfXMinusMeanWholeSquare;
}
public double getX() {
return X;
}
public double getMean() {
return mean;
}
public double getStandardDeviation() {
return standardDeviation;
}
}