comparison libs/commons-math-2.1/docs/apidocs/src-html/org/apache/commons/math/random/EmpiricalDistribution.html @ 13:cbf34dd4d7e6

commons-math-2.1 added
author dwinter
date Tue, 04 Jan 2011 10:02:07 +0100
parents
children
comparison
equal deleted inserted replaced
12:970d26a94fb7 13:cbf34dd4d7e6
1 <HTML>
2 <BODY BGCOLOR="white">
3 <PRE>
4 <FONT color="green">001</FONT> /*<a name="line.1"></a>
5 <FONT color="green">002</FONT> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
6 <FONT color="green">003</FONT> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a>
7 <FONT color="green">004</FONT> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
8 <FONT color="green">005</FONT> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
9 <FONT color="green">006</FONT> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
10 <FONT color="green">007</FONT> * the License. You may obtain a copy of the License at<a name="line.7"></a>
11 <FONT color="green">008</FONT> *<a name="line.8"></a>
12 <FONT color="green">009</FONT> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
13 <FONT color="green">010</FONT> *<a name="line.10"></a>
14 <FONT color="green">011</FONT> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
15 <FONT color="green">012</FONT> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
16 <FONT color="green">013</FONT> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
17 <FONT color="green">014</FONT> * See the License for the specific language governing permissions and<a name="line.14"></a>
18 <FONT color="green">015</FONT> * limitations under the License.<a name="line.15"></a>
19 <FONT color="green">016</FONT> */<a name="line.16"></a>
20 <FONT color="green">017</FONT> <a name="line.17"></a>
21 <FONT color="green">018</FONT> package org.apache.commons.math.random;<a name="line.18"></a>
22 <FONT color="green">019</FONT> <a name="line.19"></a>
23 <FONT color="green">020</FONT> import java.io.IOException;<a name="line.20"></a>
24 <FONT color="green">021</FONT> import java.io.File;<a name="line.21"></a>
25 <FONT color="green">022</FONT> import java.net.URL;<a name="line.22"></a>
26 <FONT color="green">023</FONT> import java.util.List;<a name="line.23"></a>
27 <FONT color="green">024</FONT> <a name="line.24"></a>
28 <FONT color="green">025</FONT> import org.apache.commons.math.stat.descriptive.StatisticalSummary;<a name="line.25"></a>
29 <FONT color="green">026</FONT> import org.apache.commons.math.stat.descriptive.SummaryStatistics;<a name="line.26"></a>
30 <FONT color="green">027</FONT> <a name="line.27"></a>
31 <FONT color="green">028</FONT> /**<a name="line.28"></a>
32 <FONT color="green">029</FONT> * Represents an &lt;a href="http://random.mat.sbg.ac.at/~ste/dipl/node11.html"&gt;<a name="line.29"></a>
33 <FONT color="green">030</FONT> * empirical probability distribution&lt;/a&gt; -- a probability distribution derived<a name="line.30"></a>
34 <FONT color="green">031</FONT> * from observed data without making any assumptions about the functional form<a name="line.31"></a>
35 <FONT color="green">032</FONT> * of the population distribution that the data come from.&lt;p&gt;<a name="line.32"></a>
36 <FONT color="green">033</FONT> * Implementations of this interface maintain data structures, called<a name="line.33"></a>
37 <FONT color="green">034</FONT> * &lt;i&gt;distribution digests&lt;/i&gt;, that describe empirical distributions and<a name="line.34"></a>
38 <FONT color="green">035</FONT> * support the following operations: &lt;ul&gt;<a name="line.35"></a>
39 <FONT color="green">036</FONT> * &lt;li&gt;loading the distribution from a file of observed data values&lt;/li&gt;<a name="line.36"></a>
40 <FONT color="green">037</FONT> * &lt;li&gt;dividing the input data into "bin ranges" and reporting bin frequency<a name="line.37"></a>
41 <FONT color="green">038</FONT> * counts (data for histogram)&lt;/li&gt;<a name="line.38"></a>
42 <FONT color="green">039</FONT> * &lt;li&gt;reporting univariate statistics describing the full set of data values<a name="line.39"></a>
43 <FONT color="green">040</FONT> * as well as the observations within each bin&lt;/li&gt;<a name="line.40"></a>
44 <FONT color="green">041</FONT> * &lt;li&gt;generating random values from the distribution&lt;/li&gt;<a name="line.41"></a>
45 <FONT color="green">042</FONT> * &lt;/ul&gt;<a name="line.42"></a>
46 <FONT color="green">043</FONT> * Applications can use &lt;code&gt;EmpiricalDistribution&lt;/code&gt; implementations to<a name="line.43"></a>
47 <FONT color="green">044</FONT> * build grouped frequency histograms representing the input data or to<a name="line.44"></a>
48 <FONT color="green">045</FONT> * generate random values "like" those in the input file -- i.e., the values<a name="line.45"></a>
49 <FONT color="green">046</FONT> * generated will follow the distribution of the values in the file.&lt;/p&gt;<a name="line.46"></a>
50 <FONT color="green">047</FONT> *<a name="line.47"></a>
51 <FONT color="green">048</FONT> * @version $Revision: 817128 $ $Date: 2009-09-20 21:30:53 -0400 (Sun, 20 Sep 2009) $<a name="line.48"></a>
52 <FONT color="green">049</FONT> */<a name="line.49"></a>
53 <FONT color="green">050</FONT> public interface EmpiricalDistribution {<a name="line.50"></a>
54 <FONT color="green">051</FONT> <a name="line.51"></a>
55 <FONT color="green">052</FONT> /**<a name="line.52"></a>
56 <FONT color="green">053</FONT> * Computes the empirical distribution from the provided<a name="line.53"></a>
57 <FONT color="green">054</FONT> * array of numbers.<a name="line.54"></a>
58 <FONT color="green">055</FONT> *<a name="line.55"></a>
59 <FONT color="green">056</FONT> * @param dataArray the data array<a name="line.56"></a>
60 <FONT color="green">057</FONT> */<a name="line.57"></a>
61 <FONT color="green">058</FONT> void load(double[] dataArray);<a name="line.58"></a>
62 <FONT color="green">059</FONT> <a name="line.59"></a>
63 <FONT color="green">060</FONT> /**<a name="line.60"></a>
64 <FONT color="green">061</FONT> * Computes the empirical distribution from the input file.<a name="line.61"></a>
65 <FONT color="green">062</FONT> *<a name="line.62"></a>
66 <FONT color="green">063</FONT> * @param file the input file<a name="line.63"></a>
67 <FONT color="green">064</FONT> * @throws IOException if an IO error occurs<a name="line.64"></a>
68 <FONT color="green">065</FONT> */<a name="line.65"></a>
69 <FONT color="green">066</FONT> void load(File file) throws IOException;<a name="line.66"></a>
70 <FONT color="green">067</FONT> <a name="line.67"></a>
71 <FONT color="green">068</FONT> /**<a name="line.68"></a>
72 <FONT color="green">069</FONT> * Computes the empirical distribution using data read from a URL.<a name="line.69"></a>
73 <FONT color="green">070</FONT> *<a name="line.70"></a>
74 <FONT color="green">071</FONT> * @param url url of the input file<a name="line.71"></a>
75 <FONT color="green">072</FONT> * @throws IOException if an IO error occurs<a name="line.72"></a>
76 <FONT color="green">073</FONT> */<a name="line.73"></a>
77 <FONT color="green">074</FONT> void load(URL url) throws IOException;<a name="line.74"></a>
78 <FONT color="green">075</FONT> <a name="line.75"></a>
79 <FONT color="green">076</FONT> /**<a name="line.76"></a>
80 <FONT color="green">077</FONT> * Generates a random value from this distribution.<a name="line.77"></a>
81 <FONT color="green">078</FONT> * &lt;strong&gt;Preconditions:&lt;/strong&gt;&lt;ul&gt;<a name="line.78"></a>
82 <FONT color="green">079</FONT> * &lt;li&gt;the distribution must be loaded before invoking this method&lt;/li&gt;&lt;/ul&gt;<a name="line.79"></a>
83 <FONT color="green">080</FONT> * @return the random value.<a name="line.80"></a>
84 <FONT color="green">081</FONT> *<a name="line.81"></a>
85 <FONT color="green">082</FONT> * @throws IllegalStateException if the distribution has not been loaded<a name="line.82"></a>
86 <FONT color="green">083</FONT> */<a name="line.83"></a>
87 <FONT color="green">084</FONT> double getNextValue() throws IllegalStateException;<a name="line.84"></a>
88 <FONT color="green">085</FONT> <a name="line.85"></a>
89 <FONT color="green">086</FONT> <a name="line.86"></a>
90 <FONT color="green">087</FONT> /**<a name="line.87"></a>
91 <FONT color="green">088</FONT> * Returns a<a name="line.88"></a>
92 <FONT color="green">089</FONT> * {@link org.apache.commons.math.stat.descriptive.StatisticalSummary}<a name="line.89"></a>
93 <FONT color="green">090</FONT> * describing this distribution.<a name="line.90"></a>
94 <FONT color="green">091</FONT> * &lt;strong&gt;Preconditions:&lt;/strong&gt;&lt;ul&gt;<a name="line.91"></a>
95 <FONT color="green">092</FONT> * &lt;li&gt;the distribution must be loaded before invoking this method&lt;/li&gt;<a name="line.92"></a>
96 <FONT color="green">093</FONT> * &lt;/ul&gt;<a name="line.93"></a>
97 <FONT color="green">094</FONT> *<a name="line.94"></a>
98 <FONT color="green">095</FONT> * @return the sample statistics<a name="line.95"></a>
99 <FONT color="green">096</FONT> * @throws IllegalStateException if the distribution has not been loaded<a name="line.96"></a>
100 <FONT color="green">097</FONT> */<a name="line.97"></a>
101 <FONT color="green">098</FONT> StatisticalSummary getSampleStats() throws IllegalStateException;<a name="line.98"></a>
102 <FONT color="green">099</FONT> <a name="line.99"></a>
103 <FONT color="green">100</FONT> /**<a name="line.100"></a>
104 <FONT color="green">101</FONT> * Property indicating whether or not the distribution has been loaded.<a name="line.101"></a>
105 <FONT color="green">102</FONT> *<a name="line.102"></a>
106 <FONT color="green">103</FONT> * @return true if the distribution has been loaded<a name="line.103"></a>
107 <FONT color="green">104</FONT> */<a name="line.104"></a>
108 <FONT color="green">105</FONT> boolean isLoaded();<a name="line.105"></a>
109 <FONT color="green">106</FONT> <a name="line.106"></a>
110 <FONT color="green">107</FONT> /**<a name="line.107"></a>
111 <FONT color="green">108</FONT> * Returns the number of bins.<a name="line.108"></a>
112 <FONT color="green">109</FONT> *<a name="line.109"></a>
113 <FONT color="green">110</FONT> * @return the number of bins<a name="line.110"></a>
114 <FONT color="green">111</FONT> */<a name="line.111"></a>
115 <FONT color="green">112</FONT> int getBinCount();<a name="line.112"></a>
116 <FONT color="green">113</FONT> <a name="line.113"></a>
117 <FONT color="green">114</FONT> /**<a name="line.114"></a>
118 <FONT color="green">115</FONT> * Returns a list of<a name="line.115"></a>
119 <FONT color="green">116</FONT> * {@link org.apache.commons.math.stat.descriptive.SummaryStatistics}<a name="line.116"></a>
120 <FONT color="green">117</FONT> * containing statistics describing the values in each of the bins. The<a name="line.117"></a>
121 <FONT color="green">118</FONT> * List is indexed on the bin number.<a name="line.118"></a>
122 <FONT color="green">119</FONT> *<a name="line.119"></a>
123 <FONT color="green">120</FONT> * @return List of bin statistics<a name="line.120"></a>
124 <FONT color="green">121</FONT> */<a name="line.121"></a>
125 <FONT color="green">122</FONT> List&lt;SummaryStatistics&gt; getBinStats();<a name="line.122"></a>
126 <FONT color="green">123</FONT> <a name="line.123"></a>
127 <FONT color="green">124</FONT> /**<a name="line.124"></a>
128 <FONT color="green">125</FONT> * Returns the array of upper bounds for the bins. Bins are: &lt;br/&gt;<a name="line.125"></a>
129 <FONT color="green">126</FONT> * [min,upperBounds[0]],(upperBounds[0],upperBounds[1]],...,<a name="line.126"></a>
130 <FONT color="green">127</FONT> * (upperBounds[binCount-2], upperBounds[binCount-1] = max].<a name="line.127"></a>
131 <FONT color="green">128</FONT> *<a name="line.128"></a>
132 <FONT color="green">129</FONT> * @return array of bin upper bounds<a name="line.129"></a>
133 <FONT color="green">130</FONT> */<a name="line.130"></a>
134 <FONT color="green">131</FONT> double[] getUpperBounds();<a name="line.131"></a>
135 <FONT color="green">132</FONT> <a name="line.132"></a>
136 <FONT color="green">133</FONT> }<a name="line.133"></a>
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197 </PRE>
198 </BODY>
199 </HTML>