This example illustrates the action of the Merge function under different settings of the Merge rule.
import com.imsl.stat.*;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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 = new 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]);
}
}
}
Time series 1 Time series 2 12/12/2010 1.0 12/12/2010 -1.0 12/15/2010 2.0 12/17/2010 -2.0 12/18/2010 3.0 12/22/2010 -3.0 12/21/2010 4.0 12/27/2010 -4.0 12/24/2010 5.0 1/1/2011 -5.0 12/27/2010 6.0 1/6/2011 -6.0 12/30/2010 7.0 1/11/2011 -7.0 1/2/2011 8.0 1/16/2011 -8.0 1/5/2011 9.0 1/21/2011 -9.0 1/8/2011 10.0 1/26/2011 -10.0 Merge result using the union (default) merge rule: Series length: 18 12/12/2010 0.0 12/15/2010 2.0 12/17/2010 -2.0 12/18/2010 3.0 12/21/2010 4.0 12/22/2010 -3.0 12/24/2010 5.0 12/27/2010 1.0 12/30/2010 7.0 1/1/2011 -5.0 1/2/2011 8.0 1/5/2011 9.0 1/6/2011 -6.0 1/8/2011 10.0 1/11/2011 -7.0 1/16/2011 -8.0 1/21/2011 -9.0 1/26/2011 -10.0 Merge results using the intersection merge rule: Series length: 2 12/12/2010 0.0 12/27/2010 1.0 Merge results using the union with missing rule: Series length: 18 Number of missing values: 16 12/12/2010 0.0 12/15/2010 NaN 12/17/2010 NaN 12/18/2010 NaN 12/21/2010 NaN 12/22/2010 NaN 12/24/2010 NaN 12/27/2010 1.0 12/30/2010 NaN 1/1/2011 NaN 1/2/2011 NaN 1/5/2011 NaN 1/6/2011 NaN 1/8/2011 NaN 1/11/2011 NaN 1/16/2011 NaN 1/21/2011 NaN 1/26/2011 NaNLink to Java source.