ピープル・アナリティクスケーススタディ:単回帰分析に挑戦!
単回帰分析もまずは散布図を描くことから始める!
前々回、前回と相関分析を取り扱いましたが、今回は単回帰分析を用いてHRの課題に取り組みたいと思います。
お題は以下の通りです。
組織構造にとらわれずに人や情報を結び付けるような振る舞いを行うことで、その人のイノベーションを起こす力にどう影響があるのでしょうか?
イノベーションは、新しい情報と情報のぶつかり合いから始まるというようなことはよく言われることです。
組織の壁を越えてネットワークや情報を広げるような人はイノベーション力の高い人なのかということです。
ただ、ここではあくまでもケーススタディなので、こういうような課題があった時に統計的にどう分析し、提案できるかが重要だということですね。
今回は単回帰分析を用います。
単回帰分析とは、説明変数が1つのみで被説明変数を説明する方法です。
今回ですと被説明変数はイノベーションを起こす力で、説明変数は組織構造にとらわれず人や情報を結び付けるような振る舞いということになります。説明変数が1つなので単回帰分析です。
単回帰分析は必ずしも直線ばかりではないですが、一般的には Y=α+βxで示されるような直線で示す分析で使われています。
何はともあれ、単回帰分析を使えるかどうかは”可視化して使えそうかどうか”を確認することが重要ですね。
このためにはまず散布図を描いてみましょう。
Pythonでのコードは以下の通りです。
>|python|
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.scatter(Innov_TI["MEANTI"], Innov_TI["MEANINNOVATION"])
plt.show()
||<
注意:
既にデータを読み込み、データフレームInnov_TIに2変数を入れ込んでいます。
”MEANTI”:各社員の組織構造にとらわれず人や情報を結び付けるような振る舞いを数値化したものの列名
"MEANINNOVATION":各社員のイノベーションを起こす力を数値化したものの列名
すると以下のような散布図が出力されます。
何となく、相関性がありかつ線が引けそうな気はしますね
ただ、何となく引けそうなだけで単回帰分析をしていいのか??という疑問(というよりびびり?)があるのですが、AIHRの”Statistics in HR”という講義では単回帰分析を実施するための条件として以下のようなことが書かれていました。
矢印以下には一応検証結果を載せています。
- 説明変数・被説明変数、ある区間(割合)内にあること=>散布図からするとこちらは大丈夫そうです。
- 両方の変数が直線的な関係であること=>こちらも散布図から大丈夫そうですね。
- 重要な外れ値がないこと=>こちらも大丈夫そうでした。外れ値については前々回のブログで書いていますのでこちらをご参照ください。
- 双方が正規分布にほぼ従うこと=>①ヒストグラムを書いて形状確認②歪度を出して確認。こちらも大丈夫そうです。
- 変数の大小にかかわらず誤差がほぼ同じであること=>こちらも図を見る限り変数が大きい、小さいからといって誤差に違いはないような??なのでOK?
単回帰分析を実施!
単回帰分析をPythonで行うのはとても簡単です。
説明変数をx, 被説明変数をyとしてstatsmodelで以下のように書けば単回帰分析を行ってくれます。
>|python|
y,x = df['MEANINNOVATION'],df['MEANTI']
from statsmodels.formula.api import ols
formula = 'y ~ x'
res = ols(formula, data=df).fit()
||<
実際の値を見るためには以下のとおり"変数.params"で出力します。
>|python|
res.params
||<
でてきた結果は
intercept 1.276089
x:0.575717
でした。
これは
Y=1.276089+0.575717x
という式が欠けるということですので、
x(組織構造にとらわれず人や情報を結び付けるような振る舞いの数値化)の値がわかれば、Y(イノベーションを起こす力)の値も推測できるということになります。
お題(=組織構造にとらわれずに人や情報を結び付けるような振る舞いを行うことで、その人のイノベーションを起こす力にどう影響があるのでしょうか?)に対する答えとしては
組織構造にとらわれず人や情報を結び付けるような振る舞いはイノベーションを起こす力を0.57増加させることになる。
ということでしょうか?
さて、この単回帰分析を”適切な分析?”としていえるかどうかはさらに細かい分析が必要になります。
そのための結果は"変数.summary()"で出力します。
>|python|
res.summary()
||<
以下のような結果が出てきます。
決定済み係数の大小はあまり問題ではない??
いろいろ数値が出てくるのですが、見るべきところとしてよく言われるのが①各パラメーターの被説明変数に対する説明度合(赤字部分)と②推定式の当てはまりの良さ(決定係数、調整済み決定係数)です。
①はそれぞれのパラメータがゼロとは有意に異なる(=意味があるパラメータである)ということの判断値です。p値(その確率)がある程度小さい(1%、5%)数値である必要があります。こちらは満たしていますね。
②は、この推定式で被説明変数がどれだけ説明できるかという割合です(R-squaredが決定係数、Adj.R-squaredが自由度修正済み決定係数)。ずっとこちらの係数を上げるようモデルを作ることが重要だと思っていたのですが、最近読んだ「実証分析のための計量経済学」という本で以下のような記述にあたりました。
決定係数は大きいほど望ましいのは事実ですが、ミクロデータ(=観測単位からなる個票データ)を用いた実証分析では決定係数に注目することは少なく、むしろ各説明変数の統計的有意性やパラメータの大きさに着目することの方が一般的です。
人事で扱うデータはほとんどミクロデータなのですが、、決定係数は考えなくっていいということ??
と思うと分析は楽なのですが、説明するときに「40%程度しか説明できない式です」ということで納得してもらえるのでしょうか。。
ちなみにこちらの本は、実証分析結果をどう解釈するのかを理解するにあたってとても役に立ちました。
おすすめです。