始める無料で始める

遺伝率を測る

ピアソンの相関係数は、共分散を2つのデータセットの分散の幾何平均で割った比でした。これは親と子の相関を測る指標ですが、遺伝率の推定としては最適ではないかもしれません。立ち止まって考えると、遺伝率は「親と子の共分散」を「親のみの分散」で割った比として定義するほうが理にかなっています。この演習では、遺伝率を推定し、ペア・ブートストラップにより 95% 信頼区間を求めます。

この演習は非常に重要な点を強調します。統計的推測(および一般的なデータ分析)は、公式に当てはめて機械的に計算するだけの作業ではありません。データで答えたい問いをよく考え、それにふさわしい分析を行う必要があります。形質の遺伝のしやすさに関心があるなら、既製の統計量であるピアソンの相関係数よりも、ここで定義した遺伝率のほうが適切です。

データは bd_parent_scandensbd_offspring_scandensbd_parent_fortisbd_offspring_fortis に格納されています。

この演習はコースの一部です

Pythonで学ぶ統計思考(パート2)

コースを見る

演習の手順

  • 親と子の形質の共分散を親の形質の分散で割った比として定義される遺伝率を計算する関数 heritability(parents, offspring) を作成してください。ヒント: このコースの前編で扱った np.cov() 関数を思い出してください。
  • この関数を使って、G. scandensG. fortis の遺伝率を計算してください。
  • G. scandensG. fortis について、ペア・ブートストラップを用いて遺伝率のブートストラップ標本を 1000 個取得してください。
  • 得られたブートストラップ標本から、両方の 95% 信頼区間を計算してください。
  • 結果を出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def heritability(parents, offspring):
    """Compute the heritability from parent and offspring samples."""
    covariance_matrix = np.cov(parents, offspring)
    return ____ / ____

# Compute the heritability
heritability_scandens = ____
heritability_fortis = ____

# Acquire 1000 bootstrap replicates of heritability
replicates_scandens = draw_bs_pairs(
        ____, ____, ____, size=____)
        
replicates_fortis = draw_bs_pairs(
        ____, ____, ____, size=____)


# Compute 95% confidence intervals
conf_int_scandens = ____
conf_int_fortis = ____

# Print results
print('G. scandens:', heritability_scandens, conf_int_scandens)
print('G. fortis:', heritability_fortis, conf_int_fortis)
コードを編集して実行