我有一个获取数据并创建方矩阵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)
}
我希望通过使用1000个自举矩阵来计算M中每个(i,j)元素周围的置信区间,其中i = 1 ... 10且j = 1 ... 10。在这个玩具示例中,我知道每个(i,j)元素的参数分布,并且我希望每个元素的95%置信区间在(-1.96,1.96)附近。但是,在我的实际数据中,我不知道多少,我不想假设(因此,使用bootstrap)。在这种情况下,有没有办法自动计算每个矩阵元素周围的置信区间?
这样的事怎么样?
创建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.lowerCI
和mat.upperCI
中给出了较低和较高的95%置信区间。