<jupyter_start><jupyter_text>母集団と標本 - 大きな集団から一部を取り出してきたデータからもとの集団の性質に推測する- とくに推測統計のキーポイントである標本分布について理解するのが目的  4.1 母集団と標本- 母集団：もともと関心の対象であったデータ全体- 標本：その一部を切り出したデータ- 標本抽出：母集団から標本をとりだすこと- 母数:母集団の性質を表す統計的指標（比率、平均、分散、相関係数など）  4.2 推測統計の分類- 推定：具体的な値を用いて「母数の値はこれくらいだろう」という結論を導くもの    - 点推定：1つの値で推定の結果をあらわすもの    - 区間推定：ある程度の幅をもった区間で結果を表す- 検定：母集団についてのべた異なる立場の2つの主張のどちらを採択するかを決めるもの  4.3 点推定  4.3.1 点推定の手順- サンプルサイズ：標本に含まれるデータの個数- 点推定：標本の平均を算出する 例題）17際の日本人男性全体の平均身長の推定<jupyter_code>import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import statistics
%matplotlib inline
# 10人の17歳男性の身長データ
height_list = [165.2, 175.9, 161.7, 174.2, 172.1,
               163.3, 170.9, 170.6, 168.4, 171.3]
# 平均をもとめる
# これが点推定
height_array = np.array(height_list)
np.average(height_array)<jupyter_output><empty_output><jupyter_text>データの平均値の算出には2つの意味がある- 記述統計：データの数値要約のための代表値をもとめること- 推測統計；母平均の点推定をおこなうこと  4.3.2 推定量と推定値- 標本統計量：標本データから計算されるもの    - 平均    - 分散    - 標準偏差    - 相関係数- 同じ平均でも、母集団の平均と標本の平均を区別する必要がある場合には以下の呼び方    - 母平均    - 標本平均- （母数の）推定量：母数を推定するために用いられる標本統計量- 推定値：標本データを用いて計算された推定量の値<jupyter_code># 母集団の身長の分散＝標本の不偏分散
# numpyの場合は標本分散がデフォルト
# 不偏分散を求めたい場合は、ddof=1という指定が必要
np.var(height_array, ddof=1)
# ちなみにddof=1を指定しないと...以下のようになる
np.var(height_array)<jupyter_output><empty_output><jupyter_text>表 母数と推定量 |  母数  |  推定量  |　　推定値 || ---- | ---- | ---- ||  母平均  |  標本平均  | 標本データから計算された標本平均 ||  母分散  |  不偏分散  |  標本データから計算された不偏分散の値 ||  母標準偏差  |  不偏分散の正の平方根  |  標本データから計算された不偏分散の正の平方根の値||  母相関係数　　|  標本相関係数  |  標本データから計算された標本相関係数の値  ||  母比率  |  標本比率  |  標本データから計算された標本比率の値　　|  4.3.3 標本抽出に伴う誤差 - 大事なこと    - 実際の母数の値にどれぐらい近い推定値を得ることができるのか    - 推定の結果はどれぐらい信用できるのか- 標本誤差：抽出された標本データを用いたことが原因で生じる誤差  4.4 推定値がどれぐらいあてになるのかを調べる方法 準備として、標本に含まれる個々のデータの値がどのようにして決まるのかを見ていく1. 標本抽出の方法としての単純無作為抽出1. 単純無作為抽出によって得られるデータの性質としての確率変数1. 確率変数がどのような値をとるのかを示す確率分布1. 確率分布を用いた母集団の表現としての母集団分布1. 代表的な母集団分布である正規分布1. 正規分布の母集団から標本を抽出する方法  4.4.1 標本抽出の方法（単純無作為抽出）- 単純無作為抽出：母集団のなかのどのデータも平等に選ばれる可能性を持っているような標本抽出の方法- 無作為標本；単純無作為抽出によって得られた標本  4.4.2 確率変数- 確率変数：実際に結果が得られるまでどのような値が得られるかが決まっていない変数- 単純無作為抽出によってデータがえられる場合は、その変数は確率変数であるといえる  4.4.3 確率分布- 確率変数は結果を見るまで実際にどんな値が得られるかをあらかじめ知ることはできない- 確率分布：ある確率変数がどのような値をどのような確率でとるかを表した分布- 「確率変数Xは確率分布Aにしたがう」という言い方をする- 確率分布は理論的に決められる<jupyter_code># 乱数の生成
arr = np.random.randint(1, 7, (6000000))
# bincountでやると0も数えようとする
np.bincount(arr)
# カウント
key, cnt = np.unique(arr, return_counts = True)
for k,c in zip(key,cnt):
    print(k,c)<jupyter_output>1 999583
2 1000159
3 999538
4 1001319
5 999441
6 999960<jupyter_text>4.4.4 母集団分布- 母集団分布：ある変数の母集団における分布- 無作為抽出を行った場合、標本として抽出される1つのデータに関する確率分布は、母集団分布とおなじになる- 母集団分布は、母集団からどのような値のデータが抽出されやすいかを示した個々のデータに関する確率分布  4.4.5 正規分布- 左右対称の釣鐘型の分布- 現実世界のなかでもみられる    - ある1つの数値を目標とした作業で生じる偶然的な誤差の分布    - 性別と年齢を固定したときの身長の分布- 数学的に好ましい性質と持っている- 正規分布は、平均と分散（あるいは「標準偏差）がわかれば分布が決まる。<jupyter_code># np.random.normal(平均, 標準偏差, 数)
x = np.random.normal(0, 1, 10000)
plt.hist(x, bins=50)
plt.show()<jupyter_output><empty_output><jupyter_text>4.4.6 正規分布- 標準正規分布：平均0、分散1の正規分布- 確率分布は、確率を面積で表現する- 確率密度関数：確率密度を確率変数の値の関数として表したもの  4.4.7 正規母集団から単純無作為抽出を行う 正規母集団（母集団から正規分布である母集団）から無作為標本を抽出してみる<jupyter_code>x = np.random.normal(50, 10, 5)
plt.hist(x)
plt.show()<jupyter_output><empty_output><jupyter_text>- 正規母集団から無作為抽出によって得られる確率変数は正規分布にしたがうといわれる- ただし、標本データのヒストグラムを見ただけではわからない<jupyter_code>x = np.random.normal(50, 10, 1000)
plt.hist(x, bins=20)
plt.show()<jupyter_output><empty_output><jupyter_text>4.5 標本分布- 標本分布：標本統計量に関する確率分布- 無作為標本に含まれる個々のデータは確率変数- 標本分布は標本における個々のデータの実現値を表した度数分布ではない  4.5.1 標本分布から何がわかるのかどれぐらいあてになる推定値が得られる可能性があるのかを知ることができる 1. 標本分布と母数の本当の値の位置関係が近い場合：推定値が本当の値に近くなる1. 標本分布と母数の本当の位置関係がずれている場合：推定値が本当に値にかすりもしない1. 標本分布の広がりが大きい場合：大きくハズレる可能性がある 標本分布を調べるときの観点- 標本分布が母数の本当の値を中心として分布しているか- 標本分布が横に大きく広がっていないか  4.5.2 標本分布を経験的に求める- 標本分布は数学的に求めることが可能- 現実に母数の推定を行う状況では、母集団からサンプルサイズnの標本を1回だけ抽出して推定値を計算して終わりという場合が多い- 現実的には、標本統計量の実現値は1つか数個しか得られない- 母集団分布が正規分布と仮定することで、検討をすすめる  4.5.3 正規母集団の母平均の推定- 母集団分布は$N(50, 10^2)$であると仮定- サンプルサイズは$n=10$<jupyter_code># 正規分布からサンプルデータを作ってみる
sample = np.random.normal(50, 10, 10)
# データの確認
sample
# 平均
np.average(sample)<jupyter_output><empty_output><jupyter_text>- 運良く推定値が50に近いものが得られることもあれば、運悪く50から離れた推定値が得られることもある- 標本誤差：推定値と母平均の食い違い  4.5.4 標本分布を求める<jupyter_code># n=10の標本抽出を10,000回繰り返して、標本平均がとりやすい値の傾向を見る
avg = []
for i in range(10000):
    sample = np.random.normal(50, 10, 10)
    avg.append(np.average(sample))
plt.hist(avg, bins=20)
plt.show()<jupyter_output><empty_output><jupyter_text>- 実際の母平均である50に近い値が最も多い- 誤差が大きくなるにつれて、そのような推定値が得られることが少なくなっている<jupyter_code>avg_array = np.array(avg)
error = np.abs(avg_array - np.ones(10000) * 50)
bins = np.arange(0, 13, 1)
plt.hist(error, bins=bins)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10620038618322249, 'fraction_numerical': 0.052992919974254454, 'mean_word_length': 6.705785123966942, 'pattern_counts': {'":': 0, '<': 36, '<?xml version=': 0, '>': 36, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '565837', 'license': 'MIT', 'n_tokens_mistral': 3943, 'n_tokens_neox': 3991, 'n_words': 259, 'path': 'code/Chapter4.ipynb', 'repo_name': 'nakashi120/r-easy-stats-by-python', 'size': '4661'}