stl-rb 0.2.1 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|