- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 IEnumerable<double>
数据样本。我想计算信号/数据的 90% 置信区间。我有 MathNET library由我支配,但我对如何正确使用图书馆感到困惑。鉴于我的数据,我的想法是返回两个包含原始信号置信区间的附加数据数组
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 library 中可用的函数/方法感到困惑。 .
最佳答案
我不完全确定我理解信号的置信区间应该如何应用于信号的每个样本,但我们可以按如下方式计算样本集的置信区间:
public static Tuple<double, double> A(double[] samples, double interval)
{
double theta = (interval + 1.0)/2;
double mean = samples.Mean();
double sd = samples.StandardDeviation();
double T = StudentT.InvCDF(0,1,samples.Length-1,theta);
double t = T * (sd / Math.Sqrt(samples.Length));
return Tuple.Create(mean-t, mean+t);
}
除了我们计算 T 的行没有编译,因为不幸的是,当前的 Math.NET Numerics 中还没有 StudentT.InvCDF
。但我们仍然可以同时对其进行数值评估,作为一种解决方法:
var student = new StudentT(0,1,samples.Length-1);
double T = FindRoots.OfFunction(x => student.CumulativeDistribution(x)-theta,-800,800);
例如,使用 16 个样本和 alpha 0.05,我们得到预期的 2.131。如果有超过 ~60-100 个样本,这也可以用正态分布来近似:
double T = Nomal.InvCDF(0,1,theta);
总而言之:
public static Tuple<double, double> B(double[] samples, double interval)
{
double theta = (interval + 1.0)/2;
double T = FindRoots.OfFunction(x => StudentT.CDF(0,1,samples.Length-1,x)-theta,-800,800);
double mean = samples.Mean();
double sd = samples.StandardDeviation();
double t = T * (sd / Math.Sqrt(samples.Length));
return Tuple.Create(mean-t, mean+t);
}
这还不是完整的答案,因为我知道您想以某种方式将置信区间应用于每个样本,但希望它有助于实现目标。
PS:使用 Math.NET Numerics v3.0.0-alpha7
关于c# - 使用 MathNET 的置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802761/
我正在尝试使用 MathNumerics 线性代数库在 .net 中实现逻辑回归。我需要实现以下等式,但不确定如何通过矩阵提高 e。 1.0 ./(1.0 + E .^ (-1 .* Z)) 其中 Z
我最近开始使用 MathNET 库,它很棒。我正在大量使用矩阵和向量。该库运行良好,但我发现我必须一直使用转换;这方面的一个例子是: using MathNet.Numerics.LinearAlge
我正在做一个需要在其中使用线性代数方法的项目。我决定使用 MathNet Numerics 库,我想将矩阵乘以向量。我在 MathNet 中找不到可以执行此操作的函数。如何将矩阵乘以向量? 最佳答案
我想使用 MathNet.numerics for csharp 创建自定义优化矩阵运算(基于我对正在使用的稀疏矩阵的了解的智能克罗内克产品)。 是否有一个访问器来获取稀疏矩阵的非零元素? (或索引?
我正在尝试使用 MathNet 滤波器对信号应用带通滤波器;准确地说,我正在使用 MathNet.Filtering.OnlineFiter.CreateBandpass(..) 方法。 问题是,我没
在 C# 中使用 MathNet 查找最大矩阵元素的最佳(可读且快速)方法是什么?这是我的方式: int size = 4; var matrix = Matrix.Build.Dense(size,
我有一个 IEnumerable数据样本。我想计算信号/数据的 90% 置信区间。我有 MathNET library由我支配,但我对如何正确使用图书馆感到困惑。鉴于我的数据,我的想法是返回两个包含原
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
从 MathNet 测试 FFT 时遇到一些问题:这个想法是,如果我将 FFT 应用于高斯变量的特征函数,我应该找到高斯密度函数。 当我绘制 VectorFFT 时,该图看起来确实是一个密度函数,但在
我使用 Math.Net.Numerics 首先用正弦波填充数组,然后使用 Math.Net.Filtering 创建带通来过滤数据,如下所示: void Main() { double[]
为什么我从 GoodnessOfFit.StandardError 得到错误的答案 (err2)?在下面的代码中,我自己进行计算并得到正确的答案 (err3)。我从 GoodnessOfFit.RSq
我使用 MathNet Numerics 的 Evd<> 类来获取矩阵的特征向量,但结果是 Vector 类型我无法将其转换为 Vector ,这就是我的操作所需要的。 这就是我得到特征向量的方法:
我正在使用 MathNet Symbolics 来处理我正在处理的程序的符号代数部分。一般用途是创建一对符号公式,然后将这两个公式相除。这在大多数时候都很好用。然而,有时,它并不想做更复杂的简化。例如
我正在使用 MathNet.Symbolics 库来简化代数公式,例如 string f = Infix.Print(Infix.ParseOrThrow("L+H+L+H")) 我正确地得到了 f=
我正在编写一些使用 MathNet.Numerics.LinearAlgebra 的 C# 代码,并尝试将结果与教科书示例相匹配。代码的一部分对 complex32 数组“Ybus”进行了反转,并将其
我需要计算密集矩阵的奇异值分解,但它似乎不包含在我正在使用的包中:MathNet.Numerics x86 v2.4.0.26 从下载Nuget 包管理器。 我正在引用这个问题Svd recompos
我最近通过 NuGet 将 MathNet.Numerics 添加到我的 C# 解决方案中。解决方案文件夹中的包目录膨胀到大约 50 MB!但我可以简单地下载 MathNet dll 并仅使用它,它仅
我正在尝试使用 MathNet.Filter 将低通滤波器与 F# 一起使用,当我绘制结果时,结果不起作用。我在C#中发现了一些类似的问题,但是当我在F#中重现代码时,结果是错误的。 这是我使用 Ma
我有点卡在这里。 MathNet Numerics 的 Forward Fourier 结果似乎比 MATLAB 的结果少了一半。 WindowsPhone 8 上的 MathNet.Numerics
我是 MathNet 的新手,正在用 C#.Net 实现代码。 有一个向量: var X = new DenseVector(new double[] { 10, 20, 30, 40, 50, 60
我是一名优秀的程序员,十分优秀!