統計学ブーム
日経情報ストラテジー2013年12月号に「統計学が最強の学問である」著者特別インタビューがあったのでメモ。
「統計学が最強の学問である」の本は立ち読み程度しか読んでいないけれど、記事は面白かった。
最近のバズワード「ビッグデータ」「データサイエンティスト」が気になっていたから。
記事で気になった点は2つ。
一つは、最近のコンピュータ能力の向上のおかげで、プログラマのレベルの人でも統計学という理論を背景に、手持ちの大量データを解析する環境が揃ってきたこと。
10年以上前まで、Excelでグラフ化したり、Excelで財務分析したりするぐらいだった。
でも、今は、業務システムで貯められた大量のトランザクションデータを元に、回帰分析など統計学の手法を使って色んな観点で分析できる。
その時、ビジネス系のエンジニアならば、RDBに関するSQLは必須。
さらに、最近のビッグデータというバズワードを背景としたデータマイニングでは、R言語という統計学用のプログラミング言語が注目されているようだ。
今まで統計学ソフトと言えば、高価なツールしかなく、個人が購入できる代物ではなかった。
また、パソコンが登場するまでは、統計学は机上の空論に近い学問だった。
計算量が多すぎて、紙と手計算では、少しでも複雑になれば不可能に近かったからだ。
統計学は理論として確立されていても、実際の現場では使えず、頭の中でしか理解するしなかった。
しかし、プログラミングというスキルがコモディティ化したことと、最近のコンピュータ能力の向上のおかげで、能力とやる気さえあれば、データマイニングできる環境が揃いつつある。
R言語というオープンソースの言語とツールを導入すれば、世界中の人達が作ったライブラリを利用して、自分が分析したいことを実現できる。
そんな話を聞くと、RDBがコッドの集合論という数学的な理論を元に作られた後、RDBMSが普及することで業務システム開発で一般的な環境になった状況を追いかけている気がする。
統計学という古い学問や理論は既にあるのに、今まではCSVの大量データから傾向分析するための作業が手作業だったので、なかなか現場では使えなかったという背景があったわけだ。
チケット駆動開発がBTSという古いツールを元にタスク管理やソフトウェア開発のプロジェクト管理へ適用できた背景も、統計学とデータ分析の話と同様に、ソフトウェア開発をサポートするツールや環境がようやく最近になって揃ってきたのと同じ。
もう一つは、データ分析という手法が課題解決の手法と密接に絡んでいる点。
記事では例として、医学研究においてがん罹患率や生存率を探求したいが、そのままでは範囲が広く、元データも10年以上蓄積する必要があって現実的でない。
そこで、がん罹患率に直接影響しやすい別の指標、例えば喫煙率で代用して、その傾向を探る方向で分析する。
つまり、解決したい課題に対して、その前提条件に最も関係する変数や指標に着目して、最も効果的な解決方法を見出す手法を取る。
全ての範囲で大量のデータを収集して整理しても、真の解決にはならない。
最も有用であるとおもわれる仮説を立てて、その仮説をデータ分析で実際に検証し、そのフィードバックを受けて仮説を修正し、仮説の正しさを高めていく。
この手法はまさに、フェルミ推定のような問題解決手法や仮説検証スタイルと密接に絡んでいる気がする。
そんな話を聞くと、「創造的論文の書き方」に書かれていた話として、データ分析というデータの精度が高いツールを用いた時に、他の条件の精度を無視して強引な結論を出してしまう危険性を思い出す。
つまり、統計学とデータ分析の手法が強力な道具であったとしても、たった一つの観点におけるデータ分析の結果から、一般にはこういう傾向があるはずだ、とオーバージェネラリゼーション(過大一般化)してしまう罠のことだ。
この話は、ソフトウェア工学における「メトリクスの罠」も連想させる。
だから、いくら統計学やデータ分析が強力な道具であったとしても、論理の飛躍や強引な結論に陥らないように、上手く使いこなすことが大切なのだろう。
僕の考えとしては、Redmineをメトリクス収集ツールとみなした場合、チケットとして蓄積されたデータに対し、統計学の手法を使って分析することで、どのような経験則が得られるのか、を探ってみたいと考えている。
統計学とデータ分析、特にR言語については、今後も調べてみる。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
「ソフトウェア工学」カテゴリの記事
- QAエンジニアの役割は開発チームのガードレールみたいなものという考え方(2023.08.21)
- テストアーキテクチャ設計モデルとJSTQB概念モデルの比較(2023.07.02)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- 「ゲームをテストする バグのないゲームを支える知識と手法」の感想(2023.06.10)
- JSTQBのテストプロセスの概念モデルを描いてみた(2023.05.26)
「チケット駆動開発」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
- Redmineにメンション機能が入るらしい(2022.01.15)
コメント