点推定(Python)

 点推定とは?

母集団の平均μと、分散σ^2が未知のときに、標本の値から母集団をピンポイント推定することである。標本平均を推定量として使用する。

 

今回は適当な母集団から標本を抽出したことにする。(N=6)

※母集団は正規分布に従うとする。

データは、[9270, 33662, 18298, 36092, 17745, 7865]を標本抽出した。

 

まずは必要なライブラリを読み込む。

import pandas as pd
import numpy as np
import scipy as sp
from scipy import stats

#グラフ作成
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()

%matplotlib inline
%precision 3

 

numpyを用いてリスト化。

df = np.array([9270, 33662, 18298, 36092, 17745, 7865])

 

実際に点推定を行う。母平均の推定値は標本平均で求まる。

mu = sp.mean(df)

>20488.66

 

母分散の点推定では不偏分散を用いる。(標本分散は点推定に適さない)

bunsan = sp.var(df, ddof=1)#不偏分散

>142908578.26

 

点推定の結果、μ=20488.66、σ^2=142908578.26と母分散を推定することができる。

 

 

↓以下は点推定に関係ありません。

 

求めた推定パラメータを用いて、正規分布に従うヒストグラムを作成する。

mu(標本平均) = 20488.66

sg(普遍標準偏差) = sp.std(df, ddof=1) = 11954.43

 

x = np.random.normal(mu, sg, 10000) #正規乱数を10000件抽出

#ヒストグラムを作成
sns.distplot(x)

このように記入すると正規分布にしたがうヒストグラムを作成することができる。

f:id:me9md:20201119221106p:plain

 

積分布関数を用いて、この分布で値が0以下になる確率を求める。

Pythonではstats.norm.cdf を用いて計算することができる。

stats.norm.cdf(loc = mu, scale = sg, x = 20000)

> 0.043

大体4%前後であることがわかる。 

母集団分布のパラメータががそれぞれmu(μ)、sg(σ)のとき、下側確率2.5%になる点を求める。

この場合、stats.norm.ppfを用いて計算することができる。

 

stats.norm.ppf(loc = mu, scale = sg, q = 0.025)

>-2941.60

stats.norm.ppf(loc = mu, scale = sg, q = 0.975) #上側確率5%

>43918.93

 


下側確率2.5%点はだいたい-2941.60、

上側確率2.5%点はだいたい43918.93にあることがわかる。

 

参考

Pythonで学ぶあたらしい統計学の教科書(馬場 真哉)|翔泳社の本