Closed3

Tableauで幾何平均を出したい

ゆづるゆづる

年平均成長率(CAGR)の求め方

2010年から2022年の年平均成長率を求めることとする。

power(
    sum([売上]) / lookup(sum([売上]), -12)
    , 1/12
)

集計を行っている年との差を求めるようにすると、年が経過するごとの年平均成長率の推移を見ることもできる。

power(
    sum([売上]) / lookup(sum([売上]), -min([年] - 2010))
    , 1 / min([年] - 2010)
)

min([現在年]-[基準年]) のようにしている理由は、Tableauの集計で算出された12を何度もsumして期待する値が取れないから。
max() 関数でもいいし、集計されないようにできればなんでもよい。

個人的には計算フィールドに固定値を入れることがナンセンスだと思っている。
例えば、2010年の部分をパラメータ化すれば柔軟にある年からの年平均成長率を求めることができる。

途中の年は空っぽで良くて、最終的な年のところだけ年平均成長率を出したいなら下記のようにしてもいい。

power(
    sum([売上]) / lookup(sum([売上]), -total(max([年] - [基準年])))
    , 1 / total(max([年] - [基準年]))
)

計算できないセルは空になるので、シートに表示される最後の年だけが集計される。
なお、表に合わせて [次を使用して計算] の部分を、横にしたり縦にしたりしないと計算結果がおかしくなる。

なお、-total(max([年] - [基準年])) など、年の差を求める部分は計算フィールドで個別に作っておくと良い。
今回は記事を書くときの都合で楽だったため一つの計算フィールドにベタ打ちしているが、実際の利用時は見づらかったりミスの原因になるので。

余談

ずっと上記の計算を幾何平均の別の出し方だと思って調べてた。
Tableau には math.prod のような関数が無いので実現出来ない。
Tabpy を使ってやろうとしても、どうにも使い勝手の悪い方法でしか出力できないので、Excel とかで出すほうがいいのかもしれない。
一通り試したが、Tableau と幾何平均の出し方で方法を調べても全然情報が出てこない理由がわかった。

ゆづるゆづる

幾何平均の求め方

POWER (
    AVG([売上]) / LOOKUP(AVG( [売上] ), FIRST())
    , 1/ABS(FIRST())
)

まさかの普通に tableau で求められた...。
悪いのは tableau じゃなくて私の頭だった。
チームメンバーの方ありがとう...!!

ゆづるゆづる

別のチームメンバーの方に教授いただいた内容。
数学のプロは凄い...。

EXP(AVG(LN([Value])))

EXP(RUNNING_AVG(LN([Value])))
\sqrt[n]{x_1 x_2 x_3 ... x_i} = \{ x_1 x_2 x_3 ... x_n \}^\text { \( \frac 1 n \)} \\ \exp \{ \log_e \{ x_1 x_2 x_3 ... x_n \}^\text { \( \frac 1 n \)} \} \\ \exp \{ \text{\(\frac 1 n \)} \log_e \{ x_1 x_2 x_3 ... x_n \} \} \\ \exp \{ \text{\(\frac 1 n \)} \displaystyle\sum_{i=1}^n{ \log_e \{ x_i \} } \}
このスクラップは2022/02/17にクローズされました