今回も統計シリーズで母平均の信頼区間推定をPythonでやってみたいと思います。
Pythonのライブラリの中にScipyという科学計算に強いライブラリがあり、こちらを使うと簡単に区間推定ができます。
というわけで、この区間推定の中で一番基本的な母平均の信頼区間推定(母分散:既知の場合)をScipyを使ってやってみましょう!
母分散:既知の場合の母平均信頼区間の復習
まずは母平均の信頼区間について復習しておきましょう。
この記事では、母分散:既知と書いてある通り、母平均の信頼区間を推定するときは、その母集団の確率分布の分散が既知か未知かでやり方が異なります。
母分散が未知の場合はまた別の記事で紹介するとして、本記事では母分散が既知の場合に母平均の区間推定をします。
そもそも信頼区間推定とは
タイトルにも「母平均の信頼区間の計算」と書いていますが、考えてみるとよくわからない表現だと思います。
何のデータを元に何を推定したいのかよくわからないですよね。
ちゃんと表現しておくと、「ある母集団がありその一部の標本からその母集団の平均を推定する」ということです。
なのでこの区間推定では、「母集団からの標本」を対象にするということを理解しておく必要があります。
この記事を読めば、Pythonを使って信頼区間推定の計算はできるようになりますが、そもそもその問題背景・問題設定を理解していないと意味がありませんので注意しましょう。
あと、信頼区間では95%信頼区間などをよく使いますが、この95%信頼区間というのは平均が95%の確率でその区間に入るというわけではありません。
ベイズ信用区間などはこの考えでいいのですが、95%信頼区間といった場合には、
「母集団から標本を取り、その平均から95%信頼区間を計算する作業を100回行ったときに、95回はその区間の中に母平均が含まれるということ」です。
(統計WEB参照→https://bellcurve.jp/statistics/course/8891.html)
母平均は一つですが、標本によってはデータが変わり推定区間が変わるので、このような解釈になると思えばよいです。
Scipyによる母平均の信頼区間推定
では、実際にScipyを使って母平均の信頼区間推定を行っていきましょう。
母分散:既知なので標準正規分布を用いて推定します。
例題
以下の例題をやってみましょう。
「日本人の成人男性100人をランダムに選び、身長を測ったところ、平均身長が171.2cmだった。このとき平均身長の95%信頼区間を求めよ(母分散は7.5^2とし、正規分布に従うとする)。」
Scipyコード
上記の問題をやってみます。
状況として、日本人の成人男性という母集団から100サンプル(標本:X1~X100まで)抽出したときに、その標本分布を用いて平均身長の95%信頼区間を求めます。
今回は母集団の母分散がわかっていて7.5^2だったとします。
母分散がわかっており、さらに母集団は正規分布に従うと書かれているので、標準正規分布を用いて次のようなコードを書けば、信頼区間を求めることができます。
1 2 3 4 5 6 7 8 |
from scipy.stats import norm n = 100 var = 7.5**2 #母分散 se = np.sqrt(var/n) #標準誤差 lower, higher = norm.interval(alpha=0.95, loc=171.2, scale=se) print("{:.2f} < x < {:.2f}".format(lower, higher)) |
一応、手計算でも簡単なので検算してみましょう。
となりますので、これを計算するとちゃんと正しいことがわかります。
1.96という値は標準正規分布の両側2.5%点から取った値です。
この程度でしたら、手計算でも簡単ですが、複雑になってくるとscipyで計算できると簡単です。
一応、使えるようになっておくと良いかと思います。