stl-rb 0.2.2 → 0.3.0
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 +4 -4
- data/ext/stl/stl.hpp +14 -15
- data/lib/stl/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9618c6ec1b85dd66819a5d2ad583a7eea4f3477d00ec2294bfb11ead531c8a2
|
4
|
+
data.tar.gz: 85bfe604d2baa36e592f5c10639301258152a0805bf6790e2926af6fbac0bbe5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32e4f5fee0ec21fa9676a25fea82609b7c1814c27ae26d6e45117d3e7c815827fc4ab6628feb4736b5c93bc93925483a1a6a510a3930a49e8e27e83f4690919b
|
7
|
+
data.tar.gz: 86e8cd5354cca7c121c9e26a8b9a7dde4b3585095843fdc80b1eedcce25a0c8fb0aa8b8b0a6fa2e15a0a6a10f682e8ef71e5e4da186e3e7b17fe8de6b1506332
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Seasonal-trend decomposition for Ruby
|
4
4
|
|
5
|
-
[![Build Status](https://github.com/ankane/stl-ruby/workflows/build/badge.svg
|
5
|
+
[![Build Status](https://github.com/ankane/stl-ruby/actions/workflows/build.yml/badge.svg)](https://github.com/ankane/stl-ruby/actions)
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -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
|
*
|
@@ -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.
|
4
|
+
version: 0.3.0
|
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-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rice
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.
|
19
|
+
version: 4.3.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.
|
26
|
+
version: 4.3.3
|
27
27
|
description:
|
28
28
|
email: andrew@ankane.org
|
29
29
|
executables: []
|
@@ -51,14 +51,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.1'
|
55
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: '0'
|
60
60
|
requirements: []
|
61
|
-
rubygems_version: 3.
|
61
|
+
rubygems_version: 3.5.16
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Seasonal-trend decomposition for Ruby
|