MATSIM
Public Member Functions | Protected Attributes | Private Member Functions | Static Private Attributes | List of all members
org.matsim.analysis.Bins Class Reference

Public Member Functions

 Bins (double interval, double maxVal, String desc)
 
void addValues (double[] values, double[] weights)
 
void addVal (double value, double weight)
 
void clear ()
 
void plotBinnedDistribution (String path, String xLabel, String xUnit)
 
double [] getBins ()
 
void setBins (double[] bins)
 
double getInterval ()
 
void setInterval (double interval)
 
double median (List< Double > values)
 
double mean (List< Double > values)
 
double weightedMean (List< Double > values, List< Double > weights)
 
double weightedMean (Double[] values, Double[] weights)
 
double getMax (List< Double > values)
 
double getMax (Double[] values)
 

Protected Attributes

double interval
 
int numberOfBins
 
double maxVal
 
String desc
 
List< BinEntryentries = new Vector<BinEntry>()
 
double [] bins
 

Private Member Functions

double median (Double [] values)
 

Static Private Attributes

static final Logger log = LogManager.getLogger(Bins.class)
 

Detailed Description

Definition at line 34 of file Bins.java.

Constructor & Destructor Documentation

◆ Bins()

org.matsim.analysis.Bins.Bins ( double  interval,
double  maxVal,
String  desc 
)

Definition at line 45 of file Bins.java.

References org.matsim.analysis.Bins.desc, org.matsim.analysis.Bins.interval, org.matsim.analysis.Bins.maxVal, and org.matsim.analysis.Bins.numberOfBins.

45  {
46  this.interval = interval;
47  this.maxVal = maxVal;
48  this.numberOfBins = (int)Math.ceil(maxVal / interval);
49  this.desc = desc;
50  this.bins = new double[this.numberOfBins];
51  }

Member Function Documentation

◆ addValues()

void org.matsim.analysis.Bins.addValues ( double []  values,
double []  weights 
)

Definition at line 52 of file Bins.java.

References org.matsim.analysis.Bins.addVal().

52  {
53  for (int index = 0; index < values.length; index++) {
54  this.addVal(values[index], weights[index]);
55  }
56  }
void addVal(double value, double weight)
Definition: Bins.java:58
Here is the call graph for this function:

◆ addVal()

void org.matsim.analysis.Bins.addVal ( double  value,
double  weight 
)

Definition at line 58 of file Bins.java.

Referenced by org.matsim.analysis.Bins.addValues().

58  {
59  int index = (int)Math.floor(value / interval);
60  // values > maximum value are assigned to the last bin
61  if (value >= maxVal) {
62  index = this.numberOfBins -1;
63  }
64 
65  // values < 0.0 value are assigned to the first bin
66  if (value < 0.0) {
67  log.error("Value < 0.0 received");
68  index = 0;
69  }
70 
71  this.bins[index] += weight;
72  this.entries.add(new BinEntry(value, weight));
73  }
List< BinEntry > entries
Definition: Bins.java:40
static final Logger log
Definition: Bins.java:43

◆ clear()

void org.matsim.analysis.Bins.clear ( )

Definition at line 75 of file Bins.java.

References org.matsim.analysis.Bins.numberOfBins.

75  {
76  this.entries.clear();
77  this.bins = new double[this.numberOfBins];
78  }
List< BinEntry > entries
Definition: Bins.java:40

◆ plotBinnedDistribution()

void org.matsim.analysis.Bins.plotBinnedDistribution ( String  path,
String  xLabel,
String  xUnit 
)

Definition at line 80 of file Bins.java.

References org.matsim.core.utils.charts.BarChart.addSeries(), org.matsim.core.utils.io.IOUtils.getBufferedWriter(), org.matsim.analysis.Bins.getMax(), org.matsim.analysis.Bins.median(), org.matsim.analysis.Bins.numberOfBins, org.matsim.core.utils.charts.ChartUtil.saveAsPng(), and org.matsim.analysis.Bins.weightedMean().

80  {
81  String [] categories = new String[this.numberOfBins];
82  for (int i = 0; i < this.numberOfBins; i++) {
83  categories[i] = Integer.toString(i);
84  }
85  Double[] values = new Double[this.entries.size()];
86  Double[] weights = new Double[this.entries.size()];
87 
88  for (int index = 0; index < this.entries.size(); index++) {
89  values[index] = this.entries.get(index).getValue();
90  weights[index] = this.entries.get(index).getWeight();
91  }
92 
93  DecimalFormat formatter = new DecimalFormat("0.0000");
94  String s = xLabel + " " +
95  "[interval = " + formatter.format(this.interval) + xUnit + "]" +
96  "[number of entries = " + this.entries.size() + "]" +
97  "[mean = " + formatter.format(this.weightedMean(values, weights)) + xUnit + "]" +
98  "[median = " + formatter.format(this.median(values)) + xUnit + "]" +
99  "[max = " + formatter.format(this.getMax(values)) + xUnit + "]";
100 
101  BarChart chart =
102  new BarChart(desc, s , "#", categories);
103  chart.addSeries("Bin size", this.bins);
104  chart.saveAsPng(path + desc + ".png", 1600, 800);
105 
106  try {
107  BufferedWriter out = IOUtils.getBufferedWriter(path + desc + ".txt");
108  out.write("Bin [interval = " + this.interval + " " + xUnit + "]\t" + "#" + "\n");
109  for (int j = 0; j < bins.length; j++) {
110  out.write(j + "\t" + bins[j] + "\n");
111  }
112  out.flush();
113  out.close();
114  } catch (IOException e) {
115  e.printStackTrace();
116  }
117  }
double getMax(List< Double > values)
Definition: Bins.java:186
List< BinEntry > entries
Definition: Bins.java:40
double median(Double [] values)
Definition: Bins.java:132
double weightedMean(List< Double > values, List< Double > weights)
Definition: Bins.java:165
Here is the call graph for this function:

◆ getBins()

double [] org.matsim.analysis.Bins.getBins ( )

Definition at line 118 of file Bins.java.

References org.matsim.analysis.Bins.bins.

118  {
119  return bins;
120  }

◆ setBins()

void org.matsim.analysis.Bins.setBins ( double []  bins)

Definition at line 121 of file Bins.java.

References org.matsim.analysis.Bins.bins.

121  {
122  this.bins = bins;
123  }

◆ getInterval()

double org.matsim.analysis.Bins.getInterval ( )

Definition at line 125 of file Bins.java.

References org.matsim.analysis.Bins.interval.

125  {
126  return interval;
127  }

◆ setInterval()

void org.matsim.analysis.Bins.setInterval ( double  interval)

Definition at line 128 of file Bins.java.

References org.matsim.analysis.Bins.interval.

128  {
129  this.interval = interval;
130  }

◆ median() [1/2]

double org.matsim.analysis.Bins.median ( Double []  values)
private

Definition at line 132 of file Bins.java.

Referenced by org.matsim.analysis.Bins.plotBinnedDistribution().

132  {
133  List<Double> list = new Vector<Double>();
134 
135  Collections.addAll(list, values);
136  return median(list);
137  }
double median(Double [] values)
Definition: Bins.java:132

◆ median() [2/2]

double org.matsim.analysis.Bins.median ( List< Double >  values)

Definition at line 139 of file Bins.java.

139  {
140 
141  if (values.size() == 0) return 0.0;
142 
143  Collections.sort(values);
144  if (values.size() % 2 != 0) {
145  return values.get((values.size()+1)/2-1);
146  }
147  else {
148  double lower = values.get(values.size()/2-1);
149  double upper = values.get(values.size()/2);
150  return (lower + upper) / 2.0;
151  }
152  }

◆ mean()

double org.matsim.analysis.Bins.mean ( List< Double >  values)

Definition at line 154 of file Bins.java.

154  {
155  double sum = 0.0;
156  int cnt = 0;
157  if (values.size() == 0) return 0.0;
158  for (Double value : values) {
159  sum += value;
160  cnt++;
161  }
162  return sum / cnt;
163  }

◆ weightedMean() [1/2]

double org.matsim.analysis.Bins.weightedMean ( List< Double >  values,
List< Double >  weights 
)

Definition at line 165 of file Bins.java.

Referenced by org.matsim.analysis.Bins.plotBinnedDistribution().

165  {
166  return weightedMean(values.toArray(new Double[values.size()]), weights.toArray(new Double[weights.size()]));
167  }
double weightedMean(List< Double > values, List< Double > weights)
Definition: Bins.java:165

◆ weightedMean() [2/2]

double org.matsim.analysis.Bins.weightedMean ( Double []  values,
Double []  weights 
)

Definition at line 169 of file Bins.java.

169  {
170  double sumValues = 0.0;
171  double sumWeights = 0.0;
172 
173  if (values.length == 0) return 0.0;
174 
175  if (values.length != weights.length ) {
176  log.info("size of weights and values not identical");
177  return -1;
178  }
179  for (int index = 0; index < values.length; index++) {
180  sumValues += (values[index] * weights[index]);
181  sumWeights += weights[index];
182  }
183  return sumValues / sumWeights;
184  }
static final Logger log
Definition: Bins.java:43

◆ getMax() [1/2]

double org.matsim.analysis.Bins.getMax ( List< Double >  values)

Definition at line 186 of file Bins.java.

Referenced by org.matsim.analysis.Bins.plotBinnedDistribution().

186  {
187  return getMax(values.toArray(new Double[values.size()]));
188  }
double getMax(List< Double > values)
Definition: Bins.java:186

◆ getMax() [2/2]

double org.matsim.analysis.Bins.getMax ( Double []  values)

Definition at line 190 of file Bins.java.

References org.matsim.analysis.Bins.maxVal.

190  {
191  double maxVal = Double.MIN_VALUE;
192  for (Double v : values) {
193  if (v > maxVal) {
194  maxVal = v;
195  }
196  }
197  return maxVal;
198  }

Member Data Documentation

◆ interval

double org.matsim.analysis.Bins.interval
protected

◆ numberOfBins

int org.matsim.analysis.Bins.numberOfBins
protected

◆ maxVal

double org.matsim.analysis.Bins.maxVal
protected

Definition at line 38 of file Bins.java.

Referenced by org.matsim.analysis.Bins.Bins(), and org.matsim.analysis.Bins.getMax().

◆ desc

String org.matsim.analysis.Bins.desc
protected

Definition at line 39 of file Bins.java.

Referenced by org.matsim.analysis.Bins.Bins().

◆ entries

List<BinEntry> org.matsim.analysis.Bins.entries = new Vector<BinEntry>()
protected

Definition at line 40 of file Bins.java.

◆ bins

double [] org.matsim.analysis.Bins.bins
protected

Definition at line 41 of file Bins.java.

Referenced by org.matsim.analysis.Bins.getBins(), and org.matsim.analysis.Bins.setBins().

◆ log

final Logger org.matsim.analysis.Bins.log = LogManager.getLogger(Bins.class)
staticprivate

Definition at line 43 of file Bins.java.


The documentation for this class was generated from the following file: