stl-rb 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60db1d8c0be422d010fbf13682f576043de6099ee8b6642eaf71e4582605a847
4
- data.tar.gz: 62fd9d834aeac575bffb9e86effcc4fd4b6dae7484a86dab0cbe3c3a86359f44
3
+ metadata.gz: acb247c95bfe0b9d339f507c5a9da2c0cf3a3238b7813bc8790782f17dd63496
4
+ data.tar.gz: ecaeaf9f4fc8d4784639c472d15e0ffc7fa40d32ae2b9feccf0741bc8ed36650
5
5
  SHA512:
6
- metadata.gz: 88e908bc56aabfb2a292c0fa2c4121b01f9aec8efc6c87c736195d6c699b8a1545d1579e70076169dfe5964c9d675c071fb91af7960b23e8eb52fd63224bba27
7
- data.tar.gz: 6bd0364aca82ba7e29cbf06c0f6a71caa3cfcb95897ef1aaef66e9bf88897b25409412942161b6b24ce62f62cba7d4f54963982feb607dad93480982249f412e
6
+ metadata.gz: 821487152fc03aede2cae7c69eaad8f2bede5a9a7647167f51f6a30085a745c68cce2e87df6609d1aaa0e3eac6303f7477e1387dfc1a8b4cc56861b23aabc243
7
+ data.tar.gz: 72e50a717aaf027eec309908e24fa72344d32e0ef4143dc86c555e0981328e084fc65ae6f80ecc3f4d91c6adfde6cec8a34efc6185df68de66d2b6e79356941e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.2.3 (2024-01-26)
2
+
3
+ - Fixed bug with `inner_loops` and `outer_loops`
4
+
5
+ ## 0.2.2 (2023-06-20)
6
+
7
+ - Fixed bug when jump > 1
8
+
1
9
  ## 0.2.1 (2023-05-11)
2
10
 
3
11
  - Fixed error on Fedora
data/README.md CHANGED
@@ -18,9 +18,9 @@ Decompose a time series
18
18
 
19
19
  ```ruby
20
20
  series = {
21
- Date.parse("2020-01-01") => 100,
22
- Date.parse("2020-01-02") => 150,
23
- Date.parse("2020-01-03") => 136,
21
+ Date.parse("2023-01-01") => 100,
22
+ Date.parse("2023-01-02") => 150,
23
+ Date.parse("2023-01-03") => 136,
24
24
  # ...
25
25
  }
26
26
 
data/ext/stl/stl.hpp CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * STL C++ v0.1.2
2
+ * STL C++ v0.1.4
3
3
  * https://github.com/ankane/stl-cpp
4
4
  * Unlicense OR MIT License
5
5
  *
@@ -151,11 +151,11 @@ void ess(const float* y, size_t n, size_t len, int ideg, size_t njump, bool user
151
151
  auto ok = est(y, n, len, ideg, (float) n, &ys[n - 1], nleft, nright, res, userw, rw);
152
152
  if (!ok) {
153
153
  ys[n - 1] = y[n - 1];
154
- if (k != n - 1) {
155
- auto delta = (ys[n - 1] - ys[k - 1]) / ((float) (n - k));
156
- for (auto j = k + 1; j <= n - 1; j++) {
157
- ys[j - 1] = ys[k - 1] + delta * ((float) (j - k));
158
- }
154
+ }
155
+ if (k != n - 1) {
156
+ auto delta = (ys[n - 1] - ys[k - 1]) / ((float) (n - k));
157
+ for (auto j = k + 1; j <= n - 1; j++) {
158
+ ys[j - 1] = ys[k - 1] + delta * ((float) (j - k));
159
159
  }
160
160
  }
161
161
  }
@@ -342,6 +342,15 @@ float var(const std::vector<float>& series) {
342
342
  return std::accumulate(tmp.begin(), tmp.end(), 0.0) / (series.size() - 1);
343
343
  }
344
344
 
345
+ float strength(const std::vector<float>& component, const std::vector<float>& remainder) {
346
+ std::vector<float> sr;
347
+ sr.reserve(remainder.size());
348
+ for (size_t i = 0; i < remainder.size(); i++) {
349
+ sr.push_back(component[i] + remainder[i]);
350
+ }
351
+ return std::max(0.0, 1.0 - var(remainder) / var(sr));
352
+ }
353
+
345
354
  class StlResult {
346
355
  public:
347
356
  std::vector<float> seasonal;
@@ -350,21 +359,11 @@ public:
350
359
  std::vector<float> weights;
351
360
 
352
361
  inline float seasonal_strength() {
353
- std::vector<float> sr;
354
- sr.reserve(remainder.size());
355
- for (size_t i = 0; i < remainder.size(); i++) {
356
- sr.push_back(seasonal[i] + remainder[i]);
357
- }
358
- return std::max(0.0, 1.0 - var(remainder) / var(sr));
362
+ return strength(seasonal, remainder);
359
363
  }
360
364
 
361
365
  inline float trend_strength() {
362
- std::vector<float> tr;
363
- tr.reserve(remainder.size());
364
- for (size_t i = 0; i < remainder.size(); i++) {
365
- tr.push_back(trend[i] + remainder[i]);
366
- }
367
- return std::max(0.0, 1.0 - var(remainder) / var(tr));
366
+ return strength(trend, remainder);
368
367
  }
369
368
  };
370
369
 
@@ -428,12 +427,12 @@ public:
428
427
  return *this;
429
428
  }
430
429
 
431
- inline StlParams inner_loops(bool ni) {
430
+ inline StlParams inner_loops(size_t ni) {
432
431
  this->ni_ = ni;
433
432
  return *this;
434
433
  }
435
434
 
436
- inline StlParams outer_loops(bool no) {
435
+ inline StlParams outer_loops(size_t no) {
437
436
  this->no_ = no;
438
437
  return *this;
439
438
  }
data/lib/stl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stl
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stl-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-12 00:00:00.000000000 Z
11
+ date: 2024-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rice
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  - !ruby/object:Gem::Version
59
59
  version: '0'
60
60
  requirements: []
61
- rubygems_version: 3.4.10
61
+ rubygems_version: 3.5.3
62
62
  signing_key:
63
63
  specification_version: 4
64
64
  summary: Seasonal-trend decomposition for Ruby