Pythonは統計学の基礎を学ぶための十分な機能を持っている
――今回、『Pythonで学ぶあたらしい統計学の教科書』を執筆された馬場さんにお話をうかがいます。まずはご自身のことを簡単に教えてください。
馬場:私は大学では水産学部で水産資源解析を専攻し、サンマの来遊量予測とその評価に関する研究をしていました。自分自身の研究以外でも同期の友人や先輩方からデータ分析を依頼されることが多く、そういった要望に応える形で統計学を頻繁に利用していました。いまでも研究者になった友人たちの分析を手伝うことがあります。
卒業後、仕事ではシステム開発など手広く携わってきましたが、最も多くさまざまな方々とのつながりを持てたものは、個人で運営しているLogics of BlueというWebサイトがきっかけかもしれません。
このサイトではR言語やPythonを用いたデータ分析に関する記事を多く上げています。これがご縁で、以前にも『平均・分散から始める一般化線形モデル入門』(プレアデス出版、2015年)や『時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装』(同、2018年)といった統計学・時系列分析の入門書を執筆したことがあります。
――本書ではどのようなことを意識して執筆されたのでしょうか。
馬場:Pythonによる「データ処理」に関する文献は多いのですが、統計学の基礎や統計モデルに焦点を当てた文献は少ないように感じています。そこを補うというのが第一でした。
Pythonといえば機械学習というイメージを持たれる方も多いかもしれません。しかし、seabornを使った美麗なグラフ、scipyの豊富な機能を使った乱数シミュレーションに、statsmodelsを用いた統計モデリングなど、Pythonは統計学の基礎を学ぶための十分な機能を持っています。こういった機能を体系的に学ぶことのできる書籍を目指しました。
また、基礎的な理論の説明にも紙数を割いたのが特徴です。「プログラミング言語で学ぶ統計学」というとライブラリの使い方の説明に終始するイメージがあるかもしれません。しかし、プログラミング言語を使って学習するということは、シミュレーションを自分の手で実装しながら内容を確認できるということでもあります。これは統計学を学ぶにあたってとても大きなメリットと言えます。
そのため、この本では標本分布や区間推定、そして統計的仮説検定におけるp値といった統計学の要所において、積極的にシミュレーションを利用しました。もちろんライブラリも活用したので、単なる学習用教材という枠を超えて、実務的な統計処理においても役に立つ1冊となったはずです。このように、理論と実践のバランスに多くの注意を払いました。より高度な理論書の副読本としても活用できると思います。
データを扱う多くの人たちに統計学の知識や技術は有用
――統計学を学ぶにはいくつか方向性があると思いますが、なぜPythonなのでしょうか。
馬場:なぜPythonか、という質問には2つの立場からの回答があります。著者の私がPythonを選んだ理由、そして読者がPythonを選ぶべき理由です。
著者としては、Pythonの活用範囲を広げたいというのが大きな理由です。先述のとおり、Pythonは機械学習に強い言語です。一方、統計分析に強い言語としてはR言語があります。
いままでは、機械学習を学びたい方がその基礎理論となる統計学を学ぶためには、数式が頻出する理論書を読み込むか、いったんR言語などを介する必要がありました。理想はR言語とPythonの両方を使えることですが、これは初学者としては負担ともなりえます。その負担をなくすためにも「Pythonで学ぶ」統計学の教科書は必要でした。
また、機械学習やPythonに対して何の事前知識もない読者でも、Pythonを選ぶ十分な理由があります。Pythonはユーザーが多いこともあり、さまざまな書籍やWebから多くの良質な情報を得ることができます。そのため、学習コストが低く、応用の幅が広い言語だと言えるでしょう。私はR言語の入門書もいくつか書いていますが、簡単な統計分析であればR言語と比べても遜色ありません。汎用的なプログラミング言語であるPythonを学ぶことは大きな力になるはずです。
もちろんRとPythonは対立するものではありません。より高度な統計モデリングに挑むという際に、改めてR言語を検討するという流れでもよいでしょう。
――Pythonで学べるということで興味を持つ方が多いと思いますが、プログラマー(開発者)にとって統計学はどんなときに役に立つとお考えですか?
馬場:開発者にかかわらず、データを扱う多くの人たちに統計学の知識や技術は有用です。例えば、データの集計や図示の技術を学ぶだけでも「データを読み解くリテラシー」は向上するはずです。こういった技術は記述統計を学ぶことで体系的に得られます。また、リスクや不確実性に対する科学的なアプローチを学ぶことができるのも大きなメリットでしょう。これらは推測統計の知識なしでは活用が困難です。
機械学習を実際に活用している開発者にとっては、機械学習理論の基礎を理解できることが大きなメリットです。ニューラルネットワークを使うが理論は詳しくないという方は、一度基礎に戻って一般化線形モデルを学ぶことを勧めます。
「どのようにして」モデルを組むのかではなく、「なぜ」モデルを組むのか、「なぜ」それが良いことなのかを理解するのが統計学を学ぶということです。基礎を理解することで、手順としてのモデリングから大きく進歩できるはずです。そして予測を最重要視する機械学習ではあまり顧みられない、「解釈」という視点でデータを扱うことができるようにもなるでしょう。一般化線形モデルはそれ自体でも十分に実用的な手法です。ぜひ統計モデリングという技術を自分のものにしてください。
事前の知識はほとんどなくても大丈夫
――改めて、本書『Pythonで学ぶあたらしい統計学の教科書』について教えてください。
馬場:本書は初学者のための統計学の入門書です。統計学とはどのような学問なのかを説明するところからこの本は始まります。記述統計と推測統計の違い、確率変数や確率分布といった基礎的な用語、記述統計の基礎、そして区間推定や統計的仮説検定といった「統計学入門」の内容を第1部~第3部においてコンパクトにまとめました。
古典的な推定・検定の理論に加えて、統計モデルの解説にも紙数を割いています。統計モデルの概要を説明したあと、モデリングを通したデータ分析の実践例へと進みます。尤度と損失関数の関係や変数選択と正則化の対応など、機械学習とのつながりが理解できるようにも配慮しました。
――どういう方に読んでもらいたい本なのでしょうか。
馬場:データを扱う必要があるさまざまな人たちを想定読者としました。これは実験の結果の分析をしたい学生さんでも、業務でデータ扱うビジネスマンでも、もちろん機械学習を用いるエンジニアの方でも同じです。統計学の基礎を学ぶことは大きな力になりますから、実践的なコードが併記された統計学の入門書としてお使いいただければと思います。
それと、Pythonをすでに知っていてその活用範囲を広げたい方や、R言語はある程度使えるがPythonでも分析をしてみたいという方、Excelによるデータ分析からそろそろ卒業したいと思っている方などにもお勧めします。
Pythonや統計学・機械学習に関する事前の知識はほとんどなくても大丈夫です。逆に、統計学に明るい方が本書を読むと物足りなさを覚えるかもしれません。それほどまでに初学者寄りの内容にしています。高校卒業程度(理系クラス)の数学を理解していることが望ましいと言えますが、積分計算や集合の基礎、対数の特性などは、本文中で補足的に説明を加えています。
まずは統計学の大枠を掴む
――統計学を学ぶ際に注意すること、つまずかないためのポイントはありますか?
馬場:統計学でつまずくポイントは人により異なり、それこそ千差万別です。確率変数や確率分布といった概念が分からない、分散の数式が分からない、検定の使い方が分からないなどさまざまでしょう。
しかし、すべてに共通するのは「ある一点が理解できなくなるとそこから先へ進めなくなってしまう」ということです。統計学を最初から完璧に理解するのは難しいかもしれません。まずは統計学の大枠を掴むようにしてください。
本書は一つ一つのテーマ(用語)に関する説明と数式は最小限としました。これは難しいところもありますが、「大枠を掴む」という目的には合致したものだと考えています。まずは用語同士のつながりを理解できるようになりましょう。
ただし、基礎理論を疎かにしていいというわけではありません。重要な個所はシミュレーションを併用していますし、統計的仮説検定におけるp値の解釈などは章を分けてじっくり解説しました。
また、第1部では数式が出てこない章と出てくる章を分け、大枠を掴んでいただいたあとに詳細を説明するという書き方にしてあります。とはいえ、本書だけで統計学の理論を完全に理解するのは難しいかもしれません。適宜、参考文献を掲載しているので、本書で大枠を把握し、そのあとより詳細な議論を学ぶようにするといいでしょう。
――では最後に、「Pythonで統計学」を実践しようとする方にアドバイスをいただけますか?
馬場:Pythonで統計学というと、コードを書くことを中心に考えてしまうかもしれません。Pythonによるデータ処理だけを学んでいたならばなおさらです。しかし、少し立ち止まってデータの特徴を考えるようにしてください。
例えば、バイオリンプロットやペアプロットを描いたり、そもそものデータ同士の関係性に思いを巡らせたり。データから得ることができた「直観」をモデルという構造で表現し、そして推定されたモデルを用いてデータの解釈や予測を行う。このプロセスを大切にしてください。プログラミングはこのプロセスを容易かつ高速にするための道具です。
複雑な分析をしたからこの結果は優れているのだ、と考えるのはよくありません。「なぜ」このデータにはこの分析手法が適しているのか、これを自身で納得したうえで、他者にも説明できるようになるといいのではないかと思います。
本書を読み終わったら、やはり実際のデータを自分の手で分析してみるのがいいでしょう。統計学を学ぶと、データに対する見方が変わります。普段から扱っているデータ、Webから取得できるデータ、そのほかさまざまなデータを実際に分析してみてください。