Calculations/Data-Analyzer/StructuralPhaseTransition/SpectralAnalysisRoutines/bootstrapCumulants.m

42 lines
1.3 KiB
Matlab

function [cumulants_mean, cumulants_ci, bootstrap_samples] = bootstrapCumulants(x, maxOrder, nBoot)
% bootstrapCumulants - compute bootstrap estimates of cumulants and confidence intervals
%
% Syntax:
% [meanC, ciC, allC] = bootstrapCumulants(x, maxOrder, nBoot)
%
% Inputs:
% x - Data vector (may contain NaNs)
% maxOrder - Max cumulant order (default: 6)
% nBoot - Number of bootstrap samples (default: 1000)
%
% Outputs:
% cumulants_mean - Mean of bootstrap cumulants
% cumulants_ci - 95% confidence intervals [2.5th; 97.5th] percentile
% bootstrap_samples - All bootstrap cumulants (nBoot x maxOrder)
if nargin < 2, maxOrder = 6; end
if nargin < 3, nBoot = 1000; end
x = x(:);
x = x(~isnan(x)); % Remove NaNs
if isempty(x)
cumulants_mean = NaN(1, maxOrder);
cumulants_ci = NaN(2, maxOrder);
bootstrap_samples = NaN(nBoot, maxOrder);
return;
end
N = numel(x);
bootstrap_samples = zeros(nBoot, maxOrder);
for b = 1:nBoot
xb = x(randi(N, [N, 1])); % Resample with replacement
bootstrap_samples(b, :) = computeCumulants(xb, maxOrder);
end
cumulants_mean = mean(bootstrap_samples, 1);
cumulants_ci = prctile(bootstrap_samples, [2.5, 97.5]);
end