/* * File: SufficientStatistic.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Mar 2, 2011, Sandia Corporation. * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive * license for use of this work by or on behalf of the U.S. Government. * Export of this program may require a license from the United States * Government. See CopyrightHistory.txt for complete details. * */ package gov.sandia.cognition.statistics; import gov.sandia.cognition.annotation.PublicationReference; import gov.sandia.cognition.annotation.PublicationType; import gov.sandia.cognition.factory.Factory; import gov.sandia.cognition.util.CloneableSerializable; /** * Sufficient statistics are the data which are sufficient to store all * information to create an underlying parameter, such as a Distribution. * @param <DataType> * Type of data generated by the Distribution * @param <DistributionType> * Type of Distribution this is the sufficient statistics of * @author Kevin R. Dixon * @since 3.1 */ @PublicationReference( author="Wikipedia", title="Sufficient statistic", type=PublicationType.WebPage, year=2011, url="http://en.wikipedia.org/wiki/Sufficient_statistic" ) public interface SufficientStatistic<DataType, DistributionType>// extends Distribution<? extends DataType>> extends Factory<DistributionType>, CloneableSerializable { /** * Gets the count * @return * Number of data points used to create this SufficientStatistic */ public long getCount(); /** * Modifies the given distribution with the parameters indicated by the * sufficient statistics * @param distribution * Distribution to modify by side effect */ public void create( final DistributionType distribution); /** * Updates the sufficient statistics from the given value * @param value * Value to update the sufficient statistics */ void update( final DataType value); /** * Updates the sufficient statistics from the given set of values * @param values * Values to update the sufficient statistics */ void update( final Iterable<? extends DataType> values); }