19 データ分析プログラミング (2)

この講義は、「データ分析プログラミング(1)」のつづきである。

  1. 統計モデルの推定
  2. 文書の作成
  3. 図の作成
  4. 表の作成
  5. 衛生・安全性の確保
  6. エラーへの向き合い方

1. 統計モデルの推定

要点

  • 統計モデルは、データを集約するため・モデルを当てはめるために、「最適化問題」を解いて推定する。
  • 統計モデルを用いるためには、「手法開発者」と「分析実践者」のスペクトラムがある。
  • 分析実践においては、統計分析アルゴリズムは複雑であっても、プロセスが定式化されているため、“grab-and-go”のパッケージで自動化されていることが多い。
  • インプット: (1) データとモデル変数の対応付け、(2) チューニング・パラメータ
    • 補足: チューニング・パラメータについては、デフォルトがパッケージに設定されていることが多い
  • アウトプット: リストとして推定値が出力される
  • パッケージの実行は「自動化」されているが、統計モデルを十分に理解していないために、誤って用いてしまうことが多い

2. 文書の作成

要点

  • 多くのデータ分析レポートにおいて、文が75%、図表が25%ほどとなる
  • データ可視化の目的
    1. 視覚的伝達 … 「百聞は一見に如かず」(A Picture is Worth a Thousand Words.)
    • 実証研究結果を、一つの図(graphical poem)に凝縮させよう
    1. 探索的発見 … 推定値のみでは気づかないパターンがある

3. 図の作成

要点

  • 図の文法 (grammar of graphics) … 図 = データを視覚的要素に対応づけ、座標軸に「形」として配置し、ラベルなどを加えたもの

  • 視覚的要素 = aesthetic mapping

    • x軸、y軸の位置
    • 大きさ/ 形状 … 少し太めに
    • 色彩 … 補足・灰色・パレットの活用/ 色弱・色盲への配慮
  • 幾何学的要素の種類を特定し、ラベルなどを「層」として重ねていく

  • よい図の特徴 = 脳の視覚的情報処理機能の活用

    • デザインの工夫
      • 「無駄な要素」(chart junk)をなくす
      • 強弱をつける
      • パターンをつくる (small multiples)
    • 誇大な・虚偽な印象を与えないこと

なお、ggplot2パッケージを使うためには、ggplot2 cheat sheetがとても便利である。


4. 表の作成

要点

  • カテゴリー変数 x (カテゴリー変数 x) アウトカム変数のデータを表すために適切
  • よい表のための工夫
    • 縦線を入れないこと
    • 横線を減らすこと
    • 数値の桁数を調整すること
  • 回帰表において、統計的優位な場合に**をつけるかどうかについては、「出版バイアス」の観点から、賛否両論がある

5. 衛生・安全性の確保

要素

  • 欠測値 (missing values) / 重複値 (duplicates) … 唯一の正しい対処法はないので、いくつかのパターンで保守的なものを選ぶ

    • 明示的 (explicit)
    • 暗示的 (implicit)
  • 外れ値 (outliers) / エントリーミス … 分布や値の変域を確認する

  • ただ「データを眺める」(browse)する時間も大切である

  • プログラムの一貫性の問題

    • 全体を統括するmasterスクリプトをつくる
  • パッケージの整合性の問題

    • パッケージの関数のマスキング
    • パッケージの誤った更新

6. エラーへの向き合い方

要点

  • “if you haven’t seen error messages, you haven’t been programming.” 誰でも、プログラミングの50%の時間は、エラーへの対応に使う。
  • 確認の原則 … バグへの対応とは、「間違っている箇所が見つかるまで、自分の理解が正しいことを確認していく作業」である。だから、エラーは、自分の理解と技術を磨く砥石である。
    1. どこにエラーがあるか仮説を立てよう
      • エラーメッセージは、問題が発生したときの「ガスの匂いづけ」
    2. エラーについて検索し、周囲に聞こう
    3. 小さなテスト・ケースを書いて、仮説を検証しよう
  • よくあるエラーのパターン
    • オブジェクトの名称の書き間違い、), }, + などの位置や数の間違い
    • データの型や構造が不適切