【統計学入門(東京大学出版会)】第11章 練習問題 解答
東京大学出版会から出版されている統計学入門(基礎統計学Ⅰ)について第11章の練習問題の解答を書いていく。
本章以外の解答
本章以外の練習問題の解答は別の記事で公開している。
必要に応じて参照されたい。
11.1
指数分布 は次のように与えられる。
ここから得られる大きさ の標本 は、
であるから、 の最尤推定量は、
より、
と求まる。
11.2
の線型推定量であるから、求める推定量は である。 またこれは不偏性を満たすことを利用すると、求める推定量が となるように の値を決められる。 したがって、
より、 の条件を得る。
また正規母集団の分散を とすると、 の分散は、
となるから、この分散を最小とする は、
より、
であるから、分散の最小の推定量は となる。
11.3
標本平均 は、
である。
標準化
を行うと、その信頼係数95%の信頼区間は、
と表せる。 これを次のPythonプログラムを用いて求める。
from scipy.stats import norm from math import sqrt x1 = -sqrt(4/5) * norm.ppf(q=1-0.025, loc=0, scale=1) + 9.722 x2 = sqrt(4/5) * norm.ppf(q=1-0.025, loc=0, scale=1) + 9.722 print(f"{x1} <= u <= {x2}")
プログラムを実行すると、母平均 の95%信頼区間、
7.968954918846837 <= u <= 11.475045081153162
が得られる。
11.4
標本平均を とする。
を行うと、その信頼係数99%の信頼区間は、
で表され、その幅が1以下であるという条件より、
が得られ、 の条件は、
で表される。 ここから、Pythonプログラム
from scipy.stats import norm x = 36 * norm.ppf(q=1-0.005, loc=0, scale=1)**2 print(f"n >= {x}")
によって、
n >= 238.85627763676368
が得られるため、 は 239以上となる必要がある。
11.5
投薬群の標本平均を 、標本分散を 、母平均を 、標本数を とする。
また、対照群の標本平均を 、標本分散を 、母平均を 、標本数を とする。
母分散が等しいと考えられるため、
は自由度 のスチューデントのt分布に従う。
これを用いると の95%信頼区間は、
となる。
上記を求めるPythonプログラムを次に示す。
import numpy as np from scipy.stats import t from math import sqrt x1 = np.array([7.97, 7.66, 7.59, 8.44, 8.05, 8.08, 8.35, 7.77, 7.98, 8.15]) x2 = np.array([8.06, 8.27, 8.45, 8.05, 8.51, 8.14, 8.09, 8.15, 8.16, 8.42]) x1_bar = x1.mean() x2_bar = x2.mean() m = x1.size n = x2.size s = sqrt((np.sum((x1 - x1_bar)**2) + np.sum((x2 - x2_bar)**2)) / (m + n - 2)) t_val = t.ppf(q=1-0.025, df=m+n-2) print("{} <= u1 - u2 <= {}".format( -t_val * s * sqrt(1/m + 1/n) + (x1_bar - x2_bar), t_val * s * sqrt(1/m + 1/n) + (x1_bar - x2_bar) ))
プログラムを実行すると次の結果が得られる。
-0.44185376487974576 <= u1 - u2 <= -0.010146235120252423
11.6
母分散が等しくないと考えられるため、ウェルチの近似法を利用する。
標準法の標本平均を 、標本分散を 、母平均を 、標本数を とする。
また、簡便法の標本平均を 、標本分散を 、母平均を 、標本数を とする。
このとき、自由度が
に最も近い整数としたときに、
で表されるスチューデントのt分布に従う。
これを用いると の95%信頼区間は、
となる。
これをPythonプログラム
import numpy as np from scipy.stats import t from math import sqrt from decimal import Decimal, ROUND_HALF_UP x1 = np.array([25, 24, 25, 26]) x2 = np.array([23, 18, 22, 28, 17, 25, 19, 16]) x1_bar = x1.mean() x2_bar = x2.mean() m = x1.size n = x2.size s21 = np.sum((x1 - x1_bar)**2) / (m - 1) s22 = np.sum((x2 - x2_bar)**2) / (n - 1) s = sqrt((np.sum((x1 - x1_bar)**2) + np.sum((x2 - x2_bar)**2)) / (m + n - 2)) nu = (s21/m + s22/n)**2 / ((s21/m)**2/(m-1) + (s22/n)**2/(n-1)) nu = int(Decimal(str(nu)).quantize(Decimal('0'), rounding=ROUND_HALF_UP)) t_val = t.ppf(q=1-0.025, df=nu) print(f"nu: {nu}") print("{} <= u1 - u2 <= {}".format( -t_val * sqrt(s21/m + s22/n) + (x1_bar - x2_bar), t_val * sqrt(s21/m + s22/n) + (x1_bar - x2_bar) ))
によって求めると、
nu: 8 0.4417583693791478 <= u1 - u2 <= 7.558241630620852
が得られる。
11.7
i)
標本平均を 、標本分散を 、母平均を 、標本数を としたとき、
が自由度 のスチューデントのt分布に従う。
ここから母平均 の99%信頼区間は、
を求めればよい。
これを求めるPythonプログラムは次のようになる。
import numpy as np from scipy.stats import t from math import sqrt x = np.array([21.8, 22.4, 22.7, 24.5, 25.9, 24.9, 24.8, 25.3, 25.2, 24.6]) x_bar = x.mean() n = x.size s2 = np.sum((x - x_bar)**2)/(n-1) t_val = t.ppf(q=1 - 0.005, df=n-1) print("{} <= u <= {}".format( -sqrt(s2/n) * t_val + x_bar, sqrt(s2/n) * t_val + x_bar ))
上記のプログラムを実行すると、
22.779046896409294 <= u <= 25.640953103590707
が得られる。
ii)
母分散を 、標本分散を 、標本数を としたとき、
が自由度 の 分布に従う。
ここから、母分散 の95%信頼区間は、
を求めればよい。
これを求めるPythonプログラムは次のようになる。
import numpy as np from scipy.stats import chi2 x = np.array([21.8, 22.4, 22.7, 24.5, 25.9, 24.9, 24.8, 25.3, 25.2, 24.6]) x_bar = x.mean() n = x.size s2 = np.sum((x - x_bar)**2)/(n-1) chi2_val_1 = chi2.ppf(q=1-0.025, df=n-1) chi2_val_2 = chi2.ppf(q=1-0.975, df=n-1) print("{} <= sigma2 <= {}".format( s2 * (n-1) / chi2_val_1, s2 * (n-1) / chi2_val_2 ))
上記のプログラムを実行すると次の結果が得られる。
0.9172692525451521 <= sigma2 <= 6.461660438291186
iii)
東京の最低気温の標本平均を 、標本分散を 、母平均を 、標本数を とする。
また、大阪の最低気温の標本平均を 、標本分散を 、母平均を 、標本数を とする。
母集団が等しいと仮定すると、
は自由度 のスチューデントのt分布に従う。
したがって の95%信頼区間は、
を求めればよい。
これを求めるPythonプログラムは次のようになる。
import numpy as np from scipy.stats import t from math import sqrt x1 = np.array([21.8, 22.4, 22.7, 24.5, 25.9, 24.9, 24.8, 25.3, 25.2, 24.6]) x2 = np.array([22.1, 25.3, 23.3, 25.2, 25.3, 24.9, 24.9, 24.9, 24.9, 24.0]) x1_bar = x1.mean() x2_bar = x2.mean() m = x1.size n = x2.size s21 = np.sum((x1 - x1_bar)**2) / (m - 1) s22 = np.sum((x2 - x2_bar)**2) / (n - 1) t_val = t.ppf(q=1-0.025, df=m+n-2) print("{} <= u1 - u2 <= {}".format( -t_val * sqrt(s21/m + s22/n) + (x1_bar - x2_bar), t_val * sqrt(s21/m + s22/n) + (x1_bar - x2_bar) ))
上記のプログラムを実行すると次の結果が得られる。
-1.4272035915681638 <= u1 - u2 <= 0.8872035915681646
11.8
標本数が であるため、中心極限定理が使える。 このとき二項母集団の標本平均は正規分布に従うから、標準化を行うことで標準正規分布に従うことがわかる。
なお、二項母集団 の平均と分散は次の式で表される。
したがって、 の95%信頼区間は、
を求めることができる。 ここで、 は標本平均、 は標本数とした。
Pythonプログラム
from scipy.stats import norm from math import sqrt x_bar = 27 / 50 n = 50 z_val = norm.ppf(q=1-0.025, loc=0, scale=1) print("{} <= p <= {}".format( x_bar - z_val * sqrt(x_bar * (1 - x_bar) / n), x_bar + z_val * sqrt(x_bar * (1 - x_bar) / n) ))
を実行することで、
0.4018538186513706 <= p <= 0.6781461813486295
を得る。
11.9
中心極限定理が使う。 このときポアソン母集団の標本平均は正規分布に従うから、標準化を行うことで標準正規分布に従うことがわかる。
ポアソン分布は再生性により、標本数 のときに に従う。 したがってこの平均と分散は次の式で表される。
したがって、 の99%信頼区間は、
を求めることができる。 ここで、 は標本平均、 は標本数とした。
Pythonプログラム
import numpy as np from scipy.stats import norm from math import sqrt x = np.array([4, 3, 5, 4, 8, 2, 5, 9, 3, 5]) x_bar = x.mean() n = x.size z_val = norm.ppf(q=1-0.005, loc=0, scale=1) print("{} <= lambda <= {}".format( x_bar - z_val * sqrt(x_bar / n), x_bar + z_val * sqrt(x_bar / n) ))
を実行することで、
3.015413109851419 <= lambda <= 6.5845868901485805
を得る。