This example illustrates merging two time series using different combine methods.
import com.imsl.stat.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class TimeSeriesOperationsEx2 {
public static void main(String args[]) throws ParseException {
double data1[] = {
0.940543272, 2.664279727, 0.252045652, 1.221098464, 0.270575973,
0.446882726, 0.073672969, -4.450030305, 0.007699415, -0.215808015
};
double data2[] = {
0.42010331, -1.687159586, 0.212950629, 1.147614577, 0.748805609,
-1.311175287, -1.574960025, 0.484204788, 0.178009897, -0.869311816,
1.062785115, 0.098566846, 0.342257263, -0.47633197
};
String datestrings1[] = {
"4/5/1988", "4/6/1988", "4/7/1988", "4/8/1988", "4/11/1988",
"4/12/1988", "4/13/1988", "4/14/1988", "4/15/1988", "4/18/1988"
};
String datestrings2[] = {
"4/13/1988", "4/14/1988", "4/15/1988", "4/19/1988", "4/20/1988",
"4/21/1988", "4/22/1988", "4/25/1988", "4/26/1988", "4/27/1988",
"4/28/1988", "4/29/1988", "5/2/1988", "5/3/1988"
};
SimpleDateFormat dateFormat = new SimpleDateFormat("M/d/y");
TimeSeries ts1 = new TimeSeries();
ts1.setSeriesValues(data1);
Date dates1[] = new Date[ts1.getLength()];
for (int i = 0; i < ts1.getLength(); i++) {
dates1[i] = dateFormat.parse(datestrings1[i]);
}
ts1.setDates(dates1);
TimeSeries ts2 = new TimeSeries();
ts2.setSeriesValues(data2);
Date dates2[] = new Date[ts2.getLength()];
for (int i = 0; i < ts2.getLength(); i++) {
dates2[i] = dateFormat.parse(datestrings2[i]);
}
ts2.setDates(dates2);
TimeSeries ts3 = new TimeSeries();
TimeSeriesOperations tsOps = new TimeSeriesOperations();
ts3 = tsOps.merge(ts1, ts2);
double[][] values3 = ts3.getSeriesValues();
System.out.println("Result using MergeRule.UNION and "
+ "CombineFunction.AVERAGE (defaults):");
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);
tsOps.setCombineMethod(TimeSeriesOperations.CombineMethod.ABS_DIFF);
ts3 = tsOps.merge(ts1, ts2);
values3 = ts3.getSeriesValues();
System.out.println("Result using MergeRule.INTERSECTION and "
+ "CombineFunction.ABS_DIFF:");
for (int i = 0; i < ts3.getLength(); i++) {
System.out.println(dateFormat.format(ts3.getDates()[i])
+ "\t" + values3[i][0]);
}
}
}
Result using MergeRule.UNION and CombineFunction.AVERAGE (defaults): 4/5/1988 0.940543272 4/6/1988 2.664279727 4/7/1988 0.252045652 4/8/1988 1.221098464 4/11/1988 0.270575973 4/12/1988 0.446882726 4/13/1988 0.2468881395 4/14/1988 -3.0685949455 4/15/1988 0.110325022 4/18/1988 -0.215808015 4/19/1988 1.147614577 4/20/1988 0.748805609 4/21/1988 -1.311175287 4/22/1988 -1.574960025 4/25/1988 0.484204788 4/26/1988 0.178009897 4/27/1988 -0.869311816 4/28/1988 1.062785115 4/29/1988 0.098566846 5/2/1988 0.342257263 5/3/1988 -0.47633197 Result using MergeRule.INTERSECTION and CombineFunction.ABS_DIFF: 4/13/1988 0.34643034100000003 4/14/1988 2.7628707190000004 4/15/1988 0.20525121400000002Link to Java source.