Rで幾何平均を求める

R
作者

伊東宏樹

公開

2025年2月17日

Rで幾何平均を求めるには、exp(mean(log(x)))とするか、psychパッケージのgeometric.mean()関数をつかいます。

実例

実際にためしてみます。

x <- c(2, 4, 8, 16, 32, 64)
exp(mean(log(x)))
## [1] 11.31371

パイプ演算子をつかうなら、以下のようになります。

x |>
  log() |>
  mean() |>
  exp()
## [1] 11.31371

psychパッケージのgeometric.mean()関数をつかってみます。

psych::geometric.mean(x)
## [1] 11.31371

geometric.mean()関数は以下のように定義されています。

psych::geometric.mean
## function (x, na.rm = TRUE) 
## {
##     if (is.null(nrow(x))) {
##         exp(mean(log(x), na.rm = na.rm))
##     }
##     else {
##         exp(apply(log(x), 2, mean, na.rm = na.rm))
##     }
## }
## <bytecode: 0x130d53a30>
## <environment: namespace:psych>

ということですので、データフレームをわたすと、各変数について幾何平均を求めてくれます。

(df <- data.frame(x1 = 1:5, x2 = 2^(1:5), x3 = 10^(1:5)))
##   x1 x2    x3
## 1  1  2 1e+01
## 2  2  4 1e+02
## 3  3  8 1e+03
## 4  4 16 1e+04
## 5  5 32 1e+05
psych::geometric.mean(df)
##          x1          x2          x3 
##    2.605171    8.000000 1000.000000

参考