[R] matrix multivariate bootstrap: order of results in $t component
John Fox
jfox at mcmaster.ca
Wed Dec 21 21:29:36 CET 2011
Hi Michael,
There may be a cleverer way to do this without a loop, but I think that the
following does what you want:
> t <- matrix(1:(800*18), 800, 18, byrow=TRUE) # for a reproducible example
> head(t)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 2 3 4 5 6 7 8 9 10
[2,] 19 20 21 22 23 24 25 26 27 28
[3,] 37 38 39 40 41 42 43 44 45 46
[4,] 55 56 57 58 59 60 61 62 63 64
[5,] 73 74 75 76 77 78 79 80 81 82
[6,] 91 92 93 94 95 96 97 98 99 100
[,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18]
[1,] 11 12 13 14 15 16 17 18
[2,] 29 30 31 32 33 34 35 36
[3,] 47 48 49 50 51 52 53 54
[4,] 65 66 67 68 69 70 71 72
[5,] 83 84 85 86 87 88 89 90
[6,] 101 102 103 104 105 106 107 108
> tt <- matrix(0, 2400, 6)
> cols <- rep(1:6, 3)
> for (i in 1:800){
+ tt[((i - 1)*3 + 1):(i*3), cols] <- t[i, ]
+ }
> head(tt)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 4 7 10 13 16
[2,] 2 5 8 11 14 17
[3,] 3 6 9 12 15 18
[4,] 19 22 25 28 31 34
[5,] 20 23 26 29 32 35
[6,] 21 24 27 30 33 36
I'm pretty sure that the bootstrapped matrix is organized as you suggest,
since R matrices are stored in column-major order.
Best,
John
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Michael Friendly
> Sent: December-21-11 2:17 PM
> To: R-help
> Subject: [R] matrix multivariate bootstrap: order of results in $t
> component
>
> [This question is hopefully straight-forward, but difficult to provide
> reproducible code.]
>
> I'm doing a multivariate bootstrap, using boot::boot(), where the
> output of the basic computation is a k x p matrix of coefficients,
> representing a tuning constant x variable, as shown in the $t0
> component from my run, giving a 3 x 6 matrix
>
> > lboot$t0
> GNP Unemployed Armed.Forces Population Year GNP.deflator
> 0.00 -3.4472 -1.828 -0.6962 -0.34420 8.432 0.15738
> 0.01 -0.1798 -1.361 -0.5881 -1.00317 5.656 -0.02612
> 0.08 1.0907 -1.086 -0.4583 -0.08596 2.642 0.57025
> >
>
> ?boot doesn't say how these are strung out to give the 1 x 18 vector in
> each row of lboot$t, but I believe it is done columnwise -- is this
> correct?
>
> That is, I think that the column names for the bootstrap results,
> lboot$t, should vary most quickly down the columns:
>
> > c(t(outer(colnames(lboot$t0), rownames(lboot$t0), paste, sep=':')))
> [1] "GNP:0.00" "GNP:0.01" "GNP:0.08"
> [4] "Unemployed:0.00" "Unemployed:0.01" "Unemployed:0.08"
> [7] "Armed.Forces:0.00" "Armed.Forces:0.01" "Armed.Forces:0.08"
> [10] "Population:0.00" "Population:0.01" "Population:0.08"
> [13] "Year:0.00" "Year:0.01" "Year:0.08"
> [16] "GNP.deflator:0.00" "GNP.deflator:0.01" "GNP.deflator:0.08"
> >
>
> So, the first bootstrap resample would correspond to
>
> > lboot$t[1,]
> GNP:0.00 GNP:0.01 GNP:0.08
> Unemployed:0.00
> -10.1495 -0.8622 1.0566 -
> 2.6131
> Unemployed:0.01 Unemployed:0.08 Armed.Forces:0.00
> Armed.Forces:0.01
> -1.5316 -1.1988 -0.9279 -
> 0.7141
> Armed.Forces:0.08 Population:0.00 Population:0.01 Population:0.08
> -0.5748 1.8401 -0.9989 -
> 0.3155
> Year:0.00 Year:0.01 Year:0.08
> GNP.deflator:0.00
> 12.8984 6.4378 2.7761
> 0.9417
> GNP.deflator:0.01 GNP.deflator:0.08
> 0.1871 0.9797
>
> Or, as a matrix:
>
> > matrix(lboot$t[1,], nrow=3)
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] -10.1495 -2.613 -0.9279 1.8401 12.898 0.9417 [2,] -0.8622 -1.532
> -0.7141 -0.9989 6.438 0.1871
> [3,] 1.0566 -1.199 -0.5748 -0.3155 2.776 0.9797
> >
>
> Finally, if the above is correct, how can I easily take my R=800
> bootstrap estimates in the 800 x 18 matrix lboot$t and restructure them
> in a (2400=800x3) x 6 matrix or data.frame corresponding to stacking
> the matrices like the above for each bootstrap sample?
>
> thanks,
> -Michael
>
> --
> Michael Friendly Email: friendly AT yorku DOT ca
> Professor, Psychology Dept.
> York University Voice: 416 736-5115 x66249 Fax: 416 736-5814
> 4700 Keele Street Web: http://www.datavis.ca
> Toronto, ONT M3J 1P3 CANADA
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list