IEnumerable<double>
データサンプルがあります。信号/データの 90% 信頼区間を計算したいと考えています。MathNET ライブラリを自由に使用できますが、ライブラリを正しく操作する方法について混乱しています。私のデータを考えると、アイデアは、元の信号の信頼区間を含む 2 つの追加のデータ配列を返すことです
using MathNet.Numerics.Statistics;
using MathNet.Numerics.Distributions;
public static List<double[]> ConfidenceIntervals(IEnumerable<double> sample, double interval)
{
Contract.Requires(interval > 0 && interval < 1.0);
int sampleSize = sample.Count();
double alpha = 1.0 - interval;
double mean = sample.Mean();
double sd = sample.StandardDeviation();
double t, mu;
double[] upper = new double[sampleSize];
double[] lower = new double[sampleSize];
StudentT studentT = new StudentT(mean, alpha, sampleSize - 1);
int index = 0;
foreach (double d in sample)
{
t = studentT.CumulativeDistribution(d);
double tmp = t * (sd / Math.Sqrt(sampleSize));
mu = mean - tmp;
upper[index] = d + mu;
lower[index] = d - mu;
}
return new List<double[]>() { upper, lower };
}
これは数学的には複雑ではありません。MathNET ライブラリで利用できる関数/メソッドを正しく使用する方法について混乱しています。