Update stdev.py

Same as variance explanation, since std = sqrt(variance):

When calculation variance we can divide the calculation by N, or by N-1.
When calculating sample variance we divide by N-1 (like in the current code).(https://towardsdatascience.com/why-sample-variance-is-divided-by-n-1-89821b83ef6d)
Sometimes We want to divide by N like the basis formula, to calculate population variance. (https://en.wikipedia.org/wiki/Variance#Discrete_random_variable)
For me its useful to add another parameter that will make it possible to calculate both of then using one function.
Is it useful for you?
This commit is contained in:
YuvalWein
2020-07-23 10:26:04 +03:00
committed by GitHub
parent 94696f6120
commit 4cf1d86996
+7 -3
View File
@@ -3,15 +3,16 @@ from numpy import sqrt as npsqrt
from .variance import variance
from ..utils import get_offset, verify_series
def stdev(close, length=None, offset=None, **kwargs):
def stdev(close, length=None, ddof=1, offset=None, **kwargs):
"""Indicator: Standard Deviation"""
# Validate Arguments
close = verify_series(close)
length = int(length) if length and length > 0 else 30
ddof = int(ddof) if ddof >= 0 and ddof < length else 1
offset = get_offset(offset)
# Calculate Result
stdev = variance(close=close, length=length).apply(npsqrt)
stdev = variance(close=close, length=length, ddof=ddof).apply(npsqrt)
# Offset
if offset != 0:
@@ -39,6 +40,9 @@ Calculation:
Args:
close (pd.Series): Series of 'close's
length (int): It's period. Default: 30
ddof (int): Delta Degrees of Freedom.
The divisor used in calculations is N - ddof,
where N represents the number of elements. Default: 1
offset (int): How many periods to offset the result. Default: 0
Kwargs:
@@ -47,4 +51,4 @@ Kwargs:
Returns:
pd.Series: New feature generated.
"""
"""