<- c(2, 4, 8, 16, 32, 64)
x exp(mean(log(x)))
## [1] 11.31371
Rで幾何平均を求めるには、exp(mean(log(x)))
とするか、psychパッケージのgeometric.mean()
関数をつかいます。
実例
実際にためしてみます。
パイプ演算子をつかうなら、以下のようになります。
|>
x log() |>
mean() |>
exp()
## [1] 11.31371
psychパッケージのgeometric.mean()
関数をつかってみます。
::geometric.mean(x)
psych## [1] 11.31371
geometric.mean()
関数は以下のように定義されています。
::geometric.mean
psych## 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>
ということですので、データフレームをわたすと、各変数について幾何平均を求めてくれます。
<- data.frame(x1 = 1:5, x2 = 2^(1:5), x3 = 10^(1:5)))
(df ## 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
::geometric.mean(df)
psych## x1 x2 x3
## 2.605171 8.000000 1000.000000