見出し画像

1-6 平均変化率の計算式 〜 賃金指数の変化率は幾何平均で

今回の統計トピック


変化率・伸び率の平均を幾何平均で計算します!
賃金指数の時系列分析グラフもあります。

公式問題集の準備

「公式問題集」の問題を利用します。お手元に公式問題集をご用意ください。
公式問題集が無い場合もご安心ください!
「知る」「実践する」の章で、のんびり統計をお楽しみください!

問題を解く


📘公式問題集のカテゴリ

1変数記述統計の分野
問6 平均変化率の計算式(賃金指数)

試験実施年月
統計検定2級 2019年11月 問3(回答番号7)

問題

公式問題集をご参照ください。

解き方1(ゆっくり)

問題の概要
この問題の文章のうち1行目の文章と表は、解答にはほぼ不要な情報です。
【条件】を読んで、1か月当たりの平均変化率$${\boldsymbol r}$$の計算式を考えます。

【条件】より、次のことが分かります。
・1月の賃金指数は 102.6
・4月の賃金指数は 105.6
・1か月当たりの平均変化率$${r}$$は、次の 3か月間にわたり毎月一定
 ・1月から2月
 ・2月から3月
 ・3月から4月

変化率
変化率は、ある値と別の値の差を比率で示したものです。
たとえば、100から103への変化率は、差が3、基準値が100であり、変化率は$${(103-100) \div 100=0.03}$$です。
平均変化率$${r}$$の単位は%です。つまり変化率を100倍した数値です。
変化率は、%を100で割って、$${\cfrac{r}{100}}$$で表せます。

平均変化率を用いた2月の賃金指数
2月の賃金指数は、1月の賃金指数102.6に平均変化率$${\cfrac{r}{100}}$$による増減を加算して求めることができます。
計算式では$${102.6+102.6 \times\frac{r}{100}}$$と表せます。
この式は$${102.6 \times ( 1+\frac{r}{100} )}$$とも表せます。

つまり、1か月で$${ (1+\frac{r}{100} )}$$増減することになります。

平均変化率を用いた3月の賃金指数
3月の賃金指数は2月の賃金指数に平均変化率による増減を加算するので、$${102.6 \times ( 1+\frac{r}{100} )\times ( 1+\frac{r}{100} )}$$です。

平均変化率を用いた4月の賃金指数
4月の賃金指数は3月の賃金指数に平均変化率による増減を加算するので、$${102.6 \times ( 1+\frac{r}{100} )\times ( 1+\frac{r}{100} )\times ( 1+\frac{r}{100} )}$$です。
$${( 1+\frac{r}{100} )}$$を3回掛けているので、$${102.6 \times ( 1+\frac{r}{100} )^3}$$と表せます。
また、4月の賃金指数の値は105.6なので、$${102.6 \times ( 1+\frac{r}{100} )^3 = 105.6}$$と表せます。

ここまでを図にしてみます。

$${\boldsymbol{r}}$$について解く
次の4月の賃金指数の式を$${r}$$について解きます。

$$
102.6 \times \left( 1+\frac{r}{100} \right)^3 = 105.6
\tag{1.1}
$$

両辺を102.6で割ります。

$$
\displaystyle
\left( 1+\frac{r}{100} \right)^3 = \frac{105.6}{102.6}
\tag{1.2}
$$

両辺を$${\frac{1}{3}}$$乗します。

$$
\displaystyle
1 + \frac{r}{100} = \left( \frac{105.6}{102.6}\right)^{1/3}
\tag{1.3}
$$

両辺から1を引きます。

$$
\displaystyle
\frac{r}{100} = \left( \frac{105.6}{102.6}\right)^{{1/3}}-1
\tag{1.4}
$$

両辺に100を掛けます。

$$
\displaystyle
r =  100 \left\{ \left( \frac{105.6}{102.6}\right)^{1/3}-1 \right\}
\tag{1.5}
$$

1か月当たりの平均変化率$${r}$$(%)の計算式が求まりました。
(おわり)

解き方2(あっさり)

伸び率の幾何平均$${r_G}$$は、期間$${T}$$の各期の伸び率$${r_t \quad (r_1, r_2, \cdots , r_{T-1}, r_T)}$$から次の式で表せます。

$$
\displaystyle
r_G = \left(  \prod^T_{t=1} r_t \right)^{1/T}
\tag{2.1}
$$

この式に【条件】をあてはめると次のようになります。

$$
\displaystyle
r_G = 1 + \frac{r}{100} = \left(  \frac{105.6}{102.6} \right)^{1/3}
\tag{2.2}
$$

この式を$${r}$$について解くと次のようになります。

$$
\displaystyle
r =  100 \left\{ \left( \frac{105.6}{102.6}\right)^{1/3}-1 \right\}
\tag{2.3}
$$

解答

④の計算式です。

難易度 ふつう

・知識:幾何平均
・計算力:数式組み立て(中)
・時間目安:1分

知る


おしながき

公式問題集の問題に接近してみましょう!
今回は1か月当たりの平均変化率(幾何平均)を求めてみましょう。
ここでは、2021年の「全国の事業所規模30人以上の製造業の実質賃金指数データ」(きまって支給する給与、平成27年の平均値を100としたもの)を利用します。
※記事の公開時には2022年分が公表されているかもです。

【出典記載】
出典:「毎月勤労統計調査」(厚生労働省)
【コンテンツ編集・加工の記載】
記事の記載にあたっては、「毎月勤労統計調査」(厚生労働省)を加工して作成しています。

厚生労働省「毎月勤労統計調査」より引用

幾何平均

📕公式テキスト:1.7.2 指数化と幾何平均(41ページ~)

幾何平均は、変化率・増減率の平均値の計算に使われることが多い平均の概念です。
例えば、5年間の人員の増減について、1年あたりの平均増減率を求めるとき、12か月の売上高の変化について、1ヶ月あたりの平均変化率を求めるとき、などで、幾何平均を用います。

それでは、実質賃金指数について、1月から5月までの1か月当たり平均変化率$${r}$$を求めてみます。
「解き方1(ゆっくり)」項の解き方に沿って、次のように数式を導きます。

続いて、「解き方1(ゆっくり)」項の解き方に沿って、この式を$${r}$$について解きます。

$$
\displaystyle
r =  100 \left\{ \left( \frac{98.7}{97.7}\right)^{1/4}-1 \right\}
$$

最後に、平方根(√)計算のできる電卓を用いて、この式を解きます。
「98.7 ÷ 97.7 = √ √ -1 = × 100 =」の順で入力します。
答えは、0.2549・・・ です。単位は%です。

1/4乗は、1/2乗×1/2乗であり、1/2乗は平方根(√)であるため、√キーを2回押すと、1/4乗(4乗根)を求めることができます。
「1/n乗」のnが2の累乗(2, 4, 8, 16, ・・・)の場合は、√を使って電卓で計算できます。

変化率に関して表にまとめました。

幾何平均の寄り道
平均変化率(%)の計算には、%を扱うことによる 100 の介入と、変化率を扱うことによる -1 の介入があって、少し複雑な計算になっています。
1.5倍、2倍といった倍率の計算のほうが直感的に理解しやすいかもしれません。
たとえば、身長が4年間で次のように伸びたとしましょう。
基準年150cm→1年後153cm→2年後155cm→3年後165cm→4年後175cm
毎年平均して何倍($${g}$$倍)になったのかを幾何平均で計算できます。

$$
\begin{align*}
&基準年の身長150 \mathrm{cm} \times g倍 \times g倍 \times g倍 \times g倍 \\
&=基準年の身長150 \mathrm{cm} \times g倍^4 \\
&=4年後の身長175 \mathrm{cm} 
\end{align*}
$$

この式を$${g}$$について解くと次のようになります。

$$
g倍= \left (\cfrac{4年後の身長175 \mathrm{cm} }{基準年の身長150 \mathrm{cm}} \right)^{1/4}=1.039 \cdots 倍 \fallingdotseq 1.04倍
$$

毎年身長が約1.04倍ずつ伸びていたのですね。
検算してみましょう。
$${150 \times 1.04 \times 1.04 \times 1.04 \times 1.04 \fallingdotseq 175}$$になります。

$${g}$$倍の立場から幾何平均を見てみましょう。
先ほどの身長の成長のケースを、身長(cm)ではなくて、毎年の倍率が分かっているとします。
1年後1.020倍、2年後1.013倍、3年後1.065倍、4年後1.061倍です。

$$
\begin{align*}
&毎年の倍率g \\
&=(1.020倍 \times1.013倍\times1.065倍\times1.061倍)^{1/4} \\
&=1.039倍 \cdots\fallingdotseq1.04倍 \\
\end{align*}
$$

幾何平均$${G}$$の一般式
$${x}$$はデータ、$${N}$$はデータの個数を表します。
また、$${\displaystyle \prod^N_{n=1}}$$は総乗記号であり、データを1番目から順にN番目まで掛け算するという意味です。
総和記号$${\displaystyle \sum^N_{n=1}}$$の掛け算版です

①データが4個の場合

$$
\displaystyle
G = (x_1 \times x_2 \times x_3 \times x_4) ^{1/4}= \left( \prod^4_{n=1} x_n \right)^{1/4} 
$$

②データがN個の場合

$$
\displaystyle
G = (x_1 \times x_2 \times \cdots \times x_{N-1} \times x_{N}) ^{1/N}= \left( \prod^N_{n=1} x_n \right)^{1/N} 
$$

ところで
2021年の実質賃金指数は、2015年の平均値を100として算出されています。
2021年の各指数の値が99や100というのは、2015年と比べて・・・。
どんな意味を持ち、どんな解釈ができるのでしょう。
ちなみに、2020年と2021年の実質賃金指数は100を下回る月が多いです。
新型ウィルスの感染拡大が賃金に影響を及ぼしたのかな、とざっくり推測しました。
2022年は、①感染の落ち着きと②物価上昇の兼ね合いで、どのような「実質」賃金指数が弾かれるのか、気になるところです(既に単月の指数は公表されています)。

実践する


平均変化率を計算してみよう

2021年の「全国の事業所規模30人以上の製造業の実質賃金指数データ」(きまって支給する給与、平成27年の平均値を100としたもの)を用いて1か月当たりの平均変化率を計算してみましょう。

「全国の事業所規模30人以上の製造業の実質賃金指数データ」は政府統計の総合窓口「e-Stat」で公開されています。

厚生労働省の「毎月勤労統計調査」で作成される統計データです。
常用労働者5人以上の約190万事業所(経済センサス-基礎調査)から抽出した「約33,000事業所を対象として」毎月調査しているそうです。

次のリンクで1952年~2021年の実質賃金指数等の長期時系列表のダウンロードサイトを開くことができます。
拡張子.xlsのEXCELファイルを取得できます。
2000年以降の指数の変化を見てみるのも良いかもしれません。
https://www.e-stat.go.jp/stat-search/files?stat_infid=000027582956

CSVファイルのダウンロード
こちらのリンクから整形後のCSVファイルをダウンロードできます。
Pythonサンプルファイルを利用する方は、このCSVファイルをダウンロードしてください。

なお、このデータには1952年から2021年までの情報が含まれています。
2021年のデータに絞り込む場合は、1列目「年」=2021を条件にしてください。
列名「1月」から「12月」が当該月の実質賃金指数です。

電卓・手作業で作成してみよう!

上述の方法でデータを取得して、電卓やそろばんをはじいて、手作業で計算してみましょう!
一番記憶に残る方法ですし、試験本番の電卓作業のトレーニングにもなります。
電卓を用いる場合は、8か月区切り(たとえば、1月から9月まで)の1か月当たり平均変化率を求めるのがよいでしょう。
8は2の3乗です。√キーを3回押すと1/8乗を求められます。

EXCELで作成してみよう!

データ数が多い場合、やはり手作業では非効率になります。
パソコンを利用して、手早く作表できるようになれば、実務活用がしやすくなるでしょう。

幾何平均
幾何平均はGEOMEAN関数で簡単に求めることができます。
引数には幾何平均をとる範囲を指定します。
次の図は倍率に相当する「前月比」を例にしています。

EXCEL:GEOMEAN関数イメージ

なお、データにマイナス値が含まれるとGEOMEAN関数は計算できません。
このデータは前月からの変化率にマイナス値が含まれており、K4セルのGEOMEAN関数は#NUM!(ナム!)とエラー表示があります。
そこで、L4セルでは前月比の幾何平均から1を引いて、平均変化率を求めています。

EXCEL:GEOMEAN関数はマイナス値を含むとエラーになる

参考サイト
代表的な「平均」には、幾何平均に加えて、算術平均(一般的な平均)、加重平均調和平均があります。
次のサイトでは、EXCELを用いて、売上高にまつわる算術平均、幾何平均、加重平均を詳しく解説しています。

また、もう1つの平均、調和平均は、次のサイトが参考になります。
所要時間の計算例があります。


EXCELサンプルファイルのダウンロード

こちらのリンクからEXCELサンプルファイルをダウンロードできます。

Pythonで作成してみよう!

プログラムコードを読んで、データを流したりデータを変えてみたりして、データを追いかけることで、作表ロジックを把握する方法も効果的でしょう。
サンプルコードを揃えておけば、類似する作表作業を自動化して素早く結果を得ることができます。

今回は、1ヶ月当たりの平均変化率(幾何平均)を計算します。

①ライブラリのインポート
scipyのgmeanで幾何平均を求めます。
また、時系列データが揃っているので、statsmodelsで時系列のグラフをプロットします。

import pandas as pd
from scipy.stats.mstats import gmean
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'MS Gothic'
%matplotlib inline

②csvファイルの読み込み
まず、上述のダウンロードリンクより、CSVファイルをダウンロードします。
その後、次のコードを実行して、CSVファイルをpandasのデータフレームに読み込みます。

datafile = './sample_data.csv' # CSVファイルの格納フォルダとファイル名を設定
df = pd.read_csv(datafile, index_col='年')
print(df.shape)
display(df.tail())
sample_dataのデータ内容

③前月変化率の計算
pandasのpct_changeを利用して前月変化率を計算します。

  • 計算式は「(当月-前月)/前月」です。

  • 1月は同じ暦年に前月が無いため、変化率に0を設定します。

  • データの全ての年(1952年~2021年)を対象にして計算しています。

df_pct_change = pd.DataFrame(df.iloc[:,7:19].pct_change(axis=1)).fillna(0)
df_pct_change.columns = [f'{i}変化率' for i in df_pct_change.columns]
df_concat = pd.concat([df, df_pct_change], axis=1)

print(df_concat.shape)
display(df_concat.tail())
前月変化率を設定

④1ヶ月当たりの平均変化率の計算
SciPyのgmeanを利用して前月変化率の幾何平均を計算します。

df_concat['1か月当たりの平均変化率']  = gmean(df_concat.iloc[:, 21:32]+1, axis=1)-1
print(df_concat.shape)
display(df_concat.tail())
1ヶ月当たりの平均変化率を設定

⑤2021年の1ヶ月当たりの平均変化率の表示

year = 2021  # 表示する年を指定
col  = '1か月当たりの平均変化率'
print('{}年の{}:{:.7f}'.format(year, col, df_concat.loc[year][col]))

出力イメージ
2021年の1か月当たりの平均変化率:0.0022086

⑥変動分解のグラフ表示
1-5のコードを用いて、1952~2021年の年平均をプロットします。

# 変動分解(移動平均による加法モデル)
result=seasonal_decompose(df_concat['年平均'], model='additive', period=12)

# 1990年以降に絞り込む場合は、resultをこちらに差し替えます。24年以上の指定が必要です。
# result=seasonal_decompose(df_concat.loc[1990:2021]['年平均'], model='additive', period=12)

# この2行だけでプロットを表示可能
# result.plot()
# plt.show()

fig, ax = plt.subplots(nrows=4, ncols=1, figsize=(6, 8), sharex=True)
# 元データ系列のプロット
ax[0].set_title('Observed:原系列')
ax[0].plot(result.observed, lw=0.5)

# 傾向変動のプロット
ax[1].set_title('Trend:傾向変動')
ax[1].plot(result.trend, lw=0.5)

# 季節変動のプロット
ax[2].set_title('Seasonal:季節変動')
ax[2].plot(result.seasonal, lw=0.5)

# 不規則変動のプロット
ax[3].set_title('Residual:不規則変動')
ax[3].scatter(result.resid.index, result.resid.values, s=2)
plt.axhline(y=0, lw=0.5)

plt.tight_layout()
# plt.savefig('./ts_tsi_1-6.png') # グラフ画像ファイルの保存
plt.show()
時系列プロットサンプル

傾向変動の頭打ち、ボーナス等の影響による季節変動が見られます。
また、不規則変動(誤差)に規則性があるように見えます。
バブル崩壊、リーマンショック等との関連もありそうです。

Pythonサンプルファイルのダウンロード
こちらのリンクからJupyter Notebook形式のサンプルファイルをダウンロードできます。



おわりに

今回は計算式を求める問題に取り組みました。
計算式を書くのは難しいです。
数学的な自信がないですし、どのくらい細かく書いてよいのか迷っています。
これからも計算式を導出して解く問題は、迷いながらゆっくり書きます。

最後までお読みいただきまして、ありがとうございました。


のんびり統計シリーズの記事

次の記事

前の記事

目次

この記事が気に入ったらサポートをしてみませんか?