中心・散らばり・分布の要約
このトピックを終えると
データの中心を説明する平均と中央値、散らばりを説明する標準偏差とIQRを区別できるようになります。Pythonで、同じ中心を持つ二つのデータの分布がどのように異なりうるかを確認し、一つの要約値だけで観測構造を代替しない解釈ができるようになります。
出発点: 平均が同じなら同じデータなのか
二つの条件で測定したoutcomeの平均が同じだとしてみましょう。この事実だけで、二つの条件のデータが似ていると言えるでしょうか。
そうとは限りません。ある条件の値は平均の周辺に集まっており、別の条件では一部の値が遠く離れている場合があります。逆に、平均は異なっていても大部分の観測値が重なることもあります。中心は位置を要約し、散布度は値がどの程度広がっているかを説明し、分布はその2つの情報だけでは捉えきれない形まで示します。
この編の目的は、特定の処理条件の優劣を結論づけることではありません。承認された外部データの代わりに自前で合成した2つのグループを用いて、要約統計量がデータ構造の一つの見方にすぎないことを確認します。
分析単位とデータshapeの確認
前編で確認したとおり、まず一行の意味を確認する必要があります。以下の例では、一行が独立した分析単位から得られた一つのoutcomeであると仮定します。技術的反復を独立した標本として追加していないという前提が必要です。
使用するデータ契約は次のとおりです。
| 列 | 意味 | データ型 | 単位 |
|---|---|---|---|
condition | 比較する条件 | 文字列 | AまたはB |
outcome | 分析対象の測定値 | 実数 | 独自に定義した任意単位 |
実際の研究では、単位、測定時点、欠測、反復構造をさらに記録する必要があります。ここでは中心と散らばりの計算構造を示すために変数の数を減らしました。
中心を要約する二つの観点
平均
観測値をすべて足したうえで観測値の数で割った値が平均です。平均はすべての値の大きさを計算に反映するため、遠く離れた値の影響を受けることがあります。この性質は誤りではなく、平均がデータを要約する方式そのものです。
中央値
値を大きさの順に並べたときに真ん中に位置する値です。観測値の半分がそれより小さいか等しく、残りの半分がそれより大きいか等しいという位置情報を提供します。偶数個であれば真ん中の二つの値によって定義される規則を使います。
中央値が平均より常に優れているわけではありません。問いが平均的な総量や期待水準を求めるのであれば平均が重要な要約になり得ますし、分布の真ん中の位置を見たいのであれば中央値が有用になり得ます。選択はデータと問いの関係によって説明しなければなりません。
散らばりを要約する二つの観点
標準偏差
標準偏差は、観測値が平均を中心にどれだけばらついているかを一つの単位で要約します。平均を基準に計算されるため、大きな値や小さな値の影響を受けることがあります。標準偏差が小さいということは、このデータの値が平均の周辺により集まっているという意味であり、測定が正確である、あるいは生物学的変動が小さいという結論を自動的に保証するものではありません。
四分位範囲(IQR)
IQRは 75 パーセンタイルと 25 パーセンタイルの差です。中央の 50% が占める範囲を表すため、極端値の影響が標準偏差よりも限定的である場合があります。ただしIQRも分布全体を示す値ではなく、裾や複数の peak のような形状は別途の可視化が必要です。
Pythonで合成データを確認する
以下のコードは、特定のデータセットを複製することなく、中心は似ているものの散らばりと極端部が異なる二つの条件を作るための例です。numpyの乱数生成器とpandasのDataFrame・groupby・describe APIは、requirements-lock.txtのバージョンに合わせて検証する必要があります。
import numpy as npimport pandas as pd
rng = np.random.default_rng(20260806)group_a = rng.normal(loc=10.0, scale=0.8, size=20)group_b = np.concatenate([ rng.normal(loc=10.0, scale=0.8, size=18), np.array([6.0, 14.0]),])
data = pd.DataFrame({ "condition": ["A"] * len(group_a) + ["B"] * len(group_b), "outcome": np.concatenate([group_a, group_b]),})
summary = data.groupby("condition")["outcome"].agg( mean="mean", median="median", sd="std", q1=lambda s: s.quantile(0.25), q3=lambda s: s.quantile(0.75),)summary["iqr"] = summary["q3"] - summary["q1"]print(summary.round(2))このコードは入力を2列のDataFrameとして作成し、条件ごとに中心と散布度を計算します。stdはpandasが提供する標準偏差の計算規則を使用するため、実行環境のAPIと既定値を確認したうえで結果を記録する必要があります。summaryは表形式の結果オブジェクトであり、これだけで分布のすべての特徴が表現されるわけではありません。
結果を読む方法
実行結果では、まず条件ごとの平均と中央値の関係を確認します。二つの値が異なる場合、分布の非対称性、または一部の値の影響の可能性を検討できます。次に SD と IQR の大きさを比較します。特定の要約量がより大きい、あるいはより小さいという事実だけで、外れ値を削除したり測定誤差だと判断したりはしません。
このデータは B に大きく離れた二つの値を入れているため、B の散布度の要約が A と異なって現れることがあります。重要なのは、この差が合成データの生成規則から生じたと理解しておくことです。この出力から、どの実際の生物学的条件がより優れていると解釈することはできません。
結果を分布とともに読む
平均と SD は、平均を中心とした位置と広がりを示す一つの要約です。中央値と IQR は、中央の領域の位置と広がりを示す別の要約です。どちらを選ぶかの規則を、データの表面的な形だけを見て自動化することはしません。
少なくとも次の質問をあわせて記録します。
- 一つの行はどのような分析単位か?
- outcome の単位と測定時点は何か?
- 欠損値はあるか?
- 平均と中央値はどれくらい異なるか?
- SD と IQR はどれくらい異なるか?
- 観測値は一つのグループに集まっているか、複数の山や裾があるか?
最後の質問には表だけで答えることは困難です。ヒストグラム、ドットプロット、箱ひげ図のように観測値の位置を示す可視化を併せて用いる必要があります。可視化には軸と単位、観測単位の意味を記載する必要があります。
研究の問いに立ち返って解釈する
この回で言えるのは、「自作の合成データにおいて条件ごとの中心と散布度がどのような計算規則で要約され、要約量が互いに異なる情報を反映している」という程度です。実際の研究における処理効果、生物学的重要性、因果を語るには、研究デザインと測定過程、不確実性、比較の目的をさらに検討する必要があります。
また、標準偏差やIQRが小さいからといって生物学的システムが安定していると断定はしません。測定範囲が狭かったのか、特定の単位を選んだのか、反復構造を誤って要約した可能性も確認する必要があります。統計的要約は問いをより明確にするための道具であり、データの意味を代わりに決定する装置ではありません。
よくある失敗と点検法
平均±SDをすべてのデータの既定表記として使う
平均とSDが有用な状況はありますが、すべての分布がその組み合わせで十分に説明できるわけではありません。中央値・IQRと生データの分布を併せて確認します。
外れ値を自動的に削除する
大きく離れた値は、入力ミス、測定上の問題、実際のばらつきのいずれかである可能性があります。値が目立つという理由だけで除去せず、測定記録と研究目的を確認したうえで処理の理由を記録します。
技術的反復を観測数として積み上げる
前の回で定義した解析単位と反復構造をまず適用します。要約統計量の計算が正確でも、独立した単位を誤って定義すると解釈は変わります。
要約値を分布そのものと取り違える
平均、中央値、SD、IQR はデータの一部の情報を圧縮したものです。異なる分布が似た要約値を持つことがあるため、必要に応じて元データと可視化を併せて確認します。
重要ポイント
- 平均と中央値は中心をそれぞれ異なる方法で要約します。
- 標準偏差と IQR は散らばりを異なる観点から表現します。
- 要約統計量の選択は、問い、単位、分布と併せて説明する必要があります。
- 合成データの実行結果は計算の検証には使えますが、実際の生物学的結論ではありません。
- 一つの要約値は分布全体や独立性の構造を代替できません。
次のトピックへ
次の回では分布を可視化し、外れ値を点検します。中心と散らばりを計算したうえで、データの形状と品質をグラフで確認する段階へ進みます。
参考資料
- NumPy Reference: https://numpy.org/doc/stable/reference/
- pandas User Guide: https://pandas.pydata.org/docs/user_guide/index.html
- ASA GAISE Reports: https://www.amstat.org/education/guidelines-for-assessment-and-instruction-in-statistics-education-%28gaise%29-reports
本編の説明、表、合成データ生成ルールは、BioStatPyが独自に作成した教育用の構成です。外部資料の文章・表現・例の並びを再現するものではありません。