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    *      https://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  
18  /*
19   * This is not the original file distributed by the Apache Software Foundation
20   * It has been modified by the Hipparchus project
21   */
22  package org.hipparchus.stat.descriptive;
23  
24  import org.hipparchus.exception.MathIllegalArgumentException;
25  
26  /**
27   * Weighted evaluation for statistics.
28   */
29  public interface WeightedEvaluation {
30  
31      /**
32       * Returns the result of evaluating the statistic over the input array,
33       * using the supplied weights.
34       * <p>
35       * The default implementation delegates to
36       * <code>evaluate(double[], double[], int, int)</code> in the natural way.
37       *
38       * @param values input array
39       * @param weights array of weights
40       * @return the value of the weighted statistic applied to the input array
41       * @throws MathIllegalArgumentException if either array is null, lengths
42       * do not match, weights contain NaN, negative or infinite values, or
43       * weights does not include at least on positive value
44       */
45      default double evaluate(double[] values, double[] weights) throws MathIllegalArgumentException {
46          return evaluate(values, weights, 0, values.length);
47      }
48  
49      /**
50       * Returns the result of evaluating the statistic over the specified entries
51       * in the input array, using corresponding entries in the supplied weights array.
52       *
53       * @param values the input array
54       * @param weights array of weights
55       * @param begin the index of the first element to include
56       * @param length the number of elements to include
57       * @return the value of the weighted statistic applied to the included array entries
58       * @throws MathIllegalArgumentException if either array is null, lengths
59       * do not match, indices are invalid, weights contain NaN, negative or
60       * infinite values, or weights does not include at least on positive value
61       */
62      double evaluate(double[] values, double[] weights, int begin, int length)
63          throws MathIllegalArgumentException;
64  
65  }