package distributions;
import java.util.*;
/**A simple implementation of a data distribution*/
public class Data{
//Variables
private Vector values = new Vector();
private int size;
private double value, mean, meanSquare, mode;
private String name;
/**This general constructor creates a new data with a prescribed name.*/
public Data(String n){
setName(n);
}
/**This default constructor creates a new data with the name "X"*/
public Data(){
this("X");
}
/**This method adds a new number to the data set and re-compute the mean, mean square,
minimum and maximum values, and order statistics*/
public void setValue(double x){
double a, b;
value = x;
boolean notInserted = true;
//Add the value to the data set
for (int i = 0; i < size - 1; i++){
a = ((Double)values.elementAt(i)).doubleValue();
b = ((Double)values.elementAt(i + 1)).doubleValue();
if ((a <= x) & (x >= b)){
values.insertElementAt(new Double(x), i + 1);
notInserted = false;
}
}
if (notInserted) values.insertElementAt(new Double(x), 0);
//Re-compute mean and mean square
mean = ((double)(size - 1) / size) * mean + value / size;
meanSquare = ((double)(size - 1) / size) * meanSquare + value * value / size;
}
/**Get the current value of the data set*/
public double getValue(){
return value;
}
/**This method returns the i'th value of the data set.*/
public double getValue(int i){
return ((Double)values.elementAt(i)).doubleValue();
}
/**Get the mean*/
public double getMean(){
return mean;
}
/**Get the population variance*/
public double getPVariance(){
double var = meanSquare - mean * mean;
if (var < 0) var = 0;
return var;
}
/**Get the population standard deviation*/
public double getPSD(){
return Math.sqrt(getPVariance());
}
/**Get the sample variance of the data set*/
public double getVariance(){
return ((double)size / (size - 1)) * getPVariance();
}
/**Get the sample standard deviation of the data set*/
public double getSD(){
return Math.sqrt(getVariance());
}
/**Get the minimum value of the data set*/
public double getMinValue(){
return getValue(0);
}
/**Get the maximum value of the data set*/
public double getMaxValue(){
return getValue(size - 1);
}
/**Reset the data set*/
public void reset(){
values.removeAllElements();
size = 0;
}
/**Get the number of pointCount in the data set*/
public int getSize(){
return size;
}
/**Get the name of the data set*/
public void setName(String name){
this.name = name;
}
/**Set the name of the data set*/
public String getName(){
return name;
}
}