slidingROC.m 893 B

1234567891011121314151617181920212223242526272829303132333435
  1. function [auc_val, auc_p,varargout]=slidingROC(stim, nostim, varargin)
  2. % [auc_val, auc_p,varargout]=slidingROC(stim, nostim, [boots, alph])
  3. % takes 2 matrices , stim & nostim, of equal number of columns.
  4. % using ROC analysis (see auc.m)
  5. % returns a vector whose length is the column width of stim
  6. % # of columns must be equal
  7. if size(stim,2) ~= size(nostim,2)
  8. error('must be equal # of columns')
  9. end
  10. pairs={
  11. 'boots', 2000;...
  12. 'alph',99;...
  13. };
  14. utils.parseargs(varargin,pairs,{},1);
  15. auc_val=stats.auc(stim,nostim);
  16. M=[stim; nostim];
  17. num_stim=size(stim,1);
  18. num_all=num_stim+size(nostim,1);
  19. auc_b=zeros(boots,size(stim,2))+0.5;
  20. parfor bx = 1:boots
  21. rind=randperm(num_all);
  22. stim=M(rind(1:num_stim),:);
  23. nostim=M(rind(num_stim+1:num_all),:);
  24. [auc_b(bx,:)]=stats.auc(stim,nostim);
  25. end
  26. auc_p= stats.get_p(auc_val, auc_b);
  27. if nargout==3
  28. varargout{1}=auc_b;
  29. end