Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java @ 93:c476fbbaa4ca
Imported Statistics-Classes from old Project. Revision: 3101 Does not compile
gnv-artifacts/trunk@138 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 28 Sep 2009 07:27:06 +0000 |
parents | |
children | 6a825a184883 |
line wrap: on
line source
/** * Title: TimeseriesStatistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v 1.3 2008/08/18 14:50:33 drewnak Exp $ * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v $ * created by: Stefan Blume (blume) * erstellt am: 06.12.2007 * Copyright: con terra GmbH, 2005 * * modified by: $Author: drewnak $ * modified on: $Date: 2008/08/18 14:50:33 $ * Version: $Revision: 1.3 $ * TAG: $Name: $ * locked from: $Locker: $ * CVS State: $State: Exp $ * Project: $ProjectName$ */ package de.intevation.gnv.statistics; import java.io.FileReader; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.List; import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; import org.apache.commons.math.stat.regression.SimpleRegression; import org.apache.log4j.Logger; import au.com.bytecode.opencsv.CSVReader; import de.conterra.bsh.gdi.gnviewer.datasources.ResultSet; import de.conterra.bsh.gdi.gnviewer.datasources.Row; import de.conterra.bsh.gdi.gnviewer.exception.TechnicalException; import de.conterra.bsh.gdi.gnviewer.util.TempFile; /** * The class <code>TimeseriesStatistics</code> fulfills the following purposes: * <ol> * <li></li> * </ol> * * @author blume * @version 1.0 * @serial 1.0 * @see * @since 06.12.2007 18:02:27 */ public class TimeseriesStatistics implements Statistics { /** * Default Logging instance */ private static Logger sLogger = Logger.getLogger(TimeseriesStatistics.class); private static boolean sDebug = sLogger.isDebugEnabled(); private Statistic[] mStatistics = null; /* public TimeseriesStatistics(ResultSet pResults) throws TechnicalException { DescriptiveStatistics lStatistics = null; SimpleRegression lRegression = null; ArrayList<Statistic> lStats = new ArrayList<Statistic>(); int break1, break2; int mStart = 0; int mEnd = 0; int lSeries = 1; Row[] mRow = pResults.getResults(); break1 = mRow[mStart].getIntValue(2); break2 = mRow[mStart].getIntValue(3); for (int i = 1; i < mRow.length; i++) { if (break1 != mRow[i].getIntValue(2) || break2 != mRow[i].getIntValue(3)) { lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); addStatisticsValues(lStatistics, lRegression, lStats, lSeries); mStart = i; break1 = mRow[i].getIntValue(2); break2 = mRow[i].getIntValue(3); lSeries ++; } mEnd = i; } lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); addStatisticsValues(lStatistics, lRegression, lStats, lSeries); mStatistics = new Statistic[lStats.size()]; mStatistics = lStats.toArray(mStatistics); } */ public TimeseriesStatistics(TempFile lImageFile) throws TechnicalException { DescriptiveStatistics lStatistics = null; SimpleRegression lRegression = null; ArrayList<Statistic> lStats = new ArrayList<Statistic>(); int break1, break2; int mStart = 0; int mEnd = 0; int lSeries = 1; CSVReader reader=null; if (sDebug) sLogger.debug("TimeseriesStatistics() lImageFile != null"); try{ reader = new CSVReader (new FileReader(lImageFile.getFile()), ';'); String [] sArrayStrLine = reader.readNext(); Row row = new Row(sArrayStrLine); break1 = new Integer (sArrayStrLine[2]).intValue(); break2 = new Integer (sArrayStrLine[3]).intValue(); //int i = 1; lRegression = new SimpleRegression(); lStatistics = DescriptiveStatistics.newInstance(); while ((sArrayStrLine = reader.readNext()) != null) { if (break1 != new Integer (sArrayStrLine[2]).intValue() || break2 != new Integer (sArrayStrLine[3]).intValue()) { //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); addStatisticsValues(lStatistics, lRegression, lStats, lSeries); lStatistics.clear(); lRegression.clear(); Row lRow = new Row (sArrayStrLine); lStatistics.addValue(lRow.getDoubleValue(1)); Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; lRegression.addData(x,lRow.getDoubleValue(1)); break1 = new Integer (sArrayStrLine[2]).intValue(); break2 = new Integer (sArrayStrLine[3]).intValue(); lSeries ++; } else{ Row lRow = new Row (sArrayStrLine); lStatistics.addValue(lRow.getDoubleValue(1)); Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; lRegression.addData(x,lRow.getDoubleValue(1)); } } //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); addStatisticsValues(lStatistics, lRegression, lStats, lSeries); lStatistics.clear(); lRegression.clear(); mStatistics = new Statistic[lStats.size()]; mStatistics = lStats.toArray(mStatistics); } catch (Exception e){ sLogger.error(e.getMessage(), e); } finally { try{ reader.close(); } catch (Exception e){ sLogger.error(e.getMessage(), e); } } } /** * @param lStatistics * @param lRegression * @param lStats * @param lSeries */ private void addStatisticsValues(DescriptiveStatistics lStatistics, SimpleRegression lRegression, ArrayList<Statistic> lStats, int lSeries) { lStats.add(new Statistic("gnviewer.statistics.series",(double)lSeries)); lStats.add(new Statistic("gnviewer.statistics.descriptive.arithmeticMean", lStatistics.getMean())); lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosis", lStatistics.getKurtosis())); /* lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosisClass", lStatistics.getKurtosisClass()));*/ lStats.add(new Statistic("gnviewer.statistics.descriptive.max", lStatistics.getMax())); lStats.add(new Statistic("gnviewer.statistics.descriptive.min", lStatistics.getMin())); lStats.add(new Statistic("gnviewer.statistics.descriptive.n", lStatistics.getN())); lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.90", lStatistics.getPercentile(90))); lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.75", lStatistics.getPercentile(75))); lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.50", lStatistics.getPercentile(50))); lStats.add(new Statistic("gnviewer.statistics.descriptive.percentile.10", lStatistics.getPercentile(10))); lStats.add(new Statistic("gnviewer.statistics.descriptive.deviation", lStatistics.getStandardDeviation())); lStats.add(new Statistic("gnviewer.statistics.descriptive.variance", lStatistics.getVariance())); lStats.add(new Statistic("gnviewer.statistics.descriptive.intercept", lRegression.getIntercept())); lStats.add(new Statistic("gnviewer.statistics.descriptive.slope", lRegression.getSlope())); } /** * @param pResults * @param pStart * @param pEnd */ /* private SimpleRegression createSimpleRegressionObject ( ResultSet pResults, int pStart, int pEnd)throws TechnicalException{ SimpleRegression lRegression = new SimpleRegression(); Row[] lRows = pResults.getResults(); for (int i = pStart; i < pEnd; i++) { Row lRow = lRows[i]; Double x = new Double( ((Calendar)lRow.getValue(0)).getTimeInMillis()/1000/3600) ; lRegression.addData(x,lRow.getDoubleValue(1)); } return lRegression; } */ /** * @param pResults * @param pStart * @param pEnd */ /* private DescriptiveStatistics createDescriptiveStatisticsObject(ResultSet pResults, int pStart, int pEnd) throws TechnicalException { DescriptiveStatistics lStatistics = DescriptiveStatistics.newInstance(); Row[] lRows = pResults.getResults(); for (int i = pStart; i < pEnd; i++) { Row lRow = lRows[i]; lStatistics.addValue(lRow.getDoubleValue(1)); } return lStatistics; } */ public Statistic[] getStatistics() { return mStatistics; } }