統計学への応用

Mathematica にはいろいろな統計処理を行なうためのマクロパッケージが 付属している。これ以外にも、多くのパッケージがインターネットで 手に入る。ここではそれらのうち、特に基本的ないくつかについて、 その解説をする。 ここで、あらわれる用語の定義、厳密な証明などは別の本を 参照して欲しい。
まずデータの処理にかかわることから。 最初の命令は次の実行のために必要である。ここでは、平均(=Mean), 分散(=Variance)を求めている。

<< Statistics`DescriptiveStatistics`
data = {5.4,4.6,9.7,5.6,2.3,4.5,6.5}
Mean[data]
Variance[data]

次に得られたデータを平面にプロットする。
機能しない時はもう一度上のdeta=を実行してみよ。 二番目の命令はプロットした点を折れ線でむすんで折れ線グラフを 作成する。いずれの場合でも データは横軸に自動的に番号がふられる。

ListPlot[data]
ListPlot[data,PlotJoined->True]

通常はデータは身長と体重のように2つの組で表わされることがおおい。 このような場合には、つぎのようにして、対応するグラフが描ける。

data={{165,58},{163,53},{171,64},{170,60},{166,65},
{168,57},{173,69},{179,75},
{168,57},{170,60},{161,55},{182,80},{182,78}}
ListPlot[data]

つぎにえられたデータにたいして、直線あるいは曲線をあてはめる。 これは、直線をあてはめる時は線型回帰、曲線の時は非線型回帰と いわれる。これを実行してみる。データは上のデータをそのまま用いる。 次の一行目は回帰直線をあたえる。
これは数学的には最小2乗法で直線とデータの全体の誤差を最小にするように きめられた直線である。一行目は直線の方程式をあたえる。 2行目は直線のグラフを描いている。4行目はデータと回帰直線の 方程式を同じグラフ上に描いている。
ここで回帰直線はデータの値を予測するものではないことを注意する。 それはデータへの直線のあてはめであって、 予測については統計理論によらなければならない。

a = Fit[data,{1,x},x]
b = Plot[a,{x,150,185}
gp = ListPlot[data]
Show[gp,b]

同じようにして、非線型回帰、すなわち、データへの高次曲線の あてはめをおこなう。まず放物線をあてはめる。以下は前と同様である。 コピーをもちいて同じグラフを描いてみよ。
ここで{1,x,x^2},x はあてはめる関数の基底をあたえる。 すなわち、1, x, x^2を用いることをあらわす。回帰平面の ところも参照のこと。Show命令はPlot, ListPlot命令で 得られた2つのグラフィック要素 gp, bを同時に表示している。

a = Fit[data,{1,x,x^2},x]
b = Plot[a,{x,150,185}
gp = ListPlot[data]
Show[gp,b]

より高次の5次のあてはめの例を次に与えておく。

Fit[data,Table[x^i,{i,0,5}],x]

この場合にデータをプロットして、あてはめ曲線との関係を図示してみよ。 つぎにさらに高次の場合にはどうなるか。 一般的には高次のあてはめを用いればよりデータにあった曲線が得られる。 これを確認せよ。
しかしながら、多くのデータを用いる場合高次のあてはめは 莫大な計算となるので注意が必要である。それは多くの費用が必要である。 多くの場合、さらに得られたデータの回帰直線あるいは回帰曲線 をもとになにかの結論を引き出すのはかなり慎重にしなければ ならない。推定とそれに関する数学的な事実に関しては統計学の本を参考のこと。
次に2つの変数にたいして、ある値が対応するような場合の平面のあてはめを する。このような場合、この平面は回帰平面といわれる。 この時、データの形は(x,y,z)のようになっており、変数 x,y に対する 値が、zで与えられる。 このようなデータにたいし、それにあう折れ線の代わりに多面体を表示する のが、ListPlot3D である。次の行では回帰平面をもとめる。 求めた平面を最後に表示する。 この場合も計算自体は前と同様である。 次の例を参照のこと。
data2 = {{4.3,2,6},{7,6,21},{6,8,23},
{2.9,6.2,7},{2,0,7},{5,1,12},{8,8,30},
{3,7,16},{7,3,20},{6,0,18}}
gp = ListPlot3D[data2]
fa = Fit[data2,{1,x,y},{x,y}]
Plot3D[fa,{x,0,10},{y,0,5}]

すこし、命令について説明をすると、ListPlot3Dは前に説明した通りであるが、 その中の{x,0,10},{y,0,5}は表示範囲をあたえる。その一行前の Fit命令の中の
{1,x,y},{x,y}はあてはめる関数の基底をあたえる。
データからグラフを作成する。通常は便利なグラフ作成ソフトがあるが ここでは次のようにする。 それぞれ、棒グラフ、円グラフを作成できる。 もっと詳しいオプションについてはマニュアルを参考のこと。

<< Graphics`Graphics`
data = {5.4,4.6,9.7,5.6,2.3,4.5,6.5}
BarChart[data];
PieChart[data];

次に統計学で最も重要な分布の確率密度関数について、 そのグラフを確認してみよう。 その数学的な表現は例えば本を参照のこと。 最初はマクロを読み込むために必要である。 次の行は平均0分散1の正規分布をxが-5から5まで描いている。 つぎは分散を1 から増加させてグラフの変化を観察している。 この時、分布の変化を観察せよ。ここで、PDF[ ,x]は xを変数とする確率密度関数をあたえる。
<< Statistics`ContinuousDistributions`
Plot[PDF[NormalDistribution[0,1],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,1.2],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,1.5],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,1.8],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,2],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,2.5],x],{x,-5,5}]
Plot[PDF[NormalDistribution[0,3],x],{x,-5,5}]
正規分布において x= -nx=n の直線と分布関数および横軸にかこまれた 部分の面積は推定、検定において重要である。
このような面積を簡単に計算できる。 以下の例では特別な場合を計算したが、nを0.01 きざみで 計算すればいわゆる正規分布表である。ここで用いている これは読者にまかせることにする。ここで NIntegrate 命令は数値積分を実行する命令である。
積分範囲は NIntegrate[...,{x,-1,1}] のように括弧の中に指定する。 積分範囲は無限積分も実行できる。 これについては積分の項を参照のこと。 数値積分の精度、収束など高度な注意に関することは マニュアルを参照のこと。

NIntegrate[PDF[NormalDistribution[0,1],x],{x,-1,1}]
NIntegrate[PDF[NormalDistribution[0,1],x],{x,-2,2}]
NIntegrate[PDF[NormalDistribution[0,1],x],{x,-3,3}]
NIntegrate[PDF[NormalDistribution[0,1],x],{x,-4,4}]
NIntegrate[PDF[NormalDistribution[0,1],x],{x,-5,5}]

もっと細かい値を計算してみよ。 このような確率は検定で重要である。
次の分布は自由度がnのカイ2乗分布である。この分布は正規分布にしたがうことがわかっている ような母集団の分散の検定に用いる。 ここではこのグラフの形を表示する。この分布は自由度とよばれる パラメータをひとつ持つ。 これを変化させて、グラフの形を確認しよう。

Plot[PDF[ChiSquareDistribution[1],x],{x,0.01,4},PlotRange->All]
Plot[PDF[ChiSquareDistribution[2],x],{x,0.01,5}]
Plot[PDF[ChiSquareDistribution[3],x],{x,0.01,8}]
Plot[PDF[ChiSquareDistribution[4],x],{x,0.01,9}]
Plot[PDF[ChiSquareDistribution[5],x],{x,0.01,10}]

この分布はnが十分大きい時、n >100ならば正規分布と 形が似てくる。 これを確認するため、上の分布でnを十分に大きくとって、 グラフを描いてみよ。
ただし、その平均はnと共に、増加するので、グラフを描く範囲を 工夫しなければならない。 これについての正確な理論は数理統計学の本を参照のこと。
次の分布はStudentのt分布といわれ、正規分布に従う母集団からの 小標本の平均の 分布に関連してあらわれる。 これは自由度といわれる自然数のパラメータをひとつ持つ。 このパラメータは前述の標本数から1を引いた数に等しい。
Plot[PDF[StudentTDistribution[1],x],{x,-5,5}]
Plot[PDF[StudentTDistribution[2],x],{x,-5,5}]
Plot[PDF[StudentTDistribution[3],x],{x,-5,5}]
Plot[PDF[StudentTDistribution[4],x],{x,-5,5}]
Plot[PDF[StudentTDistribution[5],x],{x,-5,5}]

この分布関数が自由度が大きい時、正規分布に近づくことを次のようにして、 確認する。くり返し、命令 Do[ {n,1,10}] はnを1から10まで 繰り返して、括弧内の演算を繰り返すことをあらわす。 この命令は3次元グラフの作成のところでも、用いられた。
Do[
Plot[{PDF[StudentTDistribution[2 n],x],
PDF[NormalDistribution[0,1],x]},{x,-5,5}], {n,1,10} ]

これはt分布を自由度を変えながら、正規分布と同時に描く。 2つのグラフがしだいに一致することがわかるだろう。 これはt分布に関する重要な定理の反映である。
次の分布はF分布ベータ分布である。 これらは検定で重要である。 F分布は2つの自然数のパラメータをもつが、 分布はかなり異なる。これらは 以下のグラフを表示するとわかるだろう。
Plot[PDF[BetaDistribution[2,8],x],{x,-1,1},PlotRange->All]
Plot[PDF[BetaDistribution[2,2],x],{x,-1,2},PlotRange->All]
Plot[PDF[BetaDistribution[3,2],x],{x,-1,2},PlotRange->All]
Plot[ PDF[FRatioDistribution[1,2],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[1,5],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[4,8],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[4,12],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[4,16],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[16,4],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[20,4],x],{x,0.01,10}]
Plot[ PDF[FRatioDistribution[4,20],x],{x,0.01,10}]

F分布の2つのパラメータを入れ替えると分布は異なる。これを 以下のようにして確認する。

Plot[ {PDF[FRatioDistribution[4,20],x],
PDF[FRatioDistribution[20,4],x]},{x,0.01,10}]
F分布から NIntegrate命令を用いて、ある種の確率を 容易に計算できる。実際、統計学の本にはこのような 表がついている。正規分布の時の計算を参考にして、 このような確率を計算せよ。場合によってはこの方がより詳しい 値を与えることがわかる。
戻る