区間推定をPythonで解く

目的

前回の続きです。


区間推定の問題をPythonを使って解いていきます。
実際の計算手順を意識します。

区間推定を直接返すライブラリは使いません。(未学習です。)

インポートするもの

import numpy as np
import scipy.stats as stats

母分散が分かっている場合の、母平均の区間推定

母集団は正規分布に従うとする
Zは標準正規分布

前提条件

#標本の個数
n = 9
#標本分散
x_bar = 10
#母分散
sigma_m = 16
#有意水準
alpha_r = 0.05
#信頼係数
level_s = 1 - alpha_r 

信頼区間の推定


$$ \bar{ X } -Z_{(\frac{\alpha}{2})} \sqrt{ \frac{ \sigma^2 }{ n }} \leq \mu \leq \bar{ X } + Z_{(\frac{\alpha}{2})}\sqrt{ \frac{ \sigma^2 }{ n }} $$

z = abs(stats.norm.ppf(alpha_r/2))  #標準正規分布
z_value =  np.sqrt(sigma_m)/np.sqrt(sigma_m) 
#下限
theta_1 = x_bar - z_value *z 
#上限
theta_2 = x_bar + z_value *z 
print("信頼区間\n{0}<μ<{1}".format(theta_1 ,theta_2))

答え

母分散が分かってない場合の、母平均の区間推定

母集団は正規分布に従うとする
Tは、自由度(n-1)のt分布に従う

前提条件

x = [9.8, 10.3, 11.9, 8.7, 8.5, 10.2, 10.9, 8.2, 9.4, 10.5]
n = len(x)
#標本平均は同じ
x_bar = np.mean(x)
#標本分散は、n-1で割るので、母分散と計算が異なる
s2_x = np.var(x, ddof=1)
#標本標準偏差も同様です
s_x = np.std(x, ddof=1)
#有意水準
alpha_r = 0.05

信頼区間の推定

$$\bar{ X } -t_{(\frac{\alpha}{2}, n-1)} \sqrt{ \frac{ S^2 }{ n }} \leq \mu \leq \bar{ X } + t_{(\frac{\alpha}{2}, n-1))}\sqrt{ \frac{ S^2 }{ n }} $$

t = abs(stats.t.ppf(alpha_r/2, df = n-1))
#下限
theta_1 = x_bar - t*(s_x/np.sqrt(n))
#上限
theta_2 = x_bar + t*(s_x/np.sqrt(n))
print("信頼区間\n{0} < μ < {1}".format(theta_1,theta_2))

答え

母分散の区間推定

母集団は正規分布に従うとする
χは、自由度m=(n-1)のカイ2乗分布に従う

前提条件

x = [9.8, 10.3, 11.9, 8.7, 8.5, 10.2, 10.9, 8.2, 9.4, 10.5]
n = len(x)
#標本平均は同じ
x_bar = np.mean(x)
#標本分散は、n-1で割るので、母分散と計算が異なる
s2_x = np.var(x, ddof=1)
#標本標準偏差も同様です
s_x = np.std(x, ddof=1)
#有意水準
alpha_r = 0.05

信頼区間の推定

$$ \frac{(n-1) S^2 }{\chi^2_{(1-\frac{\alpha}{2}, m)}} \leq \sigma^2 \leq \frac{(n-1) S^2 }{\chi^2_{(\frac{\alpha}{2}, m)}} $$

chi_2_1 = stats.chi2.ppf(alpha_r/2, df = n-1)
chi_2_2 = stats.chi2.ppf(1-(alpha_r/2), df = n-1)

#下限
theta_1 = ((n-1) * s2_x )/chi_2_2
#上限
theta_2 = ((n-1) * s2_x ) / chi_2_1

print("信頼区間\n{0} < σ2 < {1}".format(theta_1,theta_2))

答え

参考書