source: issm/oecreview/Archive/14312-15392/ISSM-14325-14326.diff

Last change on this file was 15393, checked in by Mathieu Morlighem, 12 years ago

NEW: adding Archive/14312-15392 for oecreview

File size: 2.7 KB
  • ../trunk-jpl/src/m/miscellaneous/prctile_issm.m

     
    3535
    3636%  check for any NaN in any columns
    3737
    38                 if ~any(isnan(x))
     38                if ~any(any((isnan(x))))
    3939                        x=sort(x,1);
    4040                        n=size(x,1);
    4141
  • ../trunk-jpl/src/m/miscellaneous/normfit_issm.m

     
    77                alpha=0.05;
    88        end
    99
    10 remove any NaN
     10check for any NaN in any columns
    1111
    12         if find(isnan(x))
    13                 muhat   =zeros(1,size(x,2));
    14                 sigmahat=zeros(1,size(x,2));
    15                 muci    =zeros(2,size(x,2));
    16                 sigmaci =zeros(2,size(x,2));
    17                 for j=1:size(x,2)
    18                         [muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha);
    19                 end
    20                 return
    21         end
     12        if ~any(any((isnan(x))))
    2213
    2314%  explicitly calculate the moments
    2415
    25         muhat   =mean(x);
    26         sigmahat=std(x);
     16                muhat   =mean(x);
     17                sigmahat=std(x);
    2718
    28         if (nargout>2)
    29                 prob=1.-alpha/2.;
     19                if (nargout>2)
     20                        prob=1.-alpha/2.;
    3021
    31                 if (size(x,1) == 1)
    32                         % operate like matlab normfit, mean, std, etc.
    33                         n=length(x);
    34                 else
    35                         n=size(x,1);
     22                        if (size(x,1) == 1)
     23                                % operate like matlab normfit, mean, std, etc.
     24                                n=length(x);
     25                        else
     26                                n=size(x,1);
     27                        end
     28
     29                        muci    =zeros(2,length(muhat   ));
     30                        sigmaci =zeros(2,length(sigmahat));
     31
     32                        try
     33                                muci(1,:)   =muhat-tinv(prob,n-1)*sigmahat/sqrt(n);
     34                                muci(2,:)   =muhat+tinv(prob,n-1)*sigmahat/sqrt(n);
     35                                sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob   ,n-1));
     36                                sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1));
     37                        catch me
     38                                muci(1,:)   =muhat;
     39                                muci(2,:)   =muhat;
     40                                sigmaci(1,:)=sigmahat;
     41                                sigmaci(2,:)=sigmahat;
     42                        end
    3643                end
    3744
    38                 muci    =zeros(2,length(muhat   ));
    39                 sigmaci =zeros(2,length(sigmahat));
     45        else
    4046
    41                 try
    42                         muci(1,:)   =muhat-tinv(prob,n-1)*sigmahat/sqrt(n);
    43                         muci(2,:)   =muhat+tinv(prob,n-1)*sigmahat/sqrt(n);
    44                         sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob   ,n-1));
    45                         sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1));
    46                 catch me
    47                         muci(1,:)   =muhat;
    48                         muci(2,:)   =muhat;
    49                         sigmaci(1,:)=sigmahat;
    50                         sigmaci(2,:)=sigmahat;
     47%  must loop over columns, since number of elements could be different
     48
     49                muhat   =zeros(1,size(x,2));
     50                sigmahat=zeros(1,size(x,2));
     51                muci    =zeros(2,size(x,2));
     52                sigmaci =zeros(2,size(x,2));
     53
     54%  remove any NaN and recursively call column
     55
     56                for j=1:size(x,2)
     57                        [muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha);
    5158                end
    5259        end
    5360
Note: See TracBrowser for help on using the repository browser.