Python scipy1 インストールから正規分布の確率密度関数をプロットする

はじめに

皆さんこんにちは。ALEXです。Pythonのライブラリの中でデータサイエンティストに絶対必須なライブラリはScipyです。Scipyは数学計算のライブラリが非常に豊富で、数学計算、統計処理のライブラリがたくさん用意されています。全部理解して覚えるのはプログラムの知識だけでなく数学的知識も必要になるのですが、全部使える方はデータサイエンティストのなかであまりいらっしゃらないのではないでしょうか?私は統計オタクなので統計関係のライブラリは大変お世話になっております。 いつかMINITABでやっていることを全部Pythonでやろうと思っています。 このブログは当社のPython個別レッスン塾のオープンライブラリなので、Scipyライブラリの基本的な部分を掲載していきたいと思います。 https://docs.scipy.org/doc/scipy/reference/  

Scipyのインストール

Scipyを使うにあたってはNumpyが必要になりますのでこちらは以下のリンクを参照してください。 numpy1 導入編(インストールから簡単な配列計算) Scipyはpipコマンドでインストールできます。コマンドプロンプト(MACの方はターミナル)で以下のコマンドを実行してください。

いきなり正規分布の確率密度関数?そうですね。もう少しとっつきやすいのから行きましょう。まずは積分を計算します。  

積分

積分はscipy.integrateモジュールのquad()コマンドで計算できます。

quad()は与えられた関数を[積分区間の始まり,積分 区間の終わり]の間で定積分し、2つの値を返します。変数1には積分した結果が、変数2には積分計算をした際の誤差が返されます。 ではY=7X+5の[0,10]の区間の積分を行ってみましょう。

以下の結果が返ります。

早いですね。昔、電卓が出た時と同じですね。(知りませんよ)  

正規分布の確率密度関数

scipyにはこんなものも標準であります。本当に便利ですよ。正規分布の確率密度関数は こんな式で表されます。μ:平均、σ:標準偏差 pythonのmathモジュールを使って、標準偏差の関数を作ることもできます。ですが、scipyのstatsを使えば1行でできます。

x:定義域、loc:平均、scale:標準偏差です。 では正規分布をプロットしてみましょう。  

正規分布をプロット

numpy, scipy, matplotlibをインポートします。 x に定義域のデータ列,yにnorm.pdf 関数の値域を生成します。 matplotlibのプロットコマンドを入力します。

以下の図が返ります。平均:0、標準偏差:1の正規分布の確率密度関数です。

統計が簡単になる?それとも難しくなる?

現在テクノロジーのすさまじい進歩で、数学分野の計算処理がものすごく簡単になりました。高度な数学計算がほとんど数行のプログラムで計算できてしまいます。統計処理もそうです。統計の教科書に書いてあることなんて、いちいち手計算で勉強しなくても、すっとできてしまう。 でもこれって、学ぶ人間にとってはどうなのでしょうか?以前、自動車がマニュアルからオートマになったときに、人間の操作スキルが落ちてしまう、ということが盛んに言われましたが、そうでもないと思います。確かにある程度はブラックボックスにはなるかと思いますが、今まで基礎の部分の習得に費やしていた時間を、応用に振り向けられるので私は肯定的にとらえています。 まあ、有意とか、5%とかαとかβとかはしっかり理解しないといけないですが。