Search in sources :

Example 11 with SimpleRegression

use of org.apache.commons.math3.stat.regression.SimpleRegression in project dhis2-core by dhis2.

the class DefaultChartService method getCategoryDataSet.

private CategoryDataset[] getCategoryDataSet(BaseChart chart) {
    Map<String, Object> valueMap = new HashMap<>();
    if (chart.isAnalyticsType(AnalyticsType.AGGREGATE)) {
        valueMap = analyticsService.getAggregatedDataValueMapping(chart);
    } else if (chart.isAnalyticsType(AnalyticsType.EVENT)) {
        Grid grid = eventAnalyticsService.getAggregatedEventData(chart);
        chart.setDataItemGrid(grid);
        valueMap = GridUtils.getMetaValueMapping(grid, (grid.getWidth() - 1));
    }
    DefaultCategoryDataset regularDataSet = new DefaultCategoryDataset();
    DefaultCategoryDataset regressionDataSet = new DefaultCategoryDataset();
    SimpleRegression regression = new SimpleRegression();
    BaseAnalyticalObject.sortKeys(valueMap);
    List<NameableObject> seriez = new ArrayList<>(chart.series());
    List<NameableObject> categories = new ArrayList<>(chart.category());
    if (chart.hasSortOrder()) {
        categories = getSortedCategories(categories, chart, valueMap);
    }
    for (NameableObject series : seriez) {
        double categoryIndex = 0;
        for (NameableObject category : categories) {
            categoryIndex++;
            String key = getKey(series, category, chart.getAnalyticsType());
            Object object = valueMap.get(key);
            Number value = object != null && object instanceof Number ? (Number) object : null;
            regularDataSet.addValue(value, series.getShortName(), category.getShortName());
            if (chart.isRegression() && value != null && value instanceof Double && !MathUtils.isEqual((Double) value, MathUtils.ZERO)) {
                regression.addData(categoryIndex, (Double) value);
            }
        }
        if (// Period must be category
        chart.isRegression()) {
            categoryIndex = 0;
            for (NameableObject category : chart.category()) {
                final double value = regression.predict(categoryIndex++);
                if (!Double.isNaN(value)) {
                    regressionDataSet.addValue(value, TREND_PREFIX + series.getShortName(), category.getShortName());
                }
            }
        }
    }
    return new CategoryDataset[] { regularDataSet, regressionDataSet };
}
Also used : SimpleRegression(org.apache.commons.math3.stat.regression.SimpleRegression) DefaultCategoryDataset(org.jfree.data.category.DefaultCategoryDataset) CategoryDataset(org.jfree.data.category.CategoryDataset) DefaultCategoryDataset(org.jfree.data.category.DefaultCategoryDataset)

Aggregations

SimpleRegression (org.apache.commons.math3.stat.regression.SimpleRegression)11 ArrayList (java.util.ArrayList)5 FractionClassificationResult (gdsc.core.match.FractionClassificationResult)3 BasePoint (gdsc.core.match.BasePoint)2 FractionalAssignment (gdsc.core.match.FractionalAssignment)2 FastCorrelator (gdsc.core.utils.FastCorrelator)2 StoredDataStatistics (gdsc.core.utils.StoredDataStatistics)2 PeakResultPoint (gdsc.smlm.ij.plugins.ResultsMatchCalculator.PeakResultPoint)2 BasePreprocessedPeakResult (gdsc.smlm.results.filter.BasePreprocessedPeakResult)2 DirectFilter (gdsc.smlm.results.filter.DirectFilter)2 PeakFractionalAssignment (gdsc.smlm.results.filter.PeakFractionalAssignment)2 PreprocessedPeakResult (gdsc.smlm.results.filter.PreprocessedPeakResult)2 WindowOrganiser (ij.plugin.WindowOrganiser)2 BufferedTextWindow (gdsc.core.ij.BufferedTextWindow)1 ImmutableFractionalAssignment (gdsc.core.match.ImmutableFractionalAssignment)1 Statistics (gdsc.core.utils.Statistics)1 StoredData (gdsc.core.utils.StoredData)1 MaximaSpotFilter (gdsc.smlm.filters.MaximaSpotFilter)1 ScoredSpot (gdsc.smlm.ij.plugins.BenchmarkSpotFilter.ScoredSpot)1 FilterSettings (gdsc.smlm.ij.settings.FilterSettings)1