Як обчислити середнє геометричне в r (з прикладами)


Щоб обчислити середнє геометричне набору чисел у R, можна використати такий синтаксис:

 exp(mean(log(x)))

Наступні приклади показують, як використовувати цю функцію на практиці.

Приклад 1: обчислити середнє геометричне вектора

Наступний код показує, як обчислити середнє геометричне одного вектора в R:

 #definevector
x <- c(4, 8, 9, 9, 12, 14, 17)

#calculate geometric mean of values in vector
exp(mean(log(x)))

[1] 9.579479

Приклад 2: обчислити середнє геометричне вектора з нулями

Якщо ваш вектор містить нулі або від’ємні числа, наведена вище формула поверне 0 або NaN.

Щоб ігнорувати нулі та від’ємні числа при обчисленні середнього геометричного, можна скористатися такою формулою:

 #define vector with some zeros and negative numbers
x <- c(4, 8, 9, 9, 12, 14, 17, 0, -4)

#calculate geometric mean of values in vector
exp(mean(log(x[x > 0])))

[1] 9.579479

Приклад 3: обчисліть середнє геометричне значення стовпців у кадрі даних

Наступний код показує, як обчислити середнє геометричне значення стовпця у кадрі даних:

 #define data frame
df <- data. frame (a=c(1, 3, 4, 6, 8, 8, 9),
                 b=c(7, 8, 8, 7, 13, 14, 16),
                 c=c(11, 13, 13, 18, 19, 19, 22),
                 d=c(4, 8, 9, 9, 12, 14, 17))

#calculate geometric mean of values in column 'a'
exp(mean(log(df$a)))

[1] 4.567508

А наступний код показує, як обчислити середнє геометричне кількох стовпців у кадрі даних:

 #define data frame
df <- data. frame (a=c(1, 3, 4, 6, 8, 8, 9),
                 b=c(7, 8, 8, 7, 13, 14, 16),
                 c=c(11, 13, 13, 18, 19, 19, 22),
                 d=c(4, 8, 9, 9, 12, 14, 17))

#calculate geometric mean of values in column 'a', 'b', and 'd'
apply(df[, c(' a ', ' b ', ' d ')], 2, function (x) exp(mean(log(x))))

       abd
4.567508 9.871128 9.579479

Додаткові ресурси

Як обчислити середнє значення на групу в R
Як обчислити середньозважену величину в R
Як обчислити стандартну помилку середнього в R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *