引导矩阵的元素

时间:2017-12-20 03:46:04

标签: r matrix quantile percentile

我有一个获取数据并创建方阵 M 的过程,其中 M 的元素对应于数据的某些特征。我希望得到矩阵的每个元素的置信区间,以测量我估计的每个特征周围的不确定性。为此,我想引导,所以我在R中初始化一个列表,重新采样我的数据,并将结果矩阵存储在列表中。那么我如何估计每个元素的95%置信区间?

例如,假设我的原始矩阵 M 是10乘10,并且自举矩阵列表是

mylist <- list()
for(i in 1:1000){
    boot_matrices[[i]] <- matrix(rnorm(10*10, mean=0, sd=1), nrow=10, ncol=10)
}

我希望计算 M 中每个(i,j)元素周围的置信区间,其中i = 1 ... 10和j = 1 ... 10使用1000个bootstrap矩阵。在这个玩具示例中,我知道每个(i,j)元素的参数分布,并且我期望每个元素的95%置信区间在(-1.96,1.96)附近。但是,在我的真实数据中,我不太了解,我也不想假设(因此,使用引导程序)。在这种情况下,有没有办法自动计算每个矩阵元素周围的置信区间?

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

创建nBS bootstrap 10x10矩阵(我正在使用set.seed(...)来确保样本数据的可重复性)。生成的矩阵存储在list

# List of bootstrap matrices
nBS <- 1000;
set.seed(2017);
lst <- lapply(1:nBS, function(x) 
    matrix(rnorm(10 * 10, mean = 0, sd = 1), nrow = 10, ncol = 10));

计算所有bootstrap样本中每个矩阵元素(i,j)的平均值和标准差:

# Calculate mean and sd of every matrix element (i,j)
mat.mean <- apply(simplify2array(lst), c(1, 2), mean);
mat.sd <- apply(simplify2array(lst), c(1, 2), sd);

将95%置信区间计算为mean +- 1.96 * sem

# Calculate lower and upper 95% confidence interval
mat.lowerCI <- mat.mean - 1.96 * mat.sd / sqrt(nBS);
mat.upperCI <- mat.mean + 1.96 * mat.sd / sqrt(nBS);

显示mat.mean

mat.mean;
             [,1]         [,2]          [,3]         [,4]         [,5]
[1,] -0.011862801 -0.017872385 -2.059780e-02 -0.056602452 -0.077408704
[2,]  0.083863805 -0.057467756 -7.920189e-03  0.001923072 -0.010616517
[3,] -0.021193913 -0.021594100 -3.069827e-03  0.082500345 -0.015010818
[4,] -0.001063529 -0.028606045  6.366336e-02  0.021871973  0.014491280
[5,] -0.042912905 -0.020031203  7.075698e-03  0.032309070  0.051875125
[6,] -0.028336190 -0.055650895 -1.119998e-02 -0.030252861 -0.008670326
[7,]  0.006555878 -0.008686383 -1.928690e-02 -0.027290181 -0.002037219
[8,]  0.001513634 -0.057669094 -6.025466e-03  0.028409560  0.052159330
[9,]  0.044741065 -0.026265301  3.915427e-02 -0.011599341  0.006817949
[10,]  0.035356686 -0.039949595 -5.468612e-05  0.007272050  0.013150241
[,6]          [,7]         [,8]         [,9]         [,10]
[1,]  0.054420568  0.0050127337 -0.046358349 -0.029833662 -0.0525282034
[2,] -0.033703118 -0.0623761140 -0.029511715 -0.048816905 -0.0189984349
[3,] -0.013218223 -0.0278959480 -0.036351073  0.028833428 -0.0001538902
[4,]  0.029236408 -0.0046022995  0.019077031  0.069887669 -0.0283910941
[5,] -0.035474785  0.0372263523  0.021329823  0.006252149  0.0395028012
[6,]  0.008978299  0.0266740599 -0.006252266 -0.005793750  0.0072594645
[7,]  0.092958577  0.0047135528  0.019320387  0.011766436 -0.0021045223
[8,]  0.014867452 -0.0001325218  0.014760887 -0.027671024  0.0610503856
[9,] -0.031151561  0.0373095832  0.016197685 -0.050206244 -0.0561044648
[10,]  0.059817479 -0.0669659941  0.020218135 -0.039548025  0.0115156843

mat.lowerCImat.upperCI中给出了95%置信区间的上限和下限。