皆さんご存じの通りEXCELは、すっごく便利でT検定を使ういろんな検定が搭載されています。
その1つの「t検定:等分散を仮定した 2 標本による検定」に注目してみました。
過去の記事でも使っているのですがC#で統計を扱うときは「MathNet.Numerics」が便利です。
一般的な確率分布を使った確率の算出を行うことができます。
「t検定:等分散を仮定した 2 標本による検定」は2つの集合の平均値に差があるかを検定する手法です。
検定統計量は以下の式で定義されます。
MathNet.Numericsを使って、この式をC#で書くと以下となります。
//検定を行うデータ var samples1 = new double[] { 11, 12, 18, 22, 18, 15, 17, 18, 22, 30, 20, 25 }; var samples2 = new double[] { 19, 18, 14, 21, 18, 11, 23}; //σを求める double variance = (samples1.Length - 1) * samples1.Variance() + (samples2.Length - 1) * samples2.Variance(); variance = variance / (samples1.Length - 1 + samples2.Length - 1); //式の分母を求める double stdErr = Math.Sqrt(variance * (1.0 / samples1.Length + 1.0 / samples2.Length)); //t値を求める double t = (samples1.Mean() - samples2.Mean()) / stdErr;
t値が求まったので、t値の発生確率であるp値を求めます。
この時用いるt分布の自由度は、「データの個数の和-2」です。
t分布両側でのp値を求めるコードは以下です。
double pVal = MathNet.Numerics.ExcelFunctions.TDist(t, (int)(samples1.Length + samples2.Length - 2), 2);
今回参考にしている書籍は以下です。
0 件のコメント :
コメントを投稿