メインコンテンツ

fishertest

フィッシャーの正確確率検定

説明

h = fishertest(x)x の 2 つのカテゴリカル変数の間に非無作為な関連性があるという対立仮説に対して、非無作為な関連性がないという帰無仮説のフィッシャーの正確確率検定を行なった結果を返します。検定で帰無仮説が有意水準 5% で棄却された場合、結果 h1、それ以外の場合は 0 になります。

[h,p,stats] = fishertest(x) は、検定の pp と追加の検定結果を含む構造体 stats も返します。これには、オッズ比率とその漸近的な信頼区間が含まれます。

[___] = fishertest(x,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、検定の判定を返します。たとえば、検定の有意水準を変更したり、片側検定を実行することができます。

すべて折りたたむ

小規模の調査で、研究者は 17 人の対象者に今年インフルエンザの予防接種を受けたかどうか、またこの冬にインフルエンザに感染したかどうかを質問しました。結果は、インフルエンザの予防接種を受けなかった 9 人のうち、3 人がインフルエンザに感染し、6 人は感染しなかったことを示しています。インフルエンザの予防接種を受けた 8 人のうち、1 人はインフルエンザに感染しましたが、7 人は感染しませんでした。

調査データを含む 2 行 2 列の分割表を作成します。行 1 はインフルエンザの予防接種を受けなかった人のデータを、行 2 は予防接種を受けた人のデータを含みます。列 1 はインフルエンザに感染した人の数、列 2 はインフルエンザに感染しなかった人の数を含んでいます。

x = table([3;1],[6;7],'VariableNames',{'Flu','NoFlu'},'RowNames',{'NoShot','Shot'})
x=2×2 table
              Flu    NoFlu
              ___    _____

    NoShot     3       6  
    Shot       1       7  

フィッシャーの正確確率検定を使用して、インフルエンザ予防接種を受けることとインフルエンザの感染の間に無作為ではない関連性があるかどうかを判定します。

h = fishertest(x)
h = logical
   0

返された検定の判定 h = 0 は、既定の 5% の有意水準においてカテゴリカル変数の間に非無作為な関連性がないという帰無仮説を、fishertest が棄却しないことを示しています。したがって、検証結果に基づき、インフルエンザ予防接種を受けなかった人がインフルエンザに感染するオッズは、予防接種を受けた人と異なりません。

小規模の調査で、研究者は 17 人の対象者に今年インフルエンザの予防接種を受けたかどうか、またインフルエンザに感染したかどうかを質問しました。結果は、インフルエンザの予防接種を受けなかった 9 人のうち、3 人がインフルエンザに感染し、6 人は感染しなかったことを示しています。インフルエンザの予防接種を受けた 8 人のうち、1 人はインフルエンザに感染しましたが、7 人は感染しませんでした。

x = [3,6;1,7];

フィッシャーの正確確率検定の右側検定を使用して、インフルエンザ予防接種を受けなかった対象者がインフルエンザにかかる可能性が予防接種を受けた人よりも高いかどうかを判定します。有意水準 1% で検定を実行します。

[h,p,stats] = fishertest(x,'Tail','right','Alpha',0.01)
h = logical
   0

p = 
0.3353
stats = struct with fields:
             OddsRatio: 3.5000
    ConfidenceInterval: [0.1289 95.0408]

返された検定の判定 h = 0 は、1% の有意水準においてカテゴリカル変数の間に非無作為な関連性がないという帰無仮説を、fishertest が棄却しないことを示しています。これは右側仮説検定であるため、インフルエンザ予防接種を受けない人がインフルエンザに感染するオッズは、予防接種を受けた人よりも高くないという結論になります。

病院データを読み込みます。

load hospital
hospital = dataset2table(hospital)
hospital=100×7 table
                 LastName       Sex      Age    Weight    Smoker    BloodPressure        Trials     
               ____________    ______    ___    ______    ______    _____________    _______________

    YPL-320    {'SMITH'   }    Male      38      176      true       124     93      {[         18]}
    GLI-532    {'JOHNSON' }    Male      43      163      false      109     77      {[   11 13 22]}
    PNI-258    {'WILLIAMS'}    Female    38      131      false      125     83      {1×0 double   }
    MIJ-579    {'JONES'   }    Female    40      133      false      117     75      {[       6 12]}
    XLK-030    {'BROWN'   }    Female    49      119      false      122     80      {[      14 23]}
    TFP-518    {'DAVIS'   }    Female    46      142      false      121     70      {[         19]}
    LPD-746    {'MILLER'  }    Female    33      142      true       130     88      {[         13]}
    ATA-945    {'WILSON'  }    Male      40      180      false      115     82      {1×0 double   }
    VNL-702    {'MOORE'   }    Male      28      183      false      115     78      {[          2]}
    LQW-768    {'TAYLOR'  }    Female    31      132      false      118     86      {[         11]}
    QFY-472    {'ANDERSON'}    Female    45      128      false      114     77      {[    8 10 14]}
    UJG-627    {'THOMAS'  }    Female    42      137      false      115     68      {[        4 9]}
    XUE-826    {'JACKSON' }    Male      25      174      false      127     74      {1×0 double   }
    TRW-072    {'WHITE'   }    Male      39      202      true       130     95      {[          8]}
    ELG-976    {'HARRIS'  }    Female    36      129      false      114     79      {1×0 double   }
    KOQ-996    {'MARTIN'  }    Male      48      181      true       130     92      {[13 15 21 27]}
      ⋮

hospital データセット配列には病院患者 100 人の、姓、性別、年齢、体重、喫煙状況、収縮期および拡張期の血圧測定値を含めたデータがあります。

喫煙状況が性別と独立しているかどうかを判定するには、crosstab を使用して喫煙者と非喫煙者の性別でグループ化された 2 行 2 列の分割表を作成します。

[tbl,chi2,p,labels] = crosstab(hospital.Sex,hospital.Smoker)
tbl = 2×2

    40    13
    26    21

chi2 = 
4.5083
p = 
0.0337
labels = 2×2 cell
    {'Female'}    {'0'}
    {'Male'  }    {'1'}

生成される分割表 tbl の行は患者の性別に対応し、行 1 には女性、行 2 には男性のデータが含まれています。列は患者の喫煙状況に対応し、列 1 には非喫煙者、列 2 には喫煙者のデータが含まれています。返された結果 chi2 = 4.5083 は独立性に対するカイ二乗検定のカイ二乗検定統計量の値です。返された値 p = 0.0337 は、カイ二乗分布に基づく p 値の近似値です。

crosstab によって生成された分割表を使用して、データに対するフィッシャーの正確確率検定を実行します。

[h,p,stats] = fishertest(tbl)
h = logical
   1

p = 
0.0375
stats = struct with fields:
             OddsRatio: 2.4852
    ConfidenceInterval: [1.0624 5.8135]

結果 h = 1fishertest が有意水準 5% における喫煙状況と性別の間に関連付けがないという帰無仮説を棄却することを示します。つまり、性別と喫煙状況には関連付けがあります。オッズ比率から、男性患者が喫煙者であるオッズは女性患者の約 2.5 倍であることがわかります。

返された検定の pp = 0.0375 は、crosstab で取得した結果に近くなっていますが、厳密には同じではありません。これは、fishertest が標本データを使用して厳密な p 値を計算するのに対して、crosstab はカイ二乗近似を使用して p 値を計算するためです。

入力引数

すべて折りたたむ

分割表。非負の整数値を含む 2 行 2 列の行列または表として指定します。分割表は標本データの変数の頻度分布を含みます。crosstab を使用して標本データから分割表を生成できます。

例: [4,0;0,4]

データ型: single | double

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'Alpha',0.01,'Tail','right' では、有意水準 1% で右裾仮説検定を指定します。

仮説検定の有意水準。'Alpha' と、(0,1) の範囲内のスカラー値で構成されるコンマ区切りのペアとして指定します。

例: 'Alpha',0.01

データ型: single | double

対立仮説のタイプ。'Tail' と以下のいずれかで構成される、コンマ区切りのペアとして指定します。

'both'両側検定。対立仮説は x の 2 つの変数の間に非無作為な関連性があるとして、オッズ比率は 1 と等しくありません。
'right'右側検定。対立仮説ではオッズ比率が 1 よりも大きくなります。
'left'左側検定。対立仮説ではオッズ比率は 1 よりも小さくなります。

例: 'Tail','right'

出力引数

すべて折りたたむ

論理値として返される仮説検定の結果。

  • h1 の場合、fishertest は有意水準 Alpha での帰無仮説を棄却します。

  • h0 の場合、fishertest は有意水準 Alpha での帰無仮説を棄却できません。

検定の p 値。[0,1] の範囲のスカラー値として返されます。p は、帰無仮説に基づく観測値と同様に、極端な検定統計量、またはより極端な検定統計量が観測される確率です。p の値が小さい場合、帰無仮説の妥当性に問題がある可能性があります。

検定データ。以下のフィールドを含む構造体として返されます。

  • OddsRatio — 2 つの変数間の関連付けの測定値。

  • ConfidenceInterval — オッズ比率の漸近的な信頼区間。x の任意のセル度数が 0 の場合、fishertest は信頼区間の計算を実行せず、代わりに [-Inf Inf] を表示します。

詳細

すべて折りたたむ

バージョン履歴

R2014b で導入