2018年11月9日0件のコメントGMOアドマーケティングのT.Nです。第9回の勉強会を開催しました。今回は、回帰分析について学んだので、Pythonを使った回帰分析について書きます。今回は、陸上短距離の100mに関する分析を行いました。2004年以降の世界選手権、オリンピックの男子100mの優勝タイムが、どのような要素と関連しているのかを分析しました。今回は、GoogleのColaboratoryで分析を行いました。Notebookのようなものです。スプレッドシートなどのような手軽さで、簡単にPythonを実行できるので便利です。CSVファイルのアップロードColaboratoryに分析に使用するデータのCSVファイルをアップロードします。今回は、ローカルのファイルをアップロードして使用しました。ソースコードは以下のページを参考にしました。length=len(uploaded[fn])))上記の処理を実行すると、以下のように「ファイル選択」というボタンが表示されるので、ボタンを押してアップロードします。pandasでデータを処理するアップロードしたファイルを、pandasを使用して読み込みます。parse_dates=False)display(HTML(df.to_html()))上記の処理により、以下のような表が出力されます。世界レベルの大会ということもあり、2004年以降の優勝タイムは全て9秒台です。このようにして見ると、2008年から2016年までのウサイン・ボルト選手の強さが圧倒的であることが分かります。後に100m、200mでそれぞれ世界歴代2位の記録を出す活躍を見せています。最後にタイソン・ゲイ選手が抜け出たシーンが印象に残っています。ちなみに、ウサイン・ボルト選手は大阪大会では200mで2位でした。pandasでデータを整えただけで、過去のレースの記憶が蘇ってきますね。次の手順で、実際に分析を行いたいと思います。以下のように設定して分析を行いました。優勝した選手の大会当日のシーズンベスト回帰分析は、以下のソースコードで実行できます。dfという変数には、前の手順でpandasで読み込んだデータが入っています。X).fit()model.summary()今回は、以下の2通りの説明変数で分析を行いました。手順3のソースコードを実行すると、以下のような表が出力されます。モデル1の結果モデル2の結果まずは右上の部分に注目します。全変動のうち、回帰値による変動の割合を表すもので、1に近くなるほど、回帰式に説明力があると言えます。0.788という値になっていて、どちらも悪くはないと言えそうです。2の方が、少しだけモデルの当てはまりが良さそうです。次に、各係数の推定値が有意であるかを判断します。係数に関する結果は、中段に出力されます。回帰係数の信頼率95%の信頼区間の下限と上限この場合のt検定は、「回帰係数が0である」という帰無仮説を設定した検定です。回帰係数が0であるというのは、説明変数が目的変数に影響しないということです。この帰無仮説を棄却できれば、説明変数には意味があると考えることができます。有意水準5%の場合は、P値が0.05より小さければ、帰無仮説を棄却できます。今回は、有意水準5%で棄却できるのは、sbのみで、それ以外は棄却できないという結果になりました。モデルの説明変数は、sbのみでも、優勝タイムをある程度説明できると言えそうです。計算量を減らしたい場合などは、説明変数から外しても良さそうです。F検定の結果にも注目します。F検定のP値この場合のF検定は、「全ての回帰係数が0である」という帰無仮説を設定した検定です。この帰無仮説を棄却できれば、少なくとも一つは回帰係数が0ではないと考えることができます。今回は、どちらのモデルでも、有意水準5%で棄却できるので、問題はなさそうです。追い風が強くなるほど、また、反応速度が速くなるほど、タイムが速くなる(回帰値が小さくなる)と考えられるためです。直感的にも正しそうです。風や反応速度よりも影響が大きいのかもしれません。高い、モデル2を採用することにしました。シーズンベスト(括弧の中の値はt値とP値)ところで、先日山口県で日本選手権が開催され、100mでは、山縣選手が勝負強さを見せ、10秒05で優勝しました。今回作成したモデルを、日本選手権の結果に当てはめてみようと思います。10.12以下のように計算しました。4)結果は、10.041となり、優勝タイムの10秒05に近い値になりました。優勝した選手の大会の年の調子が、そのまま大会の記録にも影響しやすいということが分かりました。世界選手権、オリンピックを見る際には、シーズンベストに注目すると良いのかもしれません。まとめ今回は、Pythonを使った回帰分析の方法を紹介しました。重要なのは、結果を見てどう判断するかだと思います。いろいろなデータを分析することで、データの見方を身につけていくのが良いと思いました。@gmoap_engineer本ブログで発信される情報は、各エンジニア個人の見解であり、弊社の公式見解ではありません。本ブログに掲載、引用等をしている商品またはサービス等の名称は、各社の商標または登録商標です。その他の事項について一切責任を負いかねます。発表する情報には注意を払っておりますが、公式発表、見解については、弊社WEBサイトおよびプレスリリースなどをご確認ください。GMOインターネットグループにおけるソーシャルメディア運用ポリシーについては次のページをご確認ください。本ブログに掲載のあるソフトウェアのダウンロードは自己責任で御願い致します。ソフトウェアのダウンロードの結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。本ブログに掲載のあるソフトウェアを扱う際は、各ソフトウェアの公式リファレンスを参照のもとご使用下さい。ソフトウェアの実行の結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。