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 +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +3 -3
- data/ext/stl/stl.hpp +19 -20
- data/lib/stl/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acb247c95bfe0b9d339f507c5a9da2c0cf3a3238b7813bc8790782f17dd63496
|
4
|
+
data.tar.gz: ecaeaf9f4fc8d4784639c472d15e0ffc7fa40d32ae2b9feccf0741bc8ed36650
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 821487152fc03aede2cae7c69eaad8f2bede5a9a7647167f51f6a30085a745c68cce2e87df6609d1aaa0e3eac6303f7477e1387dfc1a8b4cc56861b23aabc243
|
7
|
+
data.tar.gz: 72e50a717aaf027eec309908e24fa72344d32e0ef4143dc86c555e0981328e084fc65ae6f80ecc3f4d91c6adfde6cec8a34efc6185df68de66d2b6e79356941e
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -18,9 +18,9 @@ Decompose a time series
|
|
18
18
|
|
19
19
|
```ruby
|
20
20
|
series = {
|
21
|
-
Date.parse("
|
22
|
-
Date.parse("
|
23
|
-
Date.parse("
|
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
|
+
* 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
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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
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.
|
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:
|
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.
|
61
|
+
rubygems_version: 3.5.3
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Seasonal-trend decomposition for Ruby
|