function [confidence, changepoint]=change_point_analysis_trend_method_with_bootstrap(input_data,bootstrap_runs,do_plotting) %this is coded from a method by taylor, http://www.variation.com/cpa/tech/changepoint.html %possible future additions include the consideration of a second candidate change point, to be identified at the same time as the first one %change point analysis for variance also? c=cumsum(input_data-mean(input_data)); [maxval_original maxind_original]=max(c);[minval_original minind_original]=min(c); diff_original=maxval_original-minval_original; diffs_shuffled=[];mins_shuffled=[]; for i=1:bootstrap_runs %note that this is not a true bootstrap but rather a permutation test shuffled_data=shuffle_randomization(input_data); shuff_c=cumsum(shuffled_data-mean(shuffled_data)); diffs_shuffled=[diffs_shuffled max(shuff_c)-min(shuff_c)]; mins_shuffled=[mins_shuffled min(shuff_c)]; end %close,hist(diffs_shuffled,50),hold on, plot([diff_original diff_original],[minval_original maxval_original],'r') %confidence=100*(length(find(diffs_shuffledminval_original))/bootstrap_runs); %this way is based on the depth of min changepoint=minind_original; if do_plotting plot(input_data, 'ko') hold on plot([1 changepoint],[mean(input_data(1:changepoint)) mean(input_data(1:changepoint))],'r') plot([changepoint+1 length(input_data)],[mean(input_data((changepoint+1):end)) mean(input_data((changepoint+1):end))],'r') end