I can’t understand from the docs how can I retrieve a result from a series. Specifically, if I follow the example
y = rand(1000)
s = Series(Mean(), Variance())
fit!(s, y)
And after I want to apply std() to the resulting Variance(), I can’t find a way to subselect the Variance from the series
I just found a way which seems convoluted, but works
x = randn(10^6)
things = Series(Mean(), Variance())
fit!(things,x)
std(things.stats[2])
Have you tried var(things)
or std(things)
?
yes it returns this error:
ERROR: MethodError: no method matching iterate(::Series{Number,Tuple{Mean{Float64,EqualWeight},Variance{Float64,EqualWeight}}})
Indeed.
I think your approach is ok. consider the dump
function which can be helpful.
using OnlineStats
y = rand(1000)
o = fit!(Variance(), y)
@show var(o)
@show std(o)
@show mean(o)
s = Series(Mean(), Variance())
fit!(s, y)
@show var(s.stats[2])
@show std(s.stats[2])
@show mean(s.stats[2])
value(s.stats[2])
value(s.stats[1])
dump(s)
dump(o)
That’s probably the most correct way to do this. I don’t think adding a getter function e.g. stats(s)
would be worth it.
Alternatively, you can give Series
a named tuple:
julia> s = Series((m=Mean(), v=Variance()));
julia> fit!(s, randn(100));
julia> s.stats.v
Variance: n=100 | value=1.08054
2 Likes