001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.math.stat.descriptive;
018
019 import java.io.Serializable;
020 import org.apache.commons.math.util.MathUtils;
021
022 /**
023 * Value object representing the results of a univariate statistical summary.
024 *
025 * @version $Revision: 811833 $ $Date: 2009-09-06 12:27:50 -0400 (Sun, 06 Sep 2009) $
026 */
027 public class StatisticalSummaryValues implements Serializable,
028 StatisticalSummary {
029
030 /** Serialization id */
031 private static final long serialVersionUID = -5108854841843722536L;
032
033 /** The sample mean */
034 private final double mean;
035
036 /** The sample variance */
037 private final double variance;
038
039 /** The number of observations in the sample */
040 private final long n;
041
042 /** The maximum value */
043 private final double max;
044
045 /** The minimum value */
046 private final double min;
047
048 /** The sum of the sample values */
049 private final double sum;
050
051 /**
052 * Constructor
053 *
054 * @param mean the sample mean
055 * @param variance the sample variance
056 * @param n the number of observations in the sample
057 * @param max the maximum value
058 * @param min the minimum value
059 * @param sum the sum of the values
060 */
061 public StatisticalSummaryValues(double mean, double variance, long n,
062 double max, double min, double sum) {
063 super();
064 this.mean = mean;
065 this.variance = variance;
066 this.n = n;
067 this.max = max;
068 this.min = min;
069 this.sum = sum;
070 }
071
072 /**
073 * @return Returns the max.
074 */
075 public double getMax() {
076 return max;
077 }
078
079 /**
080 * @return Returns the mean.
081 */
082 public double getMean() {
083 return mean;
084 }
085
086 /**
087 * @return Returns the min.
088 */
089 public double getMin() {
090 return min;
091 }
092
093 /**
094 * @return Returns the number of values.
095 */
096 public long getN() {
097 return n;
098 }
099
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(), getMax()) &&
139 MathUtils.equals(stat.getMean(), getMean()) &&
140 MathUtils.equals(stat.getMin(), getMin()) &&
141 MathUtils.equals(stat.getN(), getN()) &&
142 MathUtils.equals(stat.getSum(), getSum()) &&
143 MathUtils.equals(stat.getVariance(), 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 }