我有一组随时间变化的曲线,它们存储在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;
以下是我的问题:
请附上代码生成的图表。
答案 0 :(得分:3)
我可以回答Q1和Q3。
Q1。第一个参数需要是计算中使用的引导样本的数量,第二个参数是返回您希望找到置信区间的统计量的函数,第三个参数是您要作为输入提供的数据集本身。功能。你必须确保第一个参数对你来说是否正确,其余的看起来是正确的。
Q3。你所做的是对的 - CI给出范围,而不是平均值的变化。还有另一种绘制方式,在某些情况下可能会更好,或者仅仅基于个人偏好。 plot_ci是一个函数,可以让您绘制置信区间,并在同一个图上显示这些区间的干净色块。这些图看起来像这样(这是一个示例图,不是基于问题中的数据集):
这是命令:
plot_ci(x,[MEAN,CI(1,:),CI(2,:)],'PatchColor', 'k', 'PatchAlpha', 0.1, 'MainLineWidth', 2, 'MainLineStyle', '-', 'MainLineColor', 'b','LineWidth', 1.5, 'LineStyle','--', 'LineColor', 'k');