View Javadoc

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: 762087 $ $Date: 2009-04-05 10:20:18 -0400 (Sun, 05 Apr 2009) $
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     @Override
130     public boolean equals(Object object) {
131         if (object == this ) {
132             return true;
133         }
134         if (object instanceof StatisticalSummaryValues == false) {
135             return false;
136         }
137         StatisticalSummaryValues stat = (StatisticalSummaryValues) object;
138         return (MathUtils.equals(stat.getMax(), this.getMax()) && 
139                 MathUtils.equals(stat.getMean(),this.getMean()) &&
140                 MathUtils.equals(stat.getMin(),this.getMin()) &&
141                 MathUtils.equals(stat.getN(), this.getN()) &&
142                 MathUtils.equals(stat.getSum(), this.getSum()) &&
143                 MathUtils.equals(stat.getVariance(),this.getVariance()));
144     }
145     
146     /**
147      * Returns hash code based on values of statistics
148      * 
149      * @return hash code
150      */
151     @Override
152     public int hashCode() {
153         int result = 31 + MathUtils.hash(getMax());
154         result = result * 31 + MathUtils.hash(getMean());
155         result = result * 31 + MathUtils.hash(getMin());
156         result = result * 31 + MathUtils.hash(getN());
157         result = result * 31 + MathUtils.hash(getSum());
158         result = result * 31 + MathUtils.hash(getVariance());
159         return result;
160     }
161 
162 }