对于连续变量x及其概率密度函数p(x),我有一个x值x
的numpy数组和一个相应p(x)值p
的numpy数组。p(x)未归一化,即在p(x)与x的曲线图中,图形下方的面积不是1。我想为累积分布函数cdf
的值计算一个对应的数组。我现在就是这样做的,用梯形法则来近似积分:
p_norm = p/np.trapz(p,x)
cdf = np.array([np.trapz(p_norm[:n],x[:n]) for n in range(len(p_norm))])
结果并不完全准确;cdf
的最终值接近1,但不完全是1
有没有更准确、更简单的方法来归一化p
和查找cdf
?我认为在某些模块中可能有特定的功能;也许是一个面向统计的模块,具有相关参数(方差、置信区间等)的函数
离散数据点的积分方法
变量
x
只有在具有连续函数形式时才是连续的。如果你有 很少有离散值(如果要创建一个离散值的numpy数组,就会出现这种情况),然后 阵列不再是连续的,因为它无法解析两个连续离散点之间的点x
的值因此,假设您实际上有一个
x
和p
的离散数据点数组,这里 这是我的建议先熟悉一些数值积分的方法
Newton-Cotes Formulas |代码:^{}
这是一个通用规则,包括使用
n
点进行集成。如果我们将n
点公式表示为:newton-cotes(n)
,那么Trapezoidal Rule:}
n = 2
|代码:^{Simpson's Rule:}
n = 3
|代码:^{Simpson's 3/8 Rule:
n = 4
Boole's Rule:
n = 5
|代码:有关想法,请参见thisWeddle's Rule
Hardy's Rule
一,。使用^{} 进行集成
您可以使用“集成给定固定样本函数的方法”下列出的任何方法
洞察这里重要的是:
interpolate
使用straight line
的连续两点之间的空间。如果可以的话 使用高阶多项式(阶数~2、3、4等),这样可以得到更好的计算结果 整合。辛普森规则使用二阶多项式Simpson's Rule - Wolfram MathWorld来源:Wikipedia
给定固定样本的函数积分方法
🔥 另请参见此快速示例:Calculating the area under a curve given a set of coordinates, without knowing the function
二,。使用
sklearn.metrics.auc
积分本质上是曲线下的面积(AUC)。Scikit学习库提供了一个简单的 计算AUC的替代方案。在实践中,这也使用了梯形规则,所以,我这样做 看不出有任何理由说明这与你已有的有什么不同 使用
numpy.trapz
auc = sklearn.metrics.auc(x, y)
三,。考虑使用其他方法< /H2>- 文件:^{
} - 隆伯格的方法是什么?
- Wikipedia
- Romberg积分背后的数学:PDF
- YouTube视频:Numerical Integration - Romberg Integration - example
- Boole's rule for N intervals (C)
- https://readthedocs.org/projects/mec-cs101-integrals/downloads/pdf/latest/
3.1。隆伯格积分
参考资料
相关问题 更多 >
编程相关推荐