Matlab, how to calculate AUC (Area Under Curve)?

落花浮王杯 提交于 2019-11-30 09:50:18

Easiest way is the trapezoidal rule function trapz.

If your data is known to be smooth, you could try using Simpson's rule, but there's nothing built-in to MATLAB for integrating numerical data via Simpson's rule. (& I'm not sure how to use it for x/y data where x doesn't increase steadily)

just add AUC = trapz(X,Y) to your program and you will get the area under the curve

You can do something like that:

AUC = sum((Y(1:end-1)+Y(2:end))/2.*...
  (X(2:end)-X(1:end-1)));

Source: Link

An example in MATLAB to help you get your answer ...

x=[3 10 15 20 25 30];
y=[27 14.5 9.4 6.7 5.3 4.5];
trapz(x,y)

In case you have negative values in y, you can do like,

y=max(y,0)

[~,~,~,AUC] = perfcurve(labels,scores,posclass);

% posclass might be 1

http://www.mathworks.com/matlabcentral/newsreader/view_thread/252131

There are some options to trapz for the person ready to do some coding by themselves. This link shows the implementation of Simpson's rule, with python code included. There is also a File Exchange on simpsons rule.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!