カテゴリー別アーカイブ: 2.そぞろ歩き

データ分析に必要な操作を一通り網羅します。

ボールの飛距離を推測する

自然界に隠された美しい真実を暴き出す

前回、身体測定のデータの中で「ソフトボール投げ」に対して、
どの測定項目が一番影響があるのか調査しました。

結果として「20mシャトルラン」「立ち幅跳び」「50m走」「上体起し」「反復横とび」
が多少相関がありそうで、
「握力」や「長座体前屈」は関係なさそうだという事がわかりました。

tut_mr_1

では、関連のある項目を元にソフトボールの飛距離を推測できるでしょうか?

過去から学ぶ

物理学者は理論的に
「AはBとCというパラメータに関連するから、Bが動くとAはこれくらい動く」
と数式を導き、実験で結果検証します。

我々も、人体を仕組みを解き明かして、50m走とソフトボールの飛距離の関連性を明かすことはできるかもしれません。
しかし、ここは手っ取り早く、実際の測定値から結果を推定しましょう。

帰納的なアプローチです。
過去データはたくさんあるのです、これらにフィットする数式を導き出して、使ってみます。
もちろん理論的なものではないので間違っていることもあるのですが、
それらは徐々に修正していくことができます。

モデル化

現実のデータからフィットしそうな数式を導くことを「モデル化」と呼びます。
ツール→「回帰モデリング」を選択してください。

tut_mr_2

「回帰モデリング」画面が開きます。
「モデルメソッド」は線形回帰、「データテーブル」は取り込んだデータ、

レスポンスカラムは目的変数と呼ばれ、モデル化の対象とするカラムを選択します。
こちらに「ソフトボール投げ(m)」を選択します。

「予測カラム」は説明変数と呼ばれます。
レスポンスカラムを導き出すために使用するカラムを選択します。
「20mシャトルラン」「立ち幅跳び」「50m走」「上体起し」「反復横とび」
の5つを選択して「追加」ボタンを押してください。

tut_mr_3

「OK」を押すと、結果ページが表示されます。

tut_mr_4

ここで重要なのは赤線で括った、モデルの要約にある
Multiple R-squared: 0.5038

の数値と係数表の値です。
R-squaredの値は前回でも話題にしていたR2の値です。
ざっくり言うと、実際のソフトボール投げの数値に対して
どれくらい良いモデルができたのか指標です。

20mシャトルランだけでは0.48の値だったのですが、
他のパラメータを追加したことで0.50に上昇しました。
期待ほどではないです。

係数表には実際のモデル式が読み取れます。
NameとEstimateの行を見てください。

Interceptは切片で、それ以外はそれぞれどれくらい影響を及ぼすかです。

ソフトボール投げ=3.44+ 上体起こし x 0.12 + 反復横跳び x 0.03 + 20メートルシャトルラン x 0.13 + 50m走 x ( -0.10 ) + 立ち幅跳び x 0.02

というモデルになったという事です。
実際にどれくらい適合しているのかは目で見た方がわかりやすいかもしれませんね。
「Residuals vs. Fitted」「Variable Importance」はグラフ右上のxを押して消してください。

モデルのフィッティングを確認

左下の診断用ビジュアライゼーションから
「Response vs. Fitted」をクリックすると散布図が表示されます。

tut_mr_5

縦軸がソフトボール投げの実績、横軸はモデルから算出した理論値です。
だいたい合っていそうですが、もっとフィッティングを高められないでしょうか?

tut_mr_6

↑ちなみに結果の散布図は、普通の散布図と変わりありません。
回帰線の追加とラベルの追加は前のページをご覧ください。
モデルを修正する

それではモデルを修正してみましょう。

今回は測定値だけを元にモデリングしました。
数値項目を元にしたため、「学校」や「男女」などの属性は盛り込めてないのですね。

小学校・中学校や男女で違いはありそうなので、
これも追加してみましょう。

tut_mr_7

モデルの要約の「モデルの編集」を押します。
これで作成したモデルの変更ができます。

tut_mr_8

説明変数に「学校」「性別」を追加してください。
「OK」を押すと再集計されます。

tut_mr_9

Multiple R-squaredの値が 0.6643になり、だいぶ精度も高まったようです。散布図も収束してきましたね!

係数表も更新されますが、こちらはだいぶ変わっています。

ソフトボール投げ=-12.46+ 上体起こし x 0.15 + 反復横跳び x 0.10 + 20メートルシャトルラン x 0.08+ 50m走 x ( -0.10 ) + 立ち幅跳び x 0.07 

小学校だったら 6.14、
男だったら3.81
のボーナスポイントが追加

のモデルです。
男子だったら飛距離が伸びるのは納得ですが、小学生の方が中学生よりも飛距離が伸びるのは理解し難いですね。
恐らく、上体起こしや反復横跳びなどの値ほどには飛距離は伸びないので、身体が成長するにしたがってマイナス修正が必要なのでしょう。

tut_mr_10

これで割と信頼できるモデルができましたので、
体力測定のデータで、ある程度ソフトボールの飛距離が推測できます。

これって思っているよりもすごいことだと思いますよ。
ソフトボールの飛距離計測するには50メートルくらいのグラウンドが必要になりますし、
計測員も一人じゃ足りないですよね?

ソフトボールは非常にコストの高い測定項目なんです。

これを他のパラメータで推測できるという事は
無駄な投資の抑制とコスト削減につながります。

また、このモデルはファイル内に保存できますので、
データを更新した際に、予測値を計算することができます。

同じことを、製造業の品質と製造時のパラメータに変更すると、製造中に品質が悪いのかどうか判断できますし、
サービス行では、会員が解約する予兆を捉えたり、逆にどの商品を購入してくれそうか、導くことができます。

これで一通り、データ分析から予測ができるようになりましたね。

パラメータの関連性を把握

相関性を一覧表示

前回、様々な視点でデータを分析してパラメータの間で色々な関係性がありそうだという事がわかりました。
グラフの軸や色などを切り変えて見ることで、
関連性の有無も大体分かると思います。

サンプルデータはカラムの数も少ないのでHitに関連するパラメータを見つけたければ
全ての軸を取ってみれば、どのパラメータが関連しているか分かりますが、実際はカラムが数百あるデータも珍しくありません。

これらに対して全部可視化して確認するのは、
業務効率化という点からはおすすめできません。

そこで統計的な手法を使って確認しましょう。

続きを読む パラメータの関連性を把握

散布図で個別データを確認

散布図を使用して傾向と外れ値を見る

前回は棒グラフを使用して年収のサマリーを
TeamやPosition別に比較してみました。

しかし、サマリーではなく個別の選手に対して注目が必要な場合もあります。
そのような時は散布図が便利です。

散布図の作り方

散布図の作り方はツールバーのアイコンから「新規の散布図」をクリックします。

tut_scat1

続きを読む 散布図で個別データを確認

棒グラフで年収を確認

年収に差はあるか?

データの取り込みができたら、
データの傾向がどのようになっているのか確認します。

今回のデータでは「Salery」カラムが年収ですので、
どのような偏りがあるのか見ていきましょう。

新規ページ作成

画面上の「ページ」で右クリックして「新規ページ」を選択し、
新規ページを作成します。

tut_bar_0

棒グラフを作成

画面上部にあるアイコンから「新規の棒グラフ」をクリックします。

tut_bar_1 tut_bar_2

棒グラフが表示されました。
最初の軸はSpotfireが自動的に決めてくれます。
この場合は横軸がPosition、縦軸がローの数なので、
LFポジジョンの選手が一番多いようです。
50名程度いますね。その次が2Bで35名程度でしょうか?

tut_bar_0

縦軸の変更

選手の人数を見ていても面白くないので
年収を比較してみましょう。
縦軸の(ローの数)と書いてある上の icon-caret-square-o-right  をクリックすると
軸を選択できます。

ここでSalaryを選択してみましょう。

tut_bar_1

これで縦軸が年収になりましたので、
ポジション別の年収合計になりました。

tut_bar_2

あれ?少しおかしいですね。
人数では2Bは2番目に多かったのに、
年収合計ではそれほどでもないです。

集計方法の変更

年収の平均を見てみましょう。
Sum(Salary)の上にある icon-caret-right をクリックすると、
先ほどと同じようにカラム一覧が表示されます。
一番上に集計方法が選択されています。
現在はSum(和)になっていますので、Avg(平均)に変更します。

tut_bar_3

 

tut_bar_4

うわ。。。2Bの年収低すぎ。。。
他のポジションと比較しておよそ半分程度の収入です。
これでやっていけるのでしょうか?

と思いますが、これは大リーガー全体の平均なので
それでも200万ドル(2億円)以上はありますね。

元に戻す

冗談はさておき、今度はどのチームが一番収入が多いのか見てみましょう。
一度縦軸をSum(Salary)に戻します。
ワンステップ戻るのでツールバーの「元に戻す」が便利です。
tut_bar_5

また、合計に戻りました。

横軸の変更

では横軸をチームに変更し、どのチームが一番給料を払っているのか確認します。
横軸のPositionと書いてある右の icon-caret-down を選択すると縦軸と同じように一覧が表示されますので、
Teamを選択します。

tut_bar_6

ダントツで給料をもらっているチームがあります。
ただ、横軸のラベルがつぶれて見えないです。
このような場合は画面を広げるか、マウスを乗せると項目を確認できます。
一番給料をもらっているのはNY Yankeesでした。
総額で$108,135,714ですね!

tut_bar_7

マークによるデータの確認

一体誰がこんなに貰っているのでしょうか?
内容を確認したい場合はマークを使います。
バーをクリックするか、左クリックでドラッグにより範囲選択することにより、
マークと呼ばれる状態になり、その範囲のデータがハイライトされます。

tut_bar_8

ハイライトされたデータはDetail-on-Demandに表示されます。

Salaryでクリックすると給料別にソートすることができますので
Alex RodorigezやDerek Jeter選手などの高給取りが見えてきます。

カテゴリの比較

先ほどはPosition別にSalaryを比較しましたが、
今回はTeam別に比較しています。
ちなみにデータには連続型データと離散型データの2種類あります。
連続型データは数値型のもので、身長や体重などがこれに当たります。
Salaryもこちらですね。Spotfireでは連続データと呼びます。

離散型データは男女や好きなスポーツなど、文字列型のデータです。
男性は1、女性は2など必ずしも文字列とは限りませんが、中間の値がないデータのことです。
TeamやPositionはこちらに当たります。Spotfireではカテゴリデータと呼びます。

Team別に比較してますが、これはTeam別Position別に比較する必要がありそうです。方法は2種類あります。

フィルターによるデータの絞り込み

LFポジションだけに注目してみましょう。
データにフィルターをかけて、範囲を絞り込みます。
画面右側に「フィルターパネル」があります。

tut_bar_9

フィルターパネルの中からPositionを表示してください。
チェックボックスになっているので、チェックを外すことで
データ範囲を変更できます。
LF以外のチェックボックスを外してみると
Bostonが給料をたくさん払っていそうです。
それ以外のPositionに関しても調べてみてください。

tut_bar_10

右下にどれくらいのデータが絞りこまれているのか表示されています。
フィルターをかけたことを忘れて分析してしまうことがありますので、
こちらはチェックしておきましょう。

フィルターリセットする場合はツールバーからフィルターリセットボタンをクリックします。

tut_bar_11

下世話な話ですが、日本人選手もデータの中に含まれています。
フィルターでイチロー選手や松井選手だけに絞り込むことも可能です。
正規表現が使えますので、Player Name に*matsu* or *ichiro* と入力して下さい。

tut_bar_12

シアトルマリナーズのあの人はやはり高給取りですね。

色の変更

再度フィルターリセットをかけて全データを表示しましょう。

tut_bar_13

棒グラフだけでも様々な知見が得られることがわかります。

重要なのは報告のための可視化ではなく、
気付きを得るための可視化が大事だという事です。

サマリーされたデータを確認すると言う意味では、
線グラフでも円グラフでも同じです。

ただ、場合によってはサマリーされていない生データを可視化することが重要になってきます。
次は散布図でデータを確認してみましょう。

新規データの取り込み

データを分析するにはデータが必要です。
Spotfireは基本的にフラットなデータであれば、
取り込むことができます。
先ほどのサンプルファイルフォルダからBaseball.txtを読み込んでみます。
Spotfireを新規に立ち上げてください。

tut_openFile_0

取り込み方法は下記の方法があります。

  •  エクスプローラーからSpotfireにドラッグアンドドロップ
  •  「ファイル」→「開く」
  •  起動画面の「ファイルを開く」を選択

今回はドラッグアンドドロップで取り込みしますので、
ファイルをSpotfire上にドロップして下さい。

tut_openFile_1

これで読み込みは完了です。

データの確認

取り込んだデータを見てみましょう。
ツールバーに「新規のテーブル」というアイコンがあります。
アイコンをクリックすると、テーブルが表示され、
生データの確認ができます。

tut_openFile_3