Matlab,如何计算AUC(曲线下面积)?

Dav*_*.it 7 matlab curve octave area

我有data.txt两列和N行的文件,如下所示:

0.009943796 0.4667975
0.009795735 0.46777886
0.009623984 0.46897832
0.009564759 0.46941447
0.009546991 0.4703958
0.009428543 0.47224948
0.009375241 0.47475737
0.009298249 0.4767201
[...]
Run Code Online (Sandbox Code Playgroud)

文件中的每个值对应一个点坐标(x,y).如果绘制,则此点生成曲线.我想计算该曲线的曲线下面积(AUC).

所以我加载数据:

data = load("data.txt");
X = data(:,1);
Y = data(:,2);
Run Code Online (Sandbox Code Playgroud)

因此,X包含点的所有x坐标和Y所有y坐标.

我怎样才能计算曲线下面积(AUC)?

Jas*_*n S 4

最简单的方法是梯形法则函数trapz

如果您的数据已知是平滑的,您可以尝试使用辛普森规则,但 MATLAB 没有内置任何内容可用于通过辛普森规则集成数值数据。(&我不确定如何将它用于 x/y 数据,其中 x 不会稳定增加)

  • 如果曲线低于 0,面积实际上会减少。请记住,这只是不可或缺的一部分。要获得正 AUC,您可能需要更改基线。例如,从“Y”中减去“min(Y)”。或者您可以使用“abs(Y)”来总结正面积和负面积。 (3认同)
  • 从技术上讲,如果您使用“trapz(x,y)”,结果的符号取决于 y 的符号和 x 变化的符号。(记住:这是 y dx 的积分)因此,如果您的 y 值为正,但 x 正在减小,您将得到一个负数。实际上比这更复杂一点:对于闭合曲线,顺时针环绕的符号应为正,逆时针环绕的符号应为负(请参见http://en.wikipedia.org/wiki/Green%27s_theorem#Area_Calculation)。 (2认同)