Bootstrap和非对称CI

时间:2013-10-30 15:06:07

标签: matlab confidence-interval statistics-bootstrap

我正在尝试为一组数据创建置信区间随机分布并且在右侧非常倾斜。冲浪,我发现了一个非常粗鲁的方法,包括使用97.5%百分位数(我的数据)用于上限CL和2.5%百分位数用于较低CL。 不幸的是,我需要一种更复杂的方式!

然后我发现了 bootstrap ,精确了MATLAB bootci函数,但我很难找到如何正确使用它。

假设M是包含我的数据的矩阵(19x100),让我们说:

Mean = mean(M,2);
StdDev = sqrt(var(M'))';

如何使用bootci计算Mean向量的每一行的非对称 CI?

注意:早些时候,我是以非常错误方式计算CI:Mean +/- 2 * StdDev,对我感到羞耻!

1 个答案:

答案 0 :(得分:1)

假设您有一个100x19数据集。每列具有不同的分布。我们将选择对数正态分布,使它们偏向右侧。

means  = repmat(log(1:19), 100, 1);
stdevs = ones(100, 19);
X = lognrnd(means, stdevs);

请注意,每个来自同一个分布,是单独的观察。默认情况下,MATLAB中的大多数函数都对行进行操作,因此最好以这种方式保存数据。

您可以使用bootci函数计算均值的自举置信区间。

ci = bootci(1000, @mean, X);

这会对您的数据进行1000次重新采样,计算每次重采样的平均值,然后采用2.5%和97.5%的分位数。为了表明它是关于均值的不对称置信区间,我们可以绘制每列的均值和置信区间

plot(mean(X), 'r')
hold on
plot(ci')

enter image description here