mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
bugfix: TimeSeries: fix for calculation of standard deviation
git-svn-id: https://svn.fhem.de/fhem/trunk@22980 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
435df927fd
commit
d67aeb6d88
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- bugfix: TimeSeries: fix for calculation of standard deviation
|
||||||
- feature: 76_SMAPortal: new relative time arguments for attr balanceDay,
|
- feature: 76_SMAPortal: new relative time arguments for attr balanceDay,
|
||||||
balanceMonth, balanceYear, new attribute
|
balanceMonth, balanceYear, new attribute
|
||||||
useRelativeNames
|
useRelativeNames
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
# modified: method elapsed reverted to version from 2015-01-31 to provide downsampling and buffering through fhem.pl
|
# modified: method elapsed reverted to version from 2015-01-31 to provide downsampling and buffering through fhem.pl
|
||||||
# modified: method _housekeeping does not reset time series if hold time is specified
|
# modified: method _housekeeping does not reset time series if hold time is specified
|
||||||
#
|
#
|
||||||
|
# 17.10.2020 Boris Neubert
|
||||||
|
# modified: fix for calculation of standard deviation
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
package TimeSeries;
|
package TimeSeries;
|
||||||
@ -240,12 +243,13 @@ sub trimToHoldTime() {
|
|||||||
sub _updatestat($$) {
|
sub _updatestat($$) {
|
||||||
my ($self, $V)= @_;
|
my ($self, $V)= @_;
|
||||||
|
|
||||||
# see Donald Knuth, The Art of Computer Programming, ch. 4.2.2, formulas 14ff.
|
# see Donald Knuth, The Art of Computer Programming, ch. 4.2.2, p. 232ff, formulas 14ff.
|
||||||
|
# https://doc.lagout.org/science/0_Computer%20Science/2_Algorithms/The%20Art%20of%20Computer%20Programming%20%28vol.%202_%20Seminumerical%20Algorithms%29%20%283rd%20ed.%29%20%5BKnuth%201997-11-14%5D.pdf
|
||||||
my $n= ++$self->{n};
|
my $n= ++$self->{n};
|
||||||
if($n> 1) {
|
if($n> 1) {
|
||||||
my $M= $self->{_M};
|
my $M= $self->{_M};
|
||||||
$self->{_M}= $M + ($V - $M) / $n;
|
$self->{_M}= $M + ($V - $M) / $n;
|
||||||
$self->{_S}= $self->{_S} + ($V - $M) * ($V - $M);
|
$self->{_S}= $self->{_S} + ($V - $M) * ($V - $self->{_M});
|
||||||
$self->{integral}+= $V;
|
$self->{integral}+= $V;
|
||||||
#main::Debug("V= $V M= $M _M= ".$self->{_M}." _S= " .$self->{_S}." int= ".$self->{integral});
|
#main::Debug("V= $V M= $M _M= ".$self->{_M}." _S= " .$self->{_S}." int= ".$self->{integral});
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user