The weighted standard deviation is a useful way to measure the dispersion of values in a dataset when some values in the dataset have higher weights than others.
The formula to calculate a weighted standard deviation is:
where:
- N: The total number of observations
- M: The number of non-zero weights
- wi: A vector of weights
- xi: A vector of data values
- x: The weighted mean
The easiest way to calculate a weighted standard deviation in Python is to use the DescrStatsW() function from the statsmodels package:
DescrStatsW(values, weights=weights, ddof=1).std
The following example shows how to use this function in practice.
Example: Weighted Standard Deviation in Python
Suppose we have the following array of data values and corresponding weights:
#define data values values = [14, 19, 22, 25, 29, 31, 31, 38, 40, 41] #define weights weights = [1, 1, 1.5, 2, 2, 1.5, 1, 2, 3, 2]
The following code shows how to calculate the weighted standard deviation for this array of data values:
from statsmodels.stats.weightstats import DescrStatsW
#calculate weighted standard deviation
DescrStatsW(values, weights=weights, ddof=1).std
8.570050878426773
The weighted standard deviation turns out to be 8.57.
Note that we can also use var to quickly calculate the weighted variance as well:
from statsmodels.stats.weightstats import DescrStatsW
#calculate weighted variance
DescrStatsW(values, weights=weights, ddof=1).var
73.44577205882352
The weighted variance turns out to be 73.446.
Additional Resources
The following tutorials explain how to calculate weighted standard deviation in other statistical software:
How to Calculate Weighted Standard Deviation in Excel
How to Calculate Weighted Standard Deviation in R