diff --git a/jdplus-incubator-base/jdplus-filters-base-parent/jdplus-filters-base-core/src/test/java/jdplus/filters/base/core/FSTFilterTest.java b/jdplus-incubator-base/jdplus-filters-base-parent/jdplus-filters-base-core/src/test/java/jdplus/filters/base/core/FSTFilterTest.java index 94257b5..ebce51d 100644 --- a/jdplus-incubator-base/jdplus-filters-base-parent/jdplus-filters-base-core/src/test/java/jdplus/filters/base/core/FSTFilterTest.java +++ b/jdplus-incubator-base/jdplus-filters-base-parent/jdplus-filters-base-core/src/test/java/jdplus/filters/base/core/FSTFilterTest.java @@ -33,7 +33,7 @@ public void testSymmetric() { .nleads(4) .build(); FSTFilter.Results rslt = ff.make(.1 * i, 0, false); - System.out.println(DoubleSeq.of(rslt.getFilter().weightsToArray())); + // System.out.println(DoubleSeq.of(rslt.getFilter().weightsToArray())); } } @@ -45,11 +45,11 @@ public void testASymmetric() { .nleads(i) .build(); FSTFilter.Results rslt = ff.make(1, 0, true); - System.out.print(rslt.getS()); - System.out.print('\t'); - System.out.print(rslt.getF()); - System.out.print('\t'); - System.out.println(DoubleSeq.of(rslt.getFilter().weightsToArray())); +// System.out.print(rslt.getS()); +// System.out.print('\t'); +// System.out.print(rslt.getF()); +// System.out.print('\t'); +// System.out.println(DoubleSeq.of(rslt.getFilter().weightsToArray())); } } diff --git a/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-core/src/test/java/jdplus/highfreq/base/core/extendedairline/ExtendedAirlineMappingTest.java b/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-core/src/test/java/jdplus/highfreq/base/core/extendedairline/ExtendedAirlineMappingTest.java index 05eaa6e..6fbd1ce 100644 --- a/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-core/src/test/java/jdplus/highfreq/base/core/extendedairline/ExtendedAirlineMappingTest.java +++ b/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-core/src/test/java/jdplus/highfreq/base/core/extendedairline/ExtendedAirlineMappingTest.java @@ -44,7 +44,7 @@ public void testAR_int() { ExtendedAirlineMapping mapping = ExtendedAirlineMapping.of(spec); DoubleSeq p = mapping.getDefaultParameters(); ArimaModel m = mapping.map(p); - System.out.println(m); +// System.out.println(m); DoubleSeq np = mapping.parametersOf(m); assertEquals(p, np); } @@ -61,7 +61,7 @@ public void testAR_noint() { ExtendedAirlineMapping mapping = ExtendedAirlineMapping.of(spec); DoubleSeq p = mapping.getDefaultParameters(); ArimaModel m = mapping.map(p); - System.out.println(m); +// System.out.println(m); DoubleSeq np = mapping.parametersOf(m); assertTrue(p.distance(np) < 1.e-9); } @@ -78,7 +78,7 @@ public void test_int() { ExtendedAirlineMapping mapping = ExtendedAirlineMapping.of(spec); DoubleSeq p = mapping.getDefaultParameters(); ArimaModel m = mapping.map(p); - System.out.println(m); +// System.out.println(m); DoubleSeq np = mapping.parametersOf(m); assertEquals(p, np); } @@ -95,7 +95,7 @@ public void test_noint() { ExtendedAirlineMapping mapping = ExtendedAirlineMapping.of(spec); DoubleSeq p = mapping.getDefaultParameters(); ArimaModel m = mapping.map(p); - System.out.println(m); +// System.out.println(m); DoubleSeq np = mapping.parametersOf(m); assertTrue(p.distance(np) < 1.e-9); } diff --git a/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-r/src/test/java/jdplus/highfreq/base/r/SplinesTest.java b/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-r/src/test/java/jdplus/highfreq/base/r/SplinesTest.java index 4c509b6..8bf1790 100644 --- a/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-r/src/test/java/jdplus/highfreq/base/r/SplinesTest.java +++ b/jdplus-incubator-base/jdplus-highfreq-base-parent/jdplus-highfreq-base-r/src/test/java/jdplus/highfreq/base/r/SplinesTest.java @@ -102,7 +102,7 @@ public static void main(String[] args) { //StateItem l = AtomicModels.localLevel("l", .01, false, Double.NaN); StateItem l = AtomicModels.localLinearTrend("l", .01, .01, false, false); StateItem sw = AtomicModels.seasonalComponent("sw", "HarrisonStevens", 7, .01, false); - StateItem sy = AtomicModels.dailySplineComponent("sy", 1968, pos, 0, .01, false); + StateItem sy = AtomicModels.dailySplines("sy", 1968, pos, 0, .01, false); StateItem reg = AtomicModels.timeVaryingRegression("reg", X, 0.01, false); StateItem n = AtomicModels.noise("n", .01, false); ModelEquation eq = new ModelEquation("eq1", 0, true); @@ -169,7 +169,7 @@ public static void main2(String[] args) { // StateItem l = AtomicModels.localLevel("l", .01, false, Double.NaN); StateItem l = AtomicModels.localLinearTrend("l", .01, .01, false, false); // StateItem sw = AtomicModels.seasonalComponent("sw", "HarrisonStevens", 7, .01, false); - StateItem sy = AtomicModels.regularSplineComponent("sy", 1967, new double[]{1,5,10,15,20,30,40,50}, 0, .01, false); + StateItem sy = AtomicModels.regularSplines("sy", 1967, new double[]{1,5,10,15,20,30,40,50}, 0, .01, false); // StateItem reg=AtomicModels.timeVaryingRegression("reg", X, 0.01, false); StateItem n = AtomicModels.noise("n", .01, false); ModelEquation eq = new ModelEquation("eq1", 0, true); diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/AtomicModels.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/AtomicModels.java index e3af24b..c0b7675 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/AtomicModels.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/AtomicModels.java @@ -149,25 +149,25 @@ public StateItem periodicComponent(String name, double period, int[] k, double c return new PeriodicItem(name, period, k, cvar, fixedvar); } - public StateItem regularSplineComponent(String name, double period, int startpos, double cvar, boolean fixedvar) { + public StateItem regularSplines(String name, double period, int startpos, double cvar, boolean fixedvar) { RegularSpline rs = RegularSpline.of(period); SplineData sd = new SplineData(rs); return new SplineItem(name, sd, startpos, cvar, fixedvar); } - public StateItem regularSplineComponent(String name, double period, int nnodes, int startpos, double cvar, boolean fixedvar) { + public StateItem regularSplines(String name, double period, int nnodes, int startpos, double cvar, boolean fixedvar) { RegularSpline rs = RegularSpline.of(period, nnodes); SplineData sd = new SplineData(rs); return new SplineItem(name, sd, startpos, cvar, fixedvar); } - public StateItem regularSplineComponent(String name, double period, double[] nodes, int startpos, double cvar, boolean fixedvar) { + public StateItem regularSplines(String name, double period, double[] nodes, int startpos, double cvar, boolean fixedvar) { RegularSpline rs = RegularSpline.of(period, DoubleSeq.of(nodes)); SplineData sd = new SplineData(rs); return new SplineItem(name, sd, startpos, cvar, fixedvar); } - public StateItem dailySplineComponent(String name, int startYear, int[] pos, int startpos, double cvar, boolean fixedvar) { + public StateItem dailySplines(String name, int startYear, int[] pos, int startpos, double cvar, boolean fixedvar) { DailySpline rs = new DailySpline(startYear, pos); SplineData sd = new SplineData(rs); return new SplineItem(name, sd, startpos, cvar, fixedvar); diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/CompositeModelEstimation.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/CompositeModelEstimation.java index 2f20d26..e8c2149 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/CompositeModelEstimation.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/msts/CompositeModelEstimation.java @@ -60,7 +60,7 @@ public static CompositeModelEstimation estimationOf(CompositeModel model, FastMa .build(); MstsMapping mapping = model.mapping(); monitor.process(data, mapping, parameters == null ? null : DoubleSeq.of(parameters)); - rslt.model = monitor.getModel(); + rslt.model = model; rslt.likelihood = monitor.getLikelihood(); rslt.ssf = monitor.getSsf(); rslt.cmpPos = rslt.getSsf().componentsPosition(); @@ -73,6 +73,7 @@ public static CompositeModelEstimation estimationOf(CompositeModel model, FastMa public static CompositeModelEstimation computationOf(CompositeModel model, FastMatrix data, DoubleSeq fullParameters, boolean marginal, boolean concentrated) { CompositeModelEstimation rslt = new CompositeModelEstimation(); + rslt.model = model; rslt.data = data; rslt.fullParameters = fullParameters.toArray(); MstsMapping mapping = model.mapping(); @@ -98,7 +99,7 @@ public static CompositeModelEstimation computationOf(CompositeModel model, FastM private double[] fullParameters, parameters; private String[] parametersName, cmpName; private StateStorage smoothedStates, filteredStates, filteringStates; - private MstsMapping model; + private CompositeModel model; public StateStorage getSmoothedStates() { if (smoothedStates == null) { @@ -232,31 +233,73 @@ public StateStorage getFilteringStates() { return filteringStates; } - public DoubleSeq getFilteringComponent(int equation, int cmp) { - - return DoubleSeq.empty(); - } - - public DoubleSeq getFilteringComponentStdev(int equation, int cmp) { - - return DoubleSeq.empty(); + private static int find(String[] ss, String s) { + for (int i = 0; i < ss.length; ++i) { + if (ss[i].equalsIgnoreCase(s)) { + return i; + } + } + return -1; } - public DoubleSeq getSmoothedComponent(int equation, int cmp) { - - return DoubleSeq.empty(); + public FastMatrix getSmoothedComponents(int p) { + ModelEquation equation = model.getEquation(p); + StateStorage ss = getSmoothedStates(); + int nr = ss.size(); + int nc = equation.getItemsCount(); + FastMatrix C = FastMatrix.make(nr, nc); + int[] cmpDim = ssf.componentsDimension(); + + for (int i = 0; i < nc; ++i) { + ModelEquation.Item item = equation.getItem(i); + String cmp = item.getCmp(); + int pos = find(cmpName, cmp); + if (pos >= 0) { + ISsfLoading loading = item.getLoading(); + int start = cmpPos[pos], end = start + cmpDim[pos]; + DataBlock col = C.column(i); + for (int j = 0; j < nr; ++j) { + col.set(j, loading.ZX(j, ss.a(j).range(start, end))); + } + LoadingInterpreter li = item.getC(); + if (li != null) { + col.mul(li.value()); + } + } + } + return C; } - public DoubleSeq getSmoothedComponentStdev(int equation, int cmp) { + public FastMatrix getSmoothedComponentVariance(int eq) { + ModelEquation equation = model.getEquation(eq); StateStorage ss = getSmoothedStates(); - if (ss == null) { - return DoubleSeq.empty(); + int nr = ss.size(); + int nc = equation.getItemsCount(); + FastMatrix C = FastMatrix.make(nr, nc); + int[] cmpDim = ssf.componentsDimension(); + + for (int i = 0; i < nc; ++i) { + ModelEquation.Item item = equation.getItem(i); + String cmp = item.getCmp(); + int pos = find(cmpName, cmp); + if (pos >= 0) { + ISsfLoading loading = item.getLoading(); + int start = cmpPos[pos]; + DataBlock col = C.column(i); + for (int j = 0; j < nr; ++j) { + double v = loading.ZVZ(j, ss.P(j).extract(start, cmpDim[pos], start, cmpDim[pos])); + col.set(j, v < 0 ? 0 : v); + } + LoadingInterpreter li = item.getC(); + if (li != null) { + col.mul(li.value()*li.value()); + } + } } - ISsfLoading loading = ssf.loading(equation); - return null; + return C; } - public MstsMapping getModel() { + public CompositeModel getModel() { return model; } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/RegularSpline.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/RegularSpline.java index 73c91ca..8ff0482 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/RegularSpline.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/RegularSpline.java @@ -70,29 +70,17 @@ public DoubleSeq nodes() { @Override public IntSeq observations(int cycle) { // we need to find the integers in [cycle*period, (cycle+1)*period[ - if (cycle >= 0) { int i0 = (int) Math.floor(period * cycle + EPS), i1 = (int) Math.floor(period * (cycle + 1) + EPS); return IntSeq.sequential(i0, i1); - } else { - int i0 = (int) Math.ceil(period * cycle - EPS), - i1 = (int) Math.ceil(period * (cycle + 1) - EPS); - return IntSeq.sequential(i0, i1); - } } @Override public int cycleFor(int obs) { - if (obs >= 0) { int c=(int) Math.floor((obs + EPS) / period); if (obs>=(int) Math.floor(period * (c + 1) + EPS)) ++c; return c; - } else { - double dc = Math.ceil((obs + EPS) / period); - return -1 + (int) dc; - } - } } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/SplineComponent.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/SplineComponent.java index b5b5343..b86788e 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/SplineComponent.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/main/java/jdplus/sts/base/core/splines/SplineComponent.java @@ -66,11 +66,7 @@ public void Z(int pos, DataBlock z) { @Override public double ZX(int pos, DataBlock m) { -// try{ return z(pos).dot(m); -// }catch (Exception ex){ -// return 0; -// } } @Override diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/StsKernelTest.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/StsKernelTest.java index 92b43b7..684e83b 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/StsKernelTest.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/StsKernelTest.java @@ -47,8 +47,8 @@ public void testProd() { rslts.getFinals().getSeries(ComponentType.Seasonal, ComponentInformation.Value), rslts.getFinals().getSeries(ComponentType.Irregular, ComponentInformation.Value) )); - System.out.println(table); - System.out.println(rslts.getSts().getBsm()); +// System.out.println(table); +// System.out.println(rslts.getSts().getBsm()); } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/msts/CompositeModelTest.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/msts/CompositeModelTest.java index f1edb13..28cf77d 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/msts/CompositeModelTest.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/msts/CompositeModelTest.java @@ -121,9 +121,9 @@ public void testVAT_NOBUG() { M.mul(10); CompositeModelEstimation rslt = model.estimate(M, false, false, SsfInitialization.SqrtDiffuse, Optimizer.LevenbergMarquardt, 1e-15, null); StateStorage states = rslt.getSmoothedStates(); - System.out.println(states.getComponent(0)); +// System.out.println(states.getComponent(0)); // System.out.println(states.getComponent(2)); - System.out.println(DoubleSeq.of(rslt.getFullParameters())); +// System.out.println(DoubleSeq.of(rslt.getFullParameters())); // System.out.println(rslt.getLikelihood().factor()); } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/DailySplineTest.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/DailySplineTest.java index 887f083..b237238 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/DailySplineTest.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/DailySplineTest.java @@ -15,8 +15,6 @@ */ package jdplus.sts.base.core.splines; -import jdplus.sts.base.core.splines.DailySpline; -import jdplus.sts.base.core.splines.IntSeq; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/RegularSplineTest.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/RegularSplineTest.java index e5fefec..c22fff8 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/RegularSplineTest.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-core/src/test/java/jdplus/sts/base/core/splines/RegularSplineTest.java @@ -74,43 +74,43 @@ public void testDouble2() { assertTrue(n == 291000); } -// @Test -// public void testNegative() { -// RegularSpline rs = RegularSpline.of(24.6); -// int n = 0; -// for (int i = 1; i < 11; ++i) { -// IntSeq observations = rs.observations(-i); -// int nc = observations.length(); -// for (int j = 0; j < nc; ++j) { -// assertTrue(rs.cycleFor(observations.pos(j)) == -i); -// } -//// System.out.println(nc); -// n += nc; -// } -// assertTrue(n == 246); -// rs = RegularSpline.of(24); -// n = 0; -// for (int i = 1; i < 11; ++i) { -// IntSeq observations = rs.observations(-i); -// int nc = observations.length(); -// for (int j = 0; j < nc; ++j) { -// assertTrue(rs.cycleFor(observations.pos(j)) == -i); -// } -//// System.out.println(nc); -// n += nc; -// } -// assertTrue(n == 240); -// rs = RegularSpline.of(24.25); -// n = 0; -// for (int i = 0; i < 12; ++i) { -// IntSeq observations = rs.observations(-i); -// int nc = observations.length(); -// for (int j = 0; j < nc; ++j) { -// assertTrue(rs.cycleFor(observations.pos(j)) == -i); -// } -//// System.out.println(nc); -// n += nc; -// } -// assertTrue(n == 291); -// } + @Test + public void testNegative() { + RegularSpline rs = RegularSpline.of(24.6); + int n = 0; + for (int i = 1; i < 10001; ++i) { + IntSeq observations = rs.observations(-i); + int nc = observations.length(); + for (int j = 0; j < nc; ++j) { + assertTrue(rs.cycleFor(observations.pos(j)) == -i); + } +// System.out.println(nc); + n += nc; + } + assertTrue(n == 246000); + rs = RegularSpline.of(24); + n = 0; + for (int i = 1; i < 10001; ++i) { + IntSeq observations = rs.observations(-i); + int nc = observations.length(); + for (int j = 0; j < nc; ++j) { + assertTrue(rs.cycleFor(observations.pos(j)) == -i); + } +// System.out.println(nc); + n += nc; + } + assertTrue(n == 240000); + rs = RegularSpline.of(24.25); + n = 0; + for (int i = 0; i < 12000; ++i) { + IntSeq observations = rs.observations(-i); + int nc = observations.length(); + for (int j = 0; j < nc; ++j) { + assertTrue(rs.cycleFor(observations.pos(j)) == -i); + } +// System.out.println(nc); + n += nc; + } + assertTrue(n == 291000); + } } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/main/java/jdplus/sts/base/r/CompositeModels.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/main/java/jdplus/sts/base/r/CompositeModels.java index 5436efc..fe5b079 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/main/java/jdplus/sts/base/r/CompositeModels.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/main/java/jdplus/sts/base/r/CompositeModels.java @@ -35,22 +35,22 @@ */ @lombok.experimental.UtilityClass public class CompositeModels { - + public static class Results implements GenericExplorable { - + private final CompositeModelEstimation estimation; - + Results(final CompositeModelEstimation estimation) { this.estimation = estimation; } - + private static final InformationMapping MAPPING = new InformationMapping() { @Override public Class getSourceClass() { return CompositeModelEstimation.class; } }; - + static { MAPPING.set("likelihood.ll", Double.class, source -> source.getLikelihood().logLikelihood()); MAPPING.set("likelihood.ser", Double.class, source -> source.getLikelihood().ser()); @@ -118,6 +118,12 @@ public Class getSourceClass() { StateStorage smoothedStates = source.getSmoothedStates(); return smoothedStates.getComponentVariance(source.getCmpPos()[p]).toArray(); }); + MAPPING.setArray("ssf.smoothing.components", 0, Matrix.class, (source, p) -> { + return source.getSmoothedComponents(p); + }); + MAPPING.setArray("ssf.smoothing.vcomponents", 0, Matrix.class, (source, p) -> { + return source.getSmoothedComponentVariance(p); + }); MAPPING.setArray("ssf.smoothing.state", 0, double[].class, (source, p) -> { StateStorage smoothedStates = source.getSmoothedStates(); return smoothedStates.a(p).toArray(); @@ -186,7 +192,7 @@ public Class getSourceClass() { StateStorage fStates = source.getFilteringStates(); return fStates.P(p).unmodifiable(); }); - + MAPPING.setArray("ssf.filtered.array", 0, double[].class, (source, p) -> { StateStorage fStates = source.getFilteredStates(); return fStates.getComponent(p).toArray(); @@ -229,74 +235,74 @@ public Class getSourceClass() { } return Matrix.of(z, n, m); }); - + } - + @Override public boolean contains(String id) { return MAPPING.contains(id); } - + @Override public Map getDictionary() { Map dic = new LinkedHashMap<>(); MAPPING.fillDictionary(null, dic, true); return dic; } - + @Override public T getData(String id, Class tclass) { return MAPPING.getData(estimation, id, tclass); } - + public static final InformationMapping getMapping() { return MAPPING; } - + public double[] signal(int obs, int[] cmps) { return estimation.signal(obs, cmps).toArray(); } - + public double[] stdevSignal(int obs, int[] cmps) { return estimation.stdevSignal(obs, cmps).toArray(); } - + public double[] signal(Matrix m, int[] pos) { - FastMatrix M=FastMatrix.of(m); - return (pos == null ? estimation.signal(M): estimation.signal(M, pos)).toArray(); + FastMatrix M = FastMatrix.of(m); + return (pos == null ? estimation.signal(M) : estimation.signal(M, pos)).toArray(); } - + public double[] stdevSignal(Matrix m, int[] pos) { - FastMatrix M=FastMatrix.of(m); - return (pos == null ? estimation.stdevSignal(M): estimation.stdevSignal(M, pos)).toArray(); + FastMatrix M = FastMatrix.of(m); + return (pos == null ? estimation.stdevSignal(M) : estimation.stdevSignal(M, pos)).toArray(); } - + public FastMatrix loading(int obs) { return estimation.loading(obs, null); } - + public MultivariateSsf ssf() { return estimation.getSsf(); } - + public StateStorage smoothedStates() { return estimation.getSmoothedStates(); } - + public StateStorage filteredStates() { return estimation.getFilteredStates(); } - + public StateStorage filteringStates() { return estimation.getFilteringStates(); } } - + public Results estimate(CompositeModel model, Matrix data, boolean marginal, boolean rescaling, String initialization, String opt, double eps, double[] parameters) { return new Results(model.estimate(FastMatrix.of(data), marginal, rescaling, SsfInitialization.valueOf(initialization), Optimizer.valueOf(opt), eps, parameters)); } - + public Results compute(CompositeModel model, Matrix data, double[] parameters, boolean marginal, boolean concentrated) { return new Results(model.compute(FastMatrix.of(data), parameters, marginal, concentrated)); } diff --git a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/test/java/jdplus/sts/base/r/CompositeModelTest.java b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/test/java/jdplus/sts/base/r/CompositeModelTest.java index 4122f12..d56587f 100644 --- a/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/test/java/jdplus/sts/base/r/CompositeModelTest.java +++ b/jdplus-incubator-base/jdplus-sts-base-parent/jdplus-sts-base-r/src/test/java/jdplus/sts/base/r/CompositeModelTest.java @@ -60,10 +60,10 @@ public void testAirline() { FastMatrix M = FastMatrix.make(len, 1); M.column(0).copyFrom(Data.PROD, 0); CompositeModelEstimation rslt = model.estimate(M, false, true, SsfInitialization.Augmented_NoCollapsing, Optimizer.LevenbergMarquardt, 1e-15, null); - System.out.println(DataBlock.of(rslt.getFullParameters())); - System.out.println(rslt.getSmoothedStates().getComponent(15)); - System.out.println(rslt.getSmoothedStates().getComponentVariance(15)); - System.out.println(rslt.getLikelihood().logLikelihood()); +// System.out.println(DataBlock.of(rslt.getFullParameters())); +// System.out.println(rslt.getSmoothedStates().getComponent(15)); +// System.out.println(rslt.getSmoothedStates().getComponentVariance(15)); +// System.out.println(rslt.getLikelihood().logLikelihood()); } @Test @@ -84,7 +84,7 @@ public void testBsm() { System.out.println(DataBlock.of(rslt.getFullParameters())); // System.out.println(rslt.getSmoothedStates().getComponent(0)); // System.out.println(rslt.getSmoothedStates().getComponentVariance(0)); - System.out.println(rslt.getLikelihood().logLikelihood()); +// System.out.println(rslt.getLikelihood().logLikelihood()); } @Test @@ -118,7 +118,7 @@ public void testBsmVar() { System.out.println(DataBlock.of(rslt.getFullParameters())); // System.out.println(rslt.getSmoothedStates().getComponent(0)); // System.out.println(rslt.getSmoothedStates().getComponent(2)); - System.out.println(rslt.getLikelihood().logLikelihood()); +// System.out.println(rslt.getLikelihood().logLikelihood()); } @Test diff --git a/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-core/src/test/java/jdplus/x12plus/base/core/x12/X12plusKernelTest.java b/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-core/src/test/java/jdplus/x12plus/base/core/x12/X12plusKernelTest.java index 60725f4..bb44941 100644 --- a/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-core/src/test/java/jdplus/x12plus/base/core/x12/X12plusKernelTest.java +++ b/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-core/src/test/java/jdplus/x12plus/base/core/x12/X12plusKernelTest.java @@ -62,7 +62,7 @@ public void testTimeVaryingTD() { .build(); X12plusKernel kernel = X12plusKernel.of(spec, null); X12plusResults rslt = kernel.process(Data.TS_ABS_RETAIL, null); - System.out.println(rslt.getMtdCorrection().getTdCoefficients()); +// System.out.println(rslt.getMtdCorrection().getTdCoefficients()); } @Test diff --git a/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-r/src/test/java/jdplus/x11plus/base/r/X11DecompositionTest.java b/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-r/src/test/java/jdplus/x11plus/base/r/X11DecompositionTest.java index c37fe6d..266152e 100644 --- a/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-r/src/test/java/jdplus/x11plus/base/r/X11DecompositionTest.java +++ b/jdplus-incubator-base/jdplus-x12plus-base-parent/jdplus-x12plus-base-r/src/test/java/jdplus/x11plus/base/r/X11DecompositionTest.java @@ -26,19 +26,19 @@ public void testX11() { double[] s = Data.RETAIL_BOOKSTORES; X11Decomposition.Results r1 = X11Decomposition.cnX11(s, 12, true, 11, 2, "Henderson", 3, "Epanechnikov", 1.5, 2.5); assertTrue(r1 != null); - System.out.println(DoubleSeq.of(r1.getData(t, double[].class))); +// System.out.println(DoubleSeq.of(r1.getData(t, double[].class))); X11Decomposition.Results r2 = X11Decomposition.dafX11(s, 12, true, 11, 2, "Henderson", 3, "Epanechnikov", 1.5, 2.5); assertTrue(r2 != null); - System.out.println(DoubleSeq.of(r2.getData(t, double[].class))); +// System.out.println(DoubleSeq.of(r2.getData(t, double[].class))); // X11Decomposition.Results r3 = X11Decomposition.rkhsX11(s, 12, true, 11, 2, "BiWeight", true, "FrequencyResponse", true, Math.PI / 8, 3, "Henderson", 1.5, 2.5); // assertTrue(r3 != null); // System.out.println(DoubleSeq.of(r3.getData(t, double[].class))); X11Decomposition.Results r4 = X11Decomposition.lpX11(s, 12, true, 11, 2, "Henderson", 0, new double[]{}, 10, Math.PI / 8, 3, "Henderson", 1.5, 2.5); assertTrue(r4 != null); - System.out.println(DoubleSeq.of(r4.getData(t, double[].class))); +// System.out.println(DoubleSeq.of(r4.getData(t, double[].class))); X11Decomposition.Results r5 = X11Decomposition.process(s, 12, true, 11, 2, "Henderson", "MMSRE", "S3X5", "S3X5", 1.5, 2.5); assertTrue(r5 != null); - System.out.println(DoubleSeq.of(r5.getData(t, double[].class))); +// System.out.println(DoubleSeq.of(r5.getData(t, double[].class))); } }