Взвешенное стандартное отклонение — полезный способ измерения дисперсии значений в наборе данных, когда некоторые значения в наборе данных имеют больший вес, чем другие.
Формула для расчета взвешенного стандартного отклонения:

куда:
- N: общее количество наблюдений
- M: количество ненулевых весов
- w i : вектор весов
- x i : вектор значений данных
- x : взвешенное среднее
Самый простой способ вычислить средневзвешенное стандартное отклонение R — использовать функцию wt.var() из пакета Hmisc , которая использует следующий синтаксис:
#define data values
x <- c(4, 7, 12, 13, ...)
#define weights
wt <- c(.5, 1, 2, 2, ...)
#calculate weighted variance
weighted_var <- wtd. var (x, wt)
#calculate weighted standard deviation
weighted_sd <- sqrt(weighted_var)
В следующих примерах показано, как использовать эту функцию на практике.
Пример 1: Взвешенное стандартное отклонение для одного вектора
Следующий код показывает, как вычислить взвешенное стандартное отклонение для одного вектора в R:
library (Hmisc)
#define data values
x <- c(14, 19, 22, 25, 29, 31, 31, 38, 40, 41)
#define weights
wt <- c(1, 1, 1.5, 2, 2, 1.5, 1, 2, 3, 2)
#calculate weighted variance
weighted_var <- wtd. var (x, wt)
#calculate weighted standard deviation
sqrt(weighted_var)
[1] 8.570051
Взвешенное стандартное отклонение оказывается равным 8,57 .
Пример 2: Взвешенное стандартное отклонение для одного столбца фрейма данных
В следующем коде показано, как рассчитать взвешенное стандартное отклонение для одного столбца фрейма данных в R:
library (Hmisc)
#define data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'C'),
wins=c(2, 9, 11, 12, 15, 17, 18, 19),
points=c(1, 2, 2, 2, 3, 3, 3, 3))
#define weights
wt <- c(1, 1, 1.5, 2, 2, 1.5, 1, 2)
#calculate weighted standard deviation of points
sqrt(wtd. var (df$points, wt))
[1] 0.6727938
Взвешенное стандартное отклонение для столбца баллов оказывается равным 0,673 .
Пример 3: Взвешенное стандартное отклонение для нескольких столбцов фрейма данных
В следующем коде показано, как использовать функцию sapply() в R для вычисления взвешенного стандартного отклонения для нескольких столбцов фрейма данных:
library (Hmisc)
#define data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'C'),
wins=c(2, 9, 11, 12, 15, 17, 18, 19),
points=c(1, 2, 2, 2, 3, 3, 3, 3))
#define weights
wt <- c(1, 1, 1.5, 2, 2, 1.5, 1, 2)
#calculate weighted standard deviation of points and wins
sapply(df[c('wins', 'points')], function(x) sqrt(wtd. var (x, wt)))
wins points
4.9535723 0.6727938
Средневзвешенное стандартное отклонение для столбца побед равно 4,954 , а средневзвешенное стандартное отклонение для столбца очков равно 0,673 .
Дополнительные ресурсы
Как рассчитать взвешенное стандартное отклонение в Excel
Как рассчитать стандартное отклонение в R
Как рассчитать коэффициент вариации R
Как рассчитать диапазон в R