gov.sandia.cognition.statistics.method.ConfidenceInterval Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cognitive-foundry Show documentation
Show all versions of cognitive-foundry Show documentation
A single jar with all the Cognitive Foundry components.
/*
* File: ConfidenceInterval.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright July 16, 2007, 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.method;
import gov.sandia.cognition.util.AbstractCloneableSerializable;
/**
* Contains a specification for a confidence interval, that is, the solution of
* Pr{ lowerBound <= x(centralValue) <= upperBound } >= confidence
*
* @author Kevin R. Dixon
* @since 2.0
*
*/
public class ConfidenceInterval
extends AbstractCloneableSerializable
{
/**
* Lower bound for the statistic
*/
private double lowerBound;
/**
* Upper bound for the statistic
*/
private double upperBound;
/**
* Central value of the statistic (expectation, maximum likelihood, etc.)
*/
private double centralValue;
/**
* Confidence that the statistic is within the bound, or 1-alpha, on the
* interval [0,1], where confidence=0 means definitely not within the bound
* and confidence=1 means definite within the bound.
*/
private double confidence;
/**
* Number of sample values used to create the interval
*/
private int numSamples;
/**
* Creates a new instance of ConfidenceInterval
* @param centralValue
* Central value of the statistic (expectation, maximum likelihood, etc.)
* @param lowerBound
* Lower bound for the statistic
* @param upperBound
* Upper bound for the statistic
* @param confidence
* Confidence that the statistic is within the bound, or 1-alpha, on the
* interval [0,1], where confidence=0 means definitely not within the bound
* and confidence=1 means definite within the bound.
* @param numSamples The number of samples to take.
*/
public ConfidenceInterval(
double centralValue,
double lowerBound,
double upperBound,
double confidence,
int numSamples )
{
if( (upperBound < lowerBound) ||
(centralValue < lowerBound) ||
(centralValue > upperBound) )
{
throw new IllegalArgumentException( "Expected: lowerBound <= centralValue <= upperBound" );
}
this.setCentralValue( centralValue );
this.setLowerBound( lowerBound );
this.setUpperBound( upperBound );
this.setConfidence( confidence );
this.setNumSamples( numSamples );
}
/**
* Copy constructor
* @param other ConfidenceInterval to clone
*/
public ConfidenceInterval(
ConfidenceInterval other )
{
this( other.getCentralValue(), other.getLowerBound(), other.getUpperBound(), other.getConfidence(), other.getNumSamples() );
}
/**
* Getter for lowerBound
* @return
* Lower bound for the statistic
*/
public double getLowerBound()
{
return this.lowerBound;
}
/**
* Setter for lowerBound
* @param lowerBound
* Lower bound for the statistic
*/
protected void setLowerBound(
double lowerBound)
{
this.lowerBound = lowerBound;
}
/**
* Getter for upperBound
* @return
* Upper bound for the statistic
*/
public double getUpperBound()
{
return this.upperBound;
}
/**
* Setter for upperBound
* @param upperBound
* Upper bound for the statistic
*/
protected void setUpperBound(
double upperBound)
{
this.upperBound = upperBound;
}
/**
* Getter for centralValue
* @return
* Central value of the statistic (expectation, maximum likelihood, etc.)
*/
public double getCentralValue()
{
return this.centralValue;
}
/**
* Setter for centralValue
* @param centralValue
* Central value of the statistic (expectation, maximum likelihood, etc.)
*/
protected void setCentralValue(
double centralValue)
{
this.centralValue = centralValue;
}
/**
* Getter for confidence
* @return
* Confidence that the statistic is within the bound, or 1-alpha, on the
* interval [0,1], where confidence=0 means definitely not within the bound
* and confidence=1 means definite within the bound.
*/
public double getConfidence()
{
return this.confidence;
}
/**
* Setter for confidence
* @param confidence
* Confidence that the statistic is within the bound, or 1-alpha, on the
* interval [0,1], where confidence=0 means definitely not within the bound
* and confidence=1 means definite within the bound.
*/
protected void setConfidence(
double confidence)
{
if( (confidence < 0.0) ||
(confidence > 1.0) )
{
throw new IllegalArgumentException( "0.0 <= confidence <= 1.0" );
}
this.confidence = confidence;
}
@Override
public String toString()
{
// return "Pr{" + this.getLowerBound() + "<=x("+this.getCentralValue()+")<=" + this.getUpperBound() + "} >= " + this.getConfidence() + ", Based on " + this.getNumSamples() + " samples" ;
return this.getLowerBound() + " " + this.getCentralValue() + " " + this.getUpperBound() + " " + this.getConfidence() + " " + this.getNumSamples();
}
/**
* Getter for numSamples
* @return
* Number of sample values used to create the interval
*/
public int getNumSamples()
{
return this.numSamples;
}
/**
* Setter for numSamples
* @param numSamples
* Number of sample values used to create the interval
*/
public void setNumSamples(
int numSamples)
{
if( numSamples <= 0 )
{
throw new IllegalArgumentException( "numSamples > 0" );
}
this.numSamples = numSamples;
}
/**
* Returns whether or not the value is within the specified interval
* @param value
* Value to determine if its within the interval
* @return
* True if within the interval, false otherwise
*/
public boolean withinInterval(
double value )
{
return ((this.getLowerBound() <= value) &&
(value <= this.getUpperBound()));
}
}