package com.imsl.test.example.stat;
import com.imsl.stat.*;
import java.text.*;
/**
*
* Merges two time series using different merging rules.
*
* This example illustrates the action of the merge
function under different
* settings of the merging rule.
*
* @see Code
* @see Output
*/
public class TimeSeriesOperationsEx1 {
public static void main(String args[]) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("M/d/y");
TimeSeries ts1 = new TimeSeries();
TimeSeries ts2 = new TimeSeries();
/* Create dates in different increments */
ts1.setStartDate(dateFormat.parse("12/12/2010"));
ts1.setDateIncrement(3);
ts2.setStartDate(dateFormat.parse("12/12/2010"));
ts2.setDateIncrement(5);
int n = 10;
double y1[] = new double[n];
double y2[] = new double[n];
/* Create series values */
for (int i = 0; i < n; i++) {
y1[i] = (i + 1.0);
y2[i] = -(i + 1.0);
}
ts1.setSeriesValues(y1);
ts2.setSeriesValues(y2);
double[][] values1 = ts1.getSeriesValues();
double[][] values2 = ts2.getSeriesValues();
System.out.println("Time series 1 \t \tTime series 2");
for (int i = 0; i < n; i++) {
System.out.println(dateFormat.format(ts1.getDates()[i])
+ "\t" + values1[i][0]
+ "\t" + dateFormat.format(ts2.getDates()[i])
+ "\t" + values2[i][0]);
}
TimeSeriesOperations tsOps = new TimeSeriesOperations();
TimeSeries ts3 = tsOps.merge(ts1, ts2);
double[][] values3 = ts3.getSeriesValues();
System.out.println("Merge result using the union (default) merge rule: ");
System.out.println("Series length: " + ts3.getLength());
for (int i = 0; i < ts3.getLength(); i++) {
System.out.println(dateFormat.format(ts3.getDates()[i])
+ "\t" + values3[i][0]);
}
tsOps.setMergeRule(TimeSeriesOperations.MergeRule.INTERSECTION);
ts3 = tsOps.merge(ts1, ts2);
values3 = ts3.getSeriesValues();
System.out.println("Merge results using the intersection merge rule: ");
System.out.println("Series length: " + ts3.getLength());
for (int i = 0; i < ts3.getLength(); i++) {
System.out.println(dateFormat.format(ts3.getDates()[i])
+ "\t" + values3[i][0]);
}
tsOps.setMergeRule(TimeSeriesOperations.MergeRule.UNION_MISSING);
ts3 = tsOps.merge(ts1, ts2);
values3 = ts3.getSeriesValues();
System.out.println("Merge results using the union with missing rule: ");
System.out.println("Series length: " + ts3.getLength());
System.out.println("Number of missing values: " + ts3.getNumMissing());
for (int i = 0; i < ts3.getLength(); i++) {
System.out.println(dateFormat.format(ts3.getDates()[i])
+ "\t" + values3[i][0]);
}
}
}