statsample 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -1,3 +1,10 @@
1
+ === 1.2.0 / 2011-12-15
2
+
3
+ * Added support for time series (TimeSeries object): MA, EMA, MACD, acf, lag and delta. [Rob Britton]
4
+ * Changed summary attribute to properly display 'b' value for simple linear regression [hstove]
5
+ * Merge pull request #6 from hstove/patch-1Changed summary attribute to properly display 'b' value for simple linear regression [Claudio Bustos]
6
+ * fix example code for CovariateMatrix [James Kebinger]
7
+
1
8
  === 1.1.0 / 2011-06-02
2
9
 
3
10
  * New Statsample::Anova::Contrast
@@ -102,6 +102,7 @@ lib/statsample/test/kolmogorovsmirnov.rb
102
102
  lib/statsample/test/levene.rb
103
103
  lib/statsample/test/t.rb
104
104
  lib/statsample/test/umannwhitney.rb
105
+ lib/statsample/timeseries.rb
105
106
  lib/statsample/vector.rb
106
107
  lib/statsample/vector/gsl.rb
107
108
  po/es/statsample.mo
@@ -114,6 +115,7 @@ test/fixtures/correlation_matrix.rb
114
115
  test/fixtures/crime.txt
115
116
  test/fixtures/hartman_23.matrix
116
117
  test/fixtures/repeated_fields.csv
118
+ test/fixtures/stock_data.csv
117
119
  test/fixtures/test_binomial.csv
118
120
  test/fixtures/test_csv.csv
119
121
  test/fixtures/test_xls.xls
@@ -156,6 +158,7 @@ test/test_stratified.rb
156
158
  test/test_test_f.rb
157
159
  test/test_test_kolmogorovsmirnov.rb
158
160
  test/test_test_t.rb
161
+ test/test_tseries.rb
159
162
  test/test_umannwhitney.rb
160
163
  test/test_vector.rb
161
164
  test/test_xls.rb
data/README.txt CHANGED
@@ -17,6 +17,7 @@ Include:
17
17
  * Regression: Simple, Multiple (OLS), Probit and Logit
18
18
  * Factorial Analysis: Extraction (PCA and Principal Axis), Rotation (Varimax, Equimax, Quartimax) and Parallel Analysis and Velicer's MAP test, for estimation of number of factors.
19
19
  * Reliability analysis for simple scale and a DSL to easily analyze multiple scales using factor analysis and correlations, if you want it.
20
+ * Basic time series support
20
21
  * Dominance Analysis, with multivariate dependent and bootstrap (Azen & Budescu)
21
22
  * Sample calculation related formulas
22
23
  * Structural Equation Modeling (SEM), using R libraries +sem+ and +OpenMx+
@@ -89,6 +90,7 @@ Include:
89
90
  * Statsample::Graph::Boxplot
90
91
  * Statsample::Graph::Histogram
91
92
  * Statsample::Graph::Scatterplot
93
+ * Module Statsample::TimeSeries provides basic support for time series.
92
94
  * Gem +statsample-sem+ provides a DSL to R libraries +sem+ and +OpenMx+
93
95
  * Close integration with gem <tt>reportbuilder</tt>, to easily create reports on text, html and rtf formats.
94
96
 
data/Rakefile CHANGED
@@ -6,8 +6,10 @@ $:.unshift(File.dirname(__FILE__)+'/lib/')
6
6
  require 'rubygems'
7
7
  require 'statsample'
8
8
  require 'hoe'
9
- Hoe.plugin :git
9
+ require 'rdoc'
10
10
 
11
+ Hoe.plugin :git
12
+ Hoe.plugin :doofus
11
13
  desc "Ruby Lint"
12
14
  task :lint do
13
15
  executable=Config::CONFIG['RUBY_INSTALL_NAME']
@@ -22,6 +24,9 @@ task :release do
22
24
  system %{git push origin master}
23
25
  end
24
26
 
27
+ task "clobber_docs" do
28
+ # Only to omit warnings
29
+ end
25
30
  desc "Update pot/po files."
26
31
  task "gettext:updatepo" do
27
32
  require 'gettext/tools'
@@ -40,7 +45,7 @@ h=Hoe.spec('statsample') do
40
45
  #self.testlib=:minitest
41
46
  self.rubyforge_name = "ruby-statsample"
42
47
  self.developer('Claudio Bustos', 'clbustos@gmail.com')
43
- self.extra_deps << ["spreadsheet","~>0.6.5"] << ["reportbuilder", "~>1.4"] << ["minimization", "~>0.2.0"] << ["fastercsv", ">0"] << ["dirty-memoize", "~>0.0"] << ["extendmatrix","~>0.3.1"] << ["statsample-bivariate-extension", ">0"] << ["rserve-client", "~>0.2.5"] << ["rubyvis", "~>0.4.0"] << ["distribution", "~>0.3"]
48
+ self.extra_deps << ["spreadsheet","~>0.6.5"] << ["reportbuilder", "~>1.4"] << ["minimization", "~>0.2.0"] << ["fastercsv", ">0"] << ["dirty-memoize", "~>0.0"] << ["extendmatrix","~>0.3.1"] << ["statsample-bivariate-extension", ">0"] << ["rserve-client", "~>0.2.5"] << ["rubyvis", "~>0.5"] << ["distribution", "~>0.6"]
44
49
 
45
50
  self.extra_dev_deps << ["hoe","~>0"] << ["shoulda","~>0"] << ["minitest", "~>2.0"] << ["rserve-client", "~>0"] << ["gettext", "~>0"] << ["mocha", "~>0"] << ["hoe-git", "~>0"]
46
51
 
@@ -67,6 +72,7 @@ source code first.
67
72
  self.need_rdoc=false
68
73
  end
69
74
 
75
+ if Rake.const_defined?(:RDocTask)
70
76
  Rake::RDocTask.new(:docs) do |rd|
71
77
  rd.main = h.readme_file
72
78
  rd.options << '-d' if (`which dot` =~ /\/dot/) unless
@@ -91,7 +97,7 @@ Rake::RDocTask.new(:docs) do |rd|
91
97
  end
92
98
  end
93
99
 
94
-
100
+ end
95
101
  desc 'Publish rdocs with analytics support'
96
102
  task :publicar_docs => [:clean, :docs] do
97
103
  ruby %{agregar_adsense_a_doc.rb}
@@ -2,6 +2,7 @@
2
2
  require 'reportbuilder'
3
3
  refs=[]
4
4
  Dir.glob "**/*.rb" do |f|
5
+ next if f=~/pkg/
5
6
  reference=false
6
7
  File.open(f).each_line do |l|
7
8
 
@@ -134,7 +134,7 @@ module Statsample
134
134
 
135
135
  create_has_library :gsl
136
136
 
137
- VERSION = '1.1.0'
137
+ VERSION = '1.2.0'
138
138
  SPLIT_TOKEN = ","
139
139
  autoload(:Analysis, 'statsample/analysis')
140
140
  autoload(:Database, 'statsample/converters')
@@ -161,6 +161,7 @@ module Statsample
161
161
  autoload(:Test, 'statsample/test')
162
162
  autoload(:Factor, 'statsample/factor')
163
163
  autoload(:Graph, 'statsample/graph')
164
+ autoload(:TimeSeries, 'statsample/timeseries')
164
165
 
165
166
 
166
167
  class << self
@@ -266,16 +266,16 @@ module Statsample
266
266
  # a=Matrix[[1.0, 0.3, 0.2],
267
267
  # [0.3, 1.0, 0.5],
268
268
  # [0.2, 0.5, 1.0]]
269
- # a.extends CovariateMatrix
270
- # a.labels=%w{a b c}
271
- # a.submatrix(%{c a}, %w{b})
269
+ # a.extend CovariateMatrix
270
+ # a.fields=%w{a b c}
271
+ # a.submatrix(%w{c a}, %w{b})
272
272
  # => Matrix[[0.5],[0.3]]
273
- # a.submatrix(%{c a})
273
+ # a.submatrix(%w{c a})
274
274
  # => Matrix[[1.0, 0.2] , [0.2, 1.0]]
275
275
  def submatrix(rows,columns=nil)
276
276
  raise ArgumentError, "rows shouldn't be empty" if rows.respond_to? :size and rows.size==0
277
277
  columns||=rows
278
- # Convert all labels on index
278
+ # Convert all fields on index
279
279
  row_index=rows.collect {|v|
280
280
  r=v.is_a?(Numeric) ? v : fields_x.index(v)
281
281
  raise "Index #{v} doesn't exists on matrix" if r.nil?
@@ -110,7 +110,7 @@ module Statsample
110
110
  t.row [_("r"), f % r]
111
111
  t.row [_("r^2"), f % r2]
112
112
  t.row [_("a"), f % a]
113
- t.row [_("b"), f % a]
113
+ t.row [_("b"), f % b]
114
114
  t.row [_("s.e"), f % standard_error]
115
115
  end
116
116
  end
@@ -0,0 +1,169 @@
1
+ module Statsample::TimeSeriesShorthands
2
+ # Creates a new Statsample::TimeSeries object
3
+ # Argument should be equal to TimeSeries.new
4
+ def to_time_series(*args)
5
+ Statsample::TimeSeries::TimeSeries.new(self, :scale, *args)
6
+ end
7
+
8
+ alias :to_ts :to_time_series
9
+ end
10
+
11
+ class Array
12
+ include Statsample::TimeSeriesShorthands
13
+ end
14
+
15
+ module Statsample
16
+ module TimeSeries
17
+ # Collection of data indexed by time.
18
+ # The order goes from earliest to latest.
19
+ class TimeSeries < Statsample::Vector
20
+ # Calculates the autocorrelation coefficients of the series.
21
+ #
22
+ # The first element is always 1, since that is the correlation
23
+ # of the series with itself.
24
+ #
25
+ # Usage:
26
+ #
27
+ # ts = (1..100).map { rand }.to_time_series
28
+ #
29
+ # ts.acf # => array with first 21 autocorrelations
30
+ # ts.acf 3 # => array with first 3 autocorrelations
31
+ #
32
+ def acf maxlags = nil
33
+ maxlags ||= (10 * Math.log10(size)).to_i
34
+
35
+ (0..maxlags).map do |i|
36
+ if i == 0
37
+ 1.0
38
+ else
39
+ m = self.mean
40
+
41
+ # can't use Pearson coefficient since the mean for the lagged series should
42
+ # be the same as the regular series
43
+ ((self - m) * (self.lag(i) - m)).sum / self.variance_sample / (self.size - 1)
44
+ end
45
+ end
46
+ end
47
+
48
+ # Lags the series by k periods.
49
+ #
50
+ # The convention is to set the oldest observations (the first ones
51
+ # in the series) to nil so that the size of the lagged series is the
52
+ # same as the original.
53
+ #
54
+ # Usage:
55
+ #
56
+ # ts = (1..10).map { rand }.to_time_series
57
+ # # => [0.69, 0.23, 0.44, 0.71, ...]
58
+ #
59
+ # ts.lag # => [nil, 0.69, 0.23, 0.44, ...]
60
+ # ts.lag 2 # => [nil, nil, 0.69, 0.23, ...]
61
+ #
62
+ def lag k = 1
63
+ return self if k == 0
64
+
65
+ dup.tap do |lagged|
66
+ (lagged.size - 1).downto k do |i|
67
+ lagged[i] = lagged[i - k]
68
+ end
69
+
70
+ (0...k).each do |i|
71
+ lagged[i] = nil
72
+ end
73
+ lagged.set_valid_data
74
+ end
75
+ end
76
+
77
+ # Performs a first difference of the series.
78
+ #
79
+ # The convention is to set the oldest observations (the first ones
80
+ # in the series) to nil so that the size of the diffed series is the
81
+ # same as the original.
82
+ #
83
+ # Usage:
84
+ #
85
+ # ts = (1..10).map { rand }.to_ts
86
+ # # => [0.69, 0.23, 0.44, 0.71, ...]
87
+ #
88
+ # ts.diff # => [nil, -0.46, 0.21, 0.27, ...]
89
+ #
90
+ def diff
91
+ self - self.lag
92
+ end
93
+
94
+ # Calculates a moving average of the series using the provided
95
+ # lookback argument. The lookback defaults to 10 periods.
96
+ #
97
+ # Usage:
98
+ #
99
+ # ts = (1..100).map { rand }.to_ts
100
+ # # => [0.69, 0.23, 0.44, 0.71, ...]
101
+ #
102
+ # # first 9 observations are nil
103
+ # ts.ma # => [ ... nil, 0.484... , 0.445... , 0.513 ... , ... ]
104
+ def ma n = 10
105
+ return mean if n >= size
106
+
107
+ ([nil] * (n - 1) + (0..(size - n)).map do |i|
108
+ self[i...(i + n)].inject(&:+) / n
109
+ end).to_time_series
110
+ end
111
+
112
+ # Calculates an exponential moving average of the series using a
113
+ # specified parameter. If wilder is false (the default) then the EMA
114
+ # uses a smoothing value of 2 / (n + 1), if it is true then it uses the
115
+ # Welles Wilder smoother of 1 / n.
116
+ #
117
+ # Warning for EMA usage: EMAs are unstable for small series, as they
118
+ # use a lot more than n observations to calculate. The series is stable
119
+ # if the size of the series is >= 3.45 * (n + 1)
120
+ #
121
+ # Usage:
122
+ #
123
+ # ts = (1..100).map { rand }.to_ts
124
+ # # => [0.69, 0.23, 0.44, 0.71, ...]
125
+ #
126
+ # # first 9 observations are nil
127
+ # ts.ema # => [ ... nil, 0.509... , 0.433..., ... ]
128
+ def ema n = 10, wilder = false
129
+ smoother = wilder ? 1.0 / n : 2.0 / (n + 1)
130
+
131
+ # need to start everything from the first non-nil observation
132
+ start = self.data.index { |i| i != nil }
133
+
134
+ # first n - 1 observations are nil
135
+ base = [nil] * (start + n - 1)
136
+
137
+ # nth observation is just a moving average
138
+ base << self[start...(start + n)].inject(0.0) { |s, a| a.nil? ? s : s + a } / n
139
+
140
+ (start + n).upto size - 1 do |i|
141
+ base << self[i] * smoother + (1 - smoother) * base.last
142
+ end
143
+
144
+ base.to_time_series
145
+ end
146
+
147
+ # Calculates the MACD (moving average convergence-divergence) of the time
148
+ # series - this is a comparison of a fast EMA with a slow EMA.
149
+ def macd fast = 12, slow = 26, signal = 9
150
+ series = ema(fast) - ema(slow)
151
+ [series, series.ema(signal)]
152
+ end
153
+
154
+ # Borrow the operations from Vector, but convert to time series
155
+ def + series
156
+ super.to_a.to_ts
157
+ end
158
+
159
+ def - series
160
+ super.to_a.to_ts
161
+ end
162
+
163
+ def to_s
164
+ sprintf("Time Series(type:%s, n:%d)[%s]", @type.to_s, @data.size,
165
+ @data.collect{|d| d.nil? ? "nil":d}.join(","))
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,500 @@
1
+ 17.66
2
+ 17.65
3
+ 17.68
4
+ 17.66
5
+ 17.68
6
+ 17.67
7
+ 17.68
8
+ 17.68
9
+ 17.67
10
+ 17.67
11
+ 17.68
12
+ 17.71
13
+ 17.74
14
+ 17.72
15
+ 17.73
16
+ 17.76
17
+ 17.74
18
+ 17.69
19
+ 17.69
20
+ 17.67
21
+ 17.66
22
+ 17.67
23
+ 17.69
24
+ 17.69
25
+ 17.68
26
+ 17.65
27
+ 17.65
28
+ 17.64
29
+ 17.63
30
+ 17.64
31
+ 17.67
32
+ 17.68
33
+ 17.7
34
+ 17.68
35
+ 17.69
36
+ 17.69
37
+ 17.72
38
+ 17.71
39
+ 17.71
40
+ 17.71
41
+ 17.69
42
+ 17.69
43
+ 17.71
44
+ 17.72
45
+ 17.71
46
+ 17.68
47
+ 17.68
48
+ 17.68
49
+ 17.69
50
+ 17.68
51
+ 17.68
52
+ 17.69
53
+ 17.67
54
+ 17.69
55
+ 17.71
56
+ 17.7
57
+ 17.7
58
+ 17.71
59
+ 17.73
60
+ 17.74
61
+ 17.74
62
+ 17.74
63
+ 17.76
64
+ 17.77
65
+ 17.55
66
+ 17.55
67
+ 17.5
68
+ 17.46
69
+ 17.49
70
+ 17.54
71
+ 17.51
72
+ 17.54
73
+ 17.57
74
+ 17.54
75
+ 17.52
76
+ 17.53
77
+ 17.56
78
+ 17.55
79
+ 17.55
80
+ 17.54
81
+ 17.55
82
+ 17.55
83
+ 17.55
84
+ 17.54
85
+ 17.52
86
+ 17.53
87
+ 17.51
88
+ 17.52
89
+ 17.5
90
+ 17.5
91
+ 17.5
92
+ 17.49
93
+ 17.46
94
+ 17.47
95
+ 17.48
96
+ 17.45
97
+ 17.41
98
+ 17.39
99
+ 17.38
100
+ 17.43
101
+ 17.44
102
+ 17.43
103
+ 17.43
104
+ 17.46
105
+ 17.46
106
+ 17.47
107
+ 17.47
108
+ 17.45
109
+ 17.48
110
+ 17.49
111
+ 17.5
112
+ 17.49
113
+ 17.48
114
+ 17.49
115
+ 17.47
116
+ 17.47
117
+ 17.44
118
+ 17.44
119
+ 17.43
120
+ 17.45
121
+ 17.42
122
+ 17.43
123
+ 17.43
124
+ 17.44
125
+ 17.44
126
+ 17.43
127
+ 17.41
128
+ 17.41
129
+ 17.38
130
+ 17.38
131
+ 17.37
132
+ 17.37
133
+ 17.37
134
+ 17.3
135
+ 17.28
136
+ 17.27
137
+ 17.19
138
+ 16.41
139
+ 16.44
140
+ 16.48
141
+ 16.53
142
+ 16.51
143
+ 16.57
144
+ 16.54
145
+ 16.59
146
+ 16.64
147
+ 16.6
148
+ 16.65
149
+ 16.69
150
+ 16.69
151
+ 16.68
152
+ 16.64
153
+ 16.65
154
+ 16.66
155
+ 16.64
156
+ 16.61
157
+ 16.65
158
+ 16.67
159
+ 16.66
160
+ 16.65
161
+ 16.61
162
+ 16.59
163
+ 16.57
164
+ 16.55
165
+ 16.55
166
+ 16.57
167
+ 16.54
168
+ 16.6
169
+ 16.62
170
+ 16.6
171
+ 16.59
172
+ 16.61
173
+ 16.66
174
+ 16.69
175
+ 16.67
176
+ 16.65
177
+ 16.66
178
+ 16.65
179
+ 16.65
180
+ 16.68
181
+ 16.68
182
+ 16.67
183
+ 16.64
184
+ 16.73
185
+ 16.76
186
+ 16.75
187
+ 16.79
188
+ 16.8
189
+ 16.77
190
+ 16.74
191
+ 16.76
192
+ 16.83
193
+ 16.84
194
+ 16.82
195
+ 16.89
196
+ 16.93
197
+ 16.94
198
+ 16.9
199
+ 16.92
200
+ 16.88
201
+ 16.85
202
+ 16.87
203
+ 16.8
204
+ 16.79
205
+ 16.85
206
+ 16.85
207
+ 16.8
208
+ 16.82
209
+ 16.85
210
+ 16.9
211
+ 16.86
212
+ 16.79
213
+ 16.75
214
+ 16.78
215
+ 17.06
216
+ 17.05
217
+ 17.04
218
+ 17.02
219
+ 17.01
220
+ 17.02
221
+ 17.05
222
+ 17.07
223
+ 17.08
224
+ 17.09
225
+ 17.1
226
+ 17.11
227
+ 17.09
228
+ 17.1
229
+ 17.1
230
+ 17.12
231
+ 17.17
232
+ 17.16
233
+ 17.17
234
+ 17.18
235
+ 17.18
236
+ 17.18
237
+ 17.17
238
+ 17.15
239
+ 17.14
240
+ 17.13
241
+ 17.14
242
+ 17.13
243
+ 17.12
244
+ 17.12
245
+ 17.09
246
+ 17.09
247
+ 17.11
248
+ 17.06
249
+ 17.07
250
+ 17.06
251
+ 17.07
252
+ 17.06
253
+ 17.09
254
+ 17.05
255
+ 17.04
256
+ 17.04
257
+ 16.99
258
+ 17
259
+ 17.03
260
+ 17
261
+ 16.97
262
+ 16.96
263
+ 16.98
264
+ 16.98
265
+ 16.98
266
+ 17.03
267
+ 17
268
+ 17
269
+ 17
270
+ 17.02
271
+ 17
272
+ 17.02
273
+ 17.01
274
+ 17.02
275
+ 17.03
276
+ 17.03
277
+ 17.01
278
+ 17.03
279
+ 17.03
280
+ 17.03
281
+ 17.01
282
+ 17.03
283
+ 17.05
284
+ 17.05
285
+ 17.08
286
+ 17.04
287
+ 17.01
288
+ 17.03
289
+ 17.02
290
+ 17.03
291
+ 17.04
292
+ 17.05
293
+ 17.37
294
+ 17.35
295
+ 17.34
296
+ 17.32
297
+ 17.29
298
+ 17.29
299
+ 17.22
300
+ 17.26
301
+ 17.3
302
+ 17.34
303
+ 17.33
304
+ 17.39
305
+ 17.4
306
+ 17.39
307
+ 17.48
308
+ 17.5
309
+ 17.47
310
+ 17.43
311
+ 17.4
312
+ 17.42
313
+ 17.46
314
+ 17.48
315
+ 17.48
316
+ 17.46
317
+ 17.46
318
+ 17.45
319
+ 17.43
320
+ 17.44
321
+ 17.48
322
+ 17.43
323
+ 17.45
324
+ 17.47
325
+ 17.46
326
+ 17.46
327
+ 17.48
328
+ 17.48
329
+ 17.48
330
+ 17.46
331
+ 17.5
332
+ 17.55
333
+ 17.58
334
+ 17.57
335
+ 17.56
336
+ 17.59
337
+ 17.61
338
+ 17.62
339
+ 17.63
340
+ 17.62
341
+ 17.61
342
+ 17.61
343
+ 17.62
344
+ 17.64
345
+ 17.65
346
+ 17.61
347
+ 17.62
348
+ 17.66
349
+ 17.65
350
+ 17.64
351
+ 17.63
352
+ 17.64
353
+ 17.64
354
+ 17.64
355
+ 17.63
356
+ 17.61
357
+ 17.61
358
+ 17.62
359
+ 17.63
360
+ 17.64
361
+ 17.65
362
+ 17.66
363
+ 17.68
364
+ 17.69
365
+ 17.69
366
+ 17.69
367
+ 17.66
368
+ 17.69
369
+ 17.69
370
+ 17.62
371
+ 17.68
372
+ 17.64
373
+ 17.65
374
+ 17.61
375
+ 17.52
376
+ 17.56
377
+ 17.55
378
+ 17.55
379
+ 17.48
380
+ 17.45
381
+ 17.46
382
+ 17.46
383
+ 17.44
384
+ 17.47
385
+ 17.5
386
+ 17.49
387
+ 17.5
388
+ 17.53
389
+ 17.53
390
+ 17.54
391
+ 17.51
392
+ 17.51
393
+ 17.53
394
+ 17.53
395
+ 17.53
396
+ 17.55
397
+ 17.55
398
+ 17.54
399
+ 17.56
400
+ 17.59
401
+ 17.57
402
+ 17.58
403
+ 17.58
404
+ 17.57
405
+ 17.59
406
+ 17.57
407
+ 17.55
408
+ 17.51
409
+ 17.51
410
+ 17.52
411
+ 17.52
412
+ 17.53
413
+ 17.55
414
+ 17.59
415
+ 17.61
416
+ 17.61
417
+ 17.6
418
+ 17.6
419
+ 17.62
420
+ 17.65
421
+ 17.62
422
+ 17.6
423
+ 17.6
424
+ 17.62
425
+ 17.61
426
+ 17.62
427
+ 17.63
428
+ 17.64
429
+ 17.65
430
+ 17.61
431
+ 17.62
432
+ 17.64
433
+ 17.63
434
+ 17.62
435
+ 17.6
436
+ 17.57
437
+ 17.57
438
+ 17.6
439
+ 17.59
440
+ 17.6
441
+ 17.61
442
+ 17.61
443
+ 17.63
444
+ 17.63
445
+ 17.59
446
+ 17.58
447
+ 17.76
448
+ 17.79
449
+ 17.76
450
+ 17.73
451
+ 17.74
452
+ 17.73
453
+ 17.67
454
+ 17.66
455
+ 17.66
456
+ 17.64
457
+ 17.63
458
+ 17.62
459
+ 17.61
460
+ 17.6
461
+ 17.61
462
+ 17.61
463
+ 17.6
464
+ 17.6
465
+ 17.64
466
+ 17.65
467
+ 17.65
468
+ 17.63
469
+ 17.61
470
+ 17.6
471
+ 17.63
472
+ 17.63
473
+ 17.62
474
+ 17.63
475
+ 17.64
476
+ 17.62
477
+ 17.63
478
+ 17.65
479
+ 17.64
480
+ 17.6
481
+ 17.59
482
+ 17.59
483
+ 17.58
484
+ 17.58
485
+ 17.6
486
+ 17.6
487
+ 17.6
488
+ 17.6
489
+ 17.6
490
+ 17.58
491
+ 17.59
492
+ 17.6
493
+ 17.6
494
+ 17.6
495
+ 17.59
496
+ 17.59
497
+ 17.58
498
+ 17.58
499
+ 17.65
500
+ 17.65