1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.math.stat.descriptive;
18
19 import java.io.Serializable;
20 import org.apache.commons.math.util.MathUtils;
21
22 /**
23 * Value object representing the results of a univariate statistical summary.
24 *
25 * @version $Revision: 480440 $ $Date: 2006-11-29 00:14:12 -0700 (Wed, 29 Nov 2006) $
26 */
27 public class StatisticalSummaryValues implements Serializable,
28 StatisticalSummary {
29
30 /** Serialization id */
31 private static final long serialVersionUID = -5108854841843722536L;
32
33 /** The sample mean */
34 private final double mean;
35
36 /** The sample variance */
37 private final double variance;
38
39 /** The number of observations in the sample */
40 private final long n;
41
42 /** The maximum value */
43 private final double max;
44
45 /** The minimum value */
46 private final double min;
47
48 /** The sum of the sample values */
49 private final double sum;
50
51 /**
52 * Constructor
53 *
54 * @param mean the sample mean
55 * @param variance the sample variance
56 * @param n the number of observations in the sample
57 * @param max the maximum value
58 * @param min the minimum value
59 * @param sum the sum of the values
60 */
61 public StatisticalSummaryValues(double mean, double variance, long n,
62 double max, double min, double sum) {
63 super();
64 this.mean = mean;
65 this.variance = variance;
66 this.n = n;
67 this.max = max;
68 this.min = min;
69 this.sum = sum;
70 }
71
72 /**
73 * @return Returns the max.
74 */
75 public double getMax() {
76 return max;
77 }
78
79 /**
80 * @return Returns the mean.
81 */
82 public double getMean() {
83 return mean;
84 }
85
86 /**
87 * @return Returns the min.
88 */
89 public double getMin() {
90 return min;
91 }
92
93 /**
94 * @return Returns the number of values.
95 */
96 public long getN() {
97 return n;
98 }
99
100 /**
101 * @return Returns the sum.
102 */
103 public double getSum() {
104 return sum;
105 }
106
107 /**
108 * @return Returns the standard deviation
109 */
110 public double getStandardDeviation() {
111 return Math.sqrt(variance);
112 }
113
114 /**
115 * @return Returns the variance.
116 */
117 public double getVariance() {
118 return variance;
119 }
120
121 /**
122 * Returns true iff <code>object</code> is a
123 * <code>StatisticalSummaryValues</code> instance and all statistics have
124 * the same values as this.
125 *
126 * @param object the object to test equality against.
127 * @return true if object equals this
128 */
129 public boolean equals(Object object) {
130 if (object == this ) {
131 return true;
132 }
133 if (object instanceof StatisticalSummaryValues == false) {
134 return false;
135 }
136 StatisticalSummaryValues stat = (StatisticalSummaryValues) object;
137 return (MathUtils.equals(stat.getMax(), this.getMax()) &&
138 MathUtils.equals(stat.getMean(),this.getMean()) &&
139 MathUtils.equals(stat.getMin(),this.getMin()) &&
140 MathUtils.equals(stat.getN(), this.getN()) &&
141 MathUtils.equals(stat.getSum(), this.getSum()) &&
142 MathUtils.equals(stat.getVariance(),this.getVariance()));
143 }
144
145 /**
146 * Returns hash code based on values of statistics
147 *
148 * @return hash code
149 */
150 public int hashCode() {
151 int result = 31 + MathUtils.hash(getMax());
152 result = result * 31 + MathUtils.hash(getMean());
153 result = result * 31 + MathUtils.hash(getMin());
154 result = result * 31 + MathUtils.hash(getN());
155 result = result * 31 + MathUtils.hash(getSum());
156 result = result * 31 + MathUtils.hash(getVariance());
157 return result;
158 }
159
160 }