Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#イノベーション研究のための実践的データ分析 α. 回帰分析を notebook を使ってやってみよう

#イノベーション研究のための実践的データ分析 α. 回帰分析を notebook を使ってやってみよう

早稲田大学 11号館 801教室 #イノベーション研究のための実践的データ分析 α. 回帰分析を notebook を使ってやってみよう

yasushihara

June 15, 2019
Tweet

More Decks by yasushihara

Other Decks in Education

Transcript

  1. 自己紹介 • Yasushi HARA • 1998-2004 • TOYOTA NATIONAL COLLEGE

    OF TECHNOLOGY • 2000 • Exchange Student in Malaysia • 2002-2009 • CLARAONLINE, INC. • ICT Hosting Company, nowadays called Cloud system supplier • 2009-2015 • Institute of Innovation Research, HITOTSUBASHI UNIVERSITY • 2015-2017 • Science for RE-Designing Science, Technology and Innovation Policy Center, National Graduate Institute for Policy Studies (GRIPS) / NISTEP / Hitotsubashi UNIVERSITY/MANAGEMENT INNOVATION CENTER • 2018-2019 • EHESS Paris – CEAFJP/Michelin Research Fellow • OECD Expert Advisory Group: Digital Science and Innovation Policy and Governance (DSIP) and STI Policy Monitoring and Analysis (REITER) project • 2019- • TDB Center for Advanced Empirical Research on Enterprise and Economy, Faculty of Economics, Hitotsubashi University
  2. 自己紹介(2) • 主な研究テーマ • 大規模データを活用したイノベーションプロセスの解析が現在の主な 研究テーマです。大学あるいは研究機関で生み出された基礎研究が、 特許あるいは論文などの著作物を媒介して企業の研究開発へと活用さ れ、それがどのような経済的・社会的価値を生み出すイノベーション へと結実するか、 •

    複数のデータソースを組み合わせることでその動態を解析しています。 特許、学術論文、財務データベースおよび、企業活動を包括的に記述 したデータベースを相互に結合することで、定量的な解析を行ってい ます。具体的なフィールドとしては、製薬・バイオ産業および再生医 療分野に関連した解析を行ってきました。また、無形資産が果たす役 割についても近年関心を持っています。
  3. Jupyter Notebook のインストール(1) • 1. https://anaconda.com にアクセスし, Python3.7 バージョン の

    [Download] をクリック Windows版 Mac版 ダウンロードが終わるまで待つ。
  4. 今日の notebook Google Colaboratory 版 https://colab.research.google.com/drive/1 qeYXrHXGE5yTxP5SVSvfxK9zmmXnyokD Jupyter Notebook 版

    https://www.dropbox.com/s/xj4uhfr6ycpt4 21/Empirical%20Analysis%20for%20Econo mics%20%232.ipynb?dl=0
  5. Exercise 1: 1+1 = 2 を計算する • Jupyter notebook の

    in: に, 1+1 をタイプする • 2 がout: に出力される
  6. Exercise 2: 3*9-12+14/3 を計算する • Jupyter notebook の in: に,

    3*9-12+14/3 をタイプする • 19.66666… がout: に出力される
  7. Exercise 3(1): sin(1)+cos(2)+tan(3) を計算する Exercise 3(2): 円周率を確認する • Math パッケージをインポートする

    • python の場合, データ処理 etc… を円滑を行うためにはパッケージを インポートします. • ここでは, 数学関数の含まれる math パッケージをインポートして, 続 いて三角関数を計算してみます • Sin(1)+cos(2)+tan(3)を計算する • ついでに, 円周率を確認する • Out に以下の通り出力されます
  8. Panda パッケージを利用してみる • pandas • Python でデータ解析を行うためのパッケージ • Excel の表やSQL

    を直接取り込んで処理するのにピッタリ • データ構造 • 一次元: Series • 二次元: DataFrame (※. 個人的にはよく使います) • 行タイトルや列タイトルがつけられる • 文字列と数字を excel みたいに混在出来る • インポートの方法 • import pandas as pd
  9. Exercise (6): Pandas パッケージで行列を DataFrame に変換する • Pandas パッケージをイン ポートする

    • import pandas as pd • 先程作成した行列c を DataFrame に変換する • Data “F”rame になってるよう にチェック • 出力する • 行番号と列番号が付いているこ とが確認できる
  10. Exercise (6-2): 行番号と列番号を名称変更する • Pandas パッケージをイン ポートする • import pandas

    as pd • 先程作成した行列c を DataFrame に変換する • Data “F”rame になってるよう にチェック • 出力する • 行番号と列番号が付いているこ とが確認できる
  11. Exercise (6-3): 行番号と列番号を名称変更する • 行番号を変更する • df1.columns で指定 • (データフレーム名).変更箇所

    • 列番号を変更する • df1.index で指定 • (データフレーム名).変更箇所 • 出力して確認
  12. 回帰分析 • 変数 X, Y のデータがあるとき, データからY をX で説明する回 帰方程式と呼ばれる式を求めること

    • Y; 被説明変数 • X; 説明変数 • X と Y それぞれの観測数を i とすると、 • = 0 + 1 + , = 1,2, … , と書ける. 0 と1 は未知パラメータ. は誤差項または撹乱項となる.
  13. 回帰分析 (cont.) • 回帰分析における仮定 • Xi は確率変数ではなく, 固定された値をとる • 誤差項は確率変数であり,

    期待値は0 となる. すなわち, E( ) = 0 • 誤差項 と は無相関となる. ( , ) = = 0 • 誤差項の分散は一定となる. ( ) = 2 = 2
  14. 回帰分析 (cont.) • 最小自乗推定量 • ෢ 1 = σ(− ത

    )(−ത ) σ(− ത )2 = σ(− ത ) σ(− ത )2 • ෢ 0 = ത - ෢ 1 ത • ത および ത はそれぞれ , の標本平均となる. • 前述の仮定において, 最小自乗推定量は最良線形不偏推定量を満たす. (ガウス・マルコフの定理) • 決定係数 • 誘導系 (reduced form) の回帰式の説明力を示す値 • R2 = σ(෢ − ത )2 σ(− ത )2 = 1 − σ 2 σ −ത 2 , ℎ = − ෢ 0 - ෢ 1
  15. 単回帰分析を廻してみる • Y=αX+β をベタに求めてみましょう • 決定係数や係数を求める • 使うデータ • 落合博満(ロッテ,

    中日, 巨人, 日本ハム) の打率(X)と年俸(Y) • データソース • https://nipponbaseball.web.fc2.com/personal/batter/ochiai_hiromitsu.html
  16. Exercise (8-2): 単回帰分析を回す • avg とsalary をそれぞれ, Numpy x, yに変換する

    • 回帰分析を lingregress で実施する • 回帰分析の結果を出力する (p値的に, 打率は年俸を説明できて いない可能性)
  17. Exercise (8-3): 単回帰分析を回す • x,y の散布図と回帰曲線を プロットして表示する • どうやら、打率は年俸を説 明出来ていない様子

    • Self Exercise • 打率ではない、別の変数 (Ops やホームラン数) を 引っ張ってきて, 同じように 単回帰を廻してみましょう
  18. Exercise (8-4); 単回帰を回す alternative バージョン • statsmodels.api モ ジュールを使う •

    add_constatnt によって 定数項を追加する • Excel やStata で解析し たのと似たような表が出 力される
  19. 重回帰分析 • 複数の説明変数が被説明変数に影響を与えると推定する • 複数の説明変数を, 1 , 2 , …

    , と表した場合 • = 0 + 1 1 + ⋯ + + , = 1,2, … , と表される. 0 … は未知パラメータとなる. また, は誤差項である. • 仮定 • 説明変数1 , 2 , … , は確率変数ではなく, 固定された値を取る • 誤差項は確率変数であり, 期待値は0 となる. すなわち, E( ) = 0 • 誤差項 と は無相関となる. ( , ) = = 0 • 誤差項の分散は一定となる. ( ) = 2 = 2 • 説明変数は他の変数の一次結合として表すことはできない. すなわち, 0 + 1 1 + ⋯ + = 0 となる 0 , 1 , … , は 0 = 1 = ⋯ = = 0以外に存在しない. このことを, 変数間に多重共線性がないという.
  20. 重回帰分析 (cont.) • それぞれ, 以下の通りベクトルおよび行列を仮定する. • = 1 2 …

    , = 1 ⋯ ⋮ ⋱ ⋮ 1 ⋯ , = 0 1 … , = 1 2 … • 行列表示で表すと, • = + • = 0 • ′ = 2
  21. 重回帰分析 (cont.) • 最小自乗推定量 • ෡ = (′)−′ • 決定係数

    • R2 = σ(෢ − ത )2 σ(− ത )2 = 1 − σ 2 σ −ത 2 , ℎ = − ෢ 0 - ෢ 1 • ところが, 重回帰分析の場合, 説明変数を増やすと誤差項 σ 2 が小さく なり, 結果, 決定係数が大きくなる可能性がある. そこで, 自由度修正済 み決定係数を用いる • 2 = 1 − σ 2/(−−1) σ −ത 2/(−1)
  22. 重回帰分析 (cont.) • 多重共線性 • 0 + 1 1 +

    ⋯ + = 0; = 1,2, … , が成立するとき, 説明変数間に多重共線性があるという. • 多重共線性がある場合, ≠ 0であれば, = − 0 + 1 1 + ⋯ + −1 −1 となり, すなわち, を他の説明変数で説明できる. • 対処方法; • VIF を用い, 多重共線性のチェックを行う
  23. 重回帰分析を行う • サンプルデータ • Scikit-learn の住宅価格データ • ボストンの506地区について, 犯罪率や固定資産税率, 教師あたりの生

    徒数などの属性値と, 住宅平均価格をテーブルに • 目的変数を target, 説明変数を boston に振り分ける
  24. 重回帰分析を行う CRIM 町ごとの人口一人あた りの犯罪率 AGE 1940年以前に建てられ た、所有者が住む建物 の割合 ZN 宅地の比率。25,000平

    方フィート以上のゾー ンで数えた値 DIS ボストンの5つの雇用中 心からの距離 INDUS 町ごとの非小売業の面 積比 RAD 放射状幹線道路からの 距離 CHAS チャールズ川に道がつ ながっているか TAX 固定資産税率 NOX NOx 濃度 PTRATIO 町ごとの教師あたりの 生徒数 RM 住宅あたり部屋数 B 町ごとの黒人比率 LSTAT 低階層人口の比率 MEDV 所有者が住む住宅の価 値の中央値
  25. Exercise(9) 重回帰分析を行う • データセットをsklearn から 取り込む • データを dset に放り込む

    • boston に説明変数を放り込 む • target に被説明変数を放り込 む • 結果をアウトプットする
  26. Exercise(10): VIF 値を確認する • 多重共線性のチェッ ク • statsmodels.stats.ou tliers_influence から

    variance_inflation_fa ctor を使って VIF(Variance Inflation Factor) を チェックする
  27. Extension; パネルデータ解析 • パネルデータ • N 個の主体(人,企業,団体,県,国など)の各々に関して T 期間に わたって観測された

    データ • パネルデータのメリット • (a) データ数が増えることにより,自由度が大きくなるので,推定精度 が向上する. • (b) 主体間の異質性をモデルに取り込むことは,単一の時系列,あるい はクロスセクションのみでは不可能であるが,それが可能になる. • (c) 主体間の異質性は,一般に観測不可能な主体固有の要因であり,そ のような要因以外の全体の関係を分析することが主目的ならば,固有 の要因を除去した分析が可能である. Source: https://www-cc.gakushuin.ac.jp/~20130021/ecmr/panel.pdf
  28. Extension; パネルデータ解析 • = + ′ + (i =1 ,···,N;

    t =1 ,···,T) • このとき, 誤差項 は以下の仮定を満たす. • = 0, = { 2 = かつ = のとき , 0(その他) • ; 未知の係数ベクトル • ′ ; 説明変数の p*1 確率ベクトル • 誤差項との独立性が仮定される (狭義外生性; strict exogeneity) • ; 主体 i に特有の個別効果 (individual effect) Source: https://www-cc.gakushuin.ac.jp/~20130021/ecmr/panel.pdf
  29. Extension; パネルデータ解析 • 固定効果モデル (Fixed Effect Model) • を定数のパラメータと仮定する •

    変動効果モデル (Random Effect Model) • を主体ごとに独立な確率変数と仮定し, • = 0, 2 = 2, = 0 を満たす。
  30. 今日の notebook (その2) Google Colaboratory 版 https://colab.research.google.com/drive/1 h7NY4ByUp5MkB1-eU__Lp8jAwTMLTFiT Jupyter Notebook

    版 https://www.dropbox.com/s/y3xiinmkp6w 6lbj/fifa19%20%E3%81%AE%E3%83%87%E 3%83%BC%E3%82%BF%E3%81%A7%E5%8 D%98%E5%9B%9E%E5%B8%B0%E3%81% A8%E9%87%8D%E5%9B%9E%E5%B8%B0 %E5%88%86%E6%9E%90%E3%82%92%E8 %A1%8C%E3%81%A3%E3%81%9F%E7%B5 %90%E6%9E%9C..ipynb?dl=0
  31. データセット (その1) • FIFA19 Datasets; クロスセクションデータ • https://www.kaggle.com/karangadiya/fifa19 FIFA 19

    に収録されている フットボールプレイヤー選手 の能力値や市場価値をまとめたデータ
  32. 分析について • どれを説明変数/被説明変数にするかはおまかせします • サラリー and/or 市場価値 and/or 能力? •

    ダミー変数の作成などもおまかせします • 必要あれば, 火曜日の講義で補足します
  33. Notebook の解説 やっていること ・Excel にしたデータをJupyter Notebook に取り込む (同じディレクトリにデータを 入れておくこと) ・シートの1枚目

    (0番目) を input_sheet_df にインポートする ・input_sheet_df.head(10) で, データの 10番目までを表示する Messi や Ronaldo, Suarez などのデータ が表示されていることが確認できる
  34. Notebook の解説 やっていること ・説明変数と被説明変数をそれぞれの列か ら取り出す (.iloc [行, 列]で, 行を指定せず 列のみを指定する)

    ・scipy.stats.lingress(説明変数, 被説明変 数) で単回帰を回す ・散布図および, 単回帰分析の結果をアウ トプットする
  35. Notebook の解説 sm.OLS(被説明変数, 定数項+説明変数) で回帰分析 を行い, 結果を表として出力する 被説明変数; overall (ゲーム上での総合評価)

    説明変数; age (年齢) 定数項および説明変数はそれぞれプラスに有意だが, R修正項は高くない。
  36. Notebook の解説 sm.OLS(被説明変数, 定数項+説明変数) で回帰分析 を行い, 結果を表として出力する 被説明変数; wage (年俸)

    説明変数; age (年齢) 定数項はマイナス, 説明変数はプラスに有意だが, R修正項はかなり高くない。
  37. Notebook の解説 • plt.scatter パッケージを用い, wage (年俸)とage(年齢) をプ ロットする •

    30歳までは年俸は上昇してい くが, その後下方トレンドが あることが確認できる • いくつか外れ値があることが 確認できる
  38. Notebook の解説 • Seaborn パッケージで, ヒス トグラムと散布図を同時にプ ロットする • 年齢はF分布,

    年俸はべき乗分 布に近いことが確認できる • 外れ値はメッシやクリスティ アーノロナウドなど.
  39. Notebook の解説 • 同様に, 重回帰分析を sm.OLS パッケージを用いて 行う • 説明変数が空の行を削除する

    (x_list.drop… 以下) • 年齢とレピュテーション, 契 約満期までの残り年数および 評価値はプラスに有意, 定数 項はマイナスに有意, 利き足 ダミーは有意であるとはいえ ないことが確認できる
  40. やってみよう • 被説明変数/説明変数を入れ替える • 異なるデータセットと接合する • 今までのケース in 一橋 •

    FIFA ランキングのデータを持ってきて, 国名をベースにデータセットに統合する • OECD の per capita GDP のデータを持ってきて, 国名をベースにデータセット に統合する • 面白い結果が出たら発表してみましょう
  41. To whom it may concern… • 今日の内容は一橋大学講義「経済学のための実践的データ分 析」の一部を加筆修正したものです • 講義資料は以下にアップロードしているので,

    ご興味あれば御 覧ください • https://speakerdeck.com/yasushihara/ • https://www.slideshare.net/yasushihara • 似たような出張編を, 7月に三田の慶應でも開催予定です.