在MATLAB(bootci)中计算并绘制均值的置信区间

时间:2016-01-30 16:31:41

标签: matlab bootstrapping confidence-interval

我有一组随时间变化的曲线,它们存储在MATLAB矩阵中。矩阵的每一行都是这些曲线之一,随着时间的推移展开。这是重复的随机实验。

我需要绘制这些曲线随时间的平均值,以及95%的置信区间。

我对统计数据的理解相当差,但我建议使用MATLAB的bootci函数来使用bootstrap置信区间。

我在MATLAB中实现了一个最小的例子,但我有些疑惑。我希望你能帮助我更好地掌握这个并避免愚蠢的错误。

以下是例子:

NVARIABLES = 200;
NOBSERVATIONS = 1000;
RESAMPLING = 10000;

DATA = rand(NOBSERVATIONS, NVARIABLES);

[CI, STAT] = bootci(RESAMPLING, @mean, DATA);

MEAN = mean(DATA); % <------- [1]

x = 1:NVARIABLES;

figure;
hold on;
plot(x, MEAN, 'LineWidth', 2);
plot(x, CI(1,:), '--', 'LineWidth', 2); % [2]
plot(x, CI(2,:), '--', 'LineWidth', 2);
% plot(x, MEAN-CI(1,:)); % ?
% plot(x, MEAN+CI(2,:)); % ?
hold off;

以下是我的问题:

  • 我是否正确使用此功能?
  • 在报告/绘制平均值时,绘制平均值(DATA)是正确的(参见第{3}行)或者我应绘制由引导程序派生的平均值?我看到STAT包含每个bootstrap示例的平均值,但我不知道是否应该使用此信息,以及如何
  • 以我的方式绘制置信区间是否正确(见第[2]行),或者我应该绘制MEAN-CI(1,:)和MEAN + CI(2,:)?

请附上代码生成的图表。

1

1 个答案:

答案 0 :(得分:3)

我可以回答Q1和Q3。

Q1。第一个参数需要是计算中使用的引导样本的数量,第二个参数是返回您希望找到置信区间的统计量的函数,第三个参数是您要作为输入提供的数据集本身。功能。你必须确保第一个参数对你来说是否正确,其余的看起来是正确的。

Q3。你所做的是对的 - CI给出范围,而不是平均值的变化。还有另一种绘制方式,在某些情况下可能会更好,或者仅仅基于个人偏好。 plot_ci是一个函数,可以让您绘制置信区间,并在同一个图上显示这些区间的干净色块。这些图看起来像这样(这是一个示例图,不是基于问题中的数据集): Confidence Interval plot

这是命令:

plot_ci(x,[MEAN,CI(1,:),CI(2,:)],'PatchColor', 'k', 'PatchAlpha', 0.1, 'MainLineWidth', 2, 'MainLineStyle', '-', 'MainLineColor', 'b','LineWidth', 1.5, 'LineStyle','--', 'LineColor', 'k');