x <- c(2, 4, 8, 16, 32, 64)
exp(mean(log(x)))
## [1] 11.31371Rで幾何平均を求めるには、exp(mean(log(x)))とするか、psychパッケージのgeometric.mean()関数をつかいます。
実例
実際にためしてみます。
パイプ演算子をつかうなら、以下のようになります。
x |>
log() |>
mean() |>
exp()
## [1] 11.31371psychパッケージのgeometric.mean()関数をつかってみます。
psych::geometric.mean(x)
## [1] 11.31371geometric.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+05psych::geometric.mean(df)
## x1 x2 x3
## 2.605171 8.000000 1000.000000