J.
2009-Nov-09 15:06 UTC
[R] multiple tests: t-statistic for vectors in 4-dimensional array
Hi everyone, I created a four dimensional vector (dim (128,128,1,8)). This third dimension is necessary for another function somewhere. Now I'd like to perform a t-test on every vector of length 8 in my array on the fourth dimension. I'd like to obtain a new array of three dimensions with dimensions 128x128x1 with all these test statistics. I tried this with a double loop: A <- array(rep(seq(-1:2),128*128*8),dim=c(128,128,1,8)) #in simulations I fill the array with random variables tA <- array(rep(NA,128*128),dim=c(128,128,1)) for (i in 1:128){ for (j in 1:128){ print(c(i,j)) tA[i,j,1] <- t.test(A[i,j,1,],alternative="two.sided",mu=0)$statistic }} This works, but it takes way to much time, since I'd like to run this about 500 times. I read something about the apply function, but there I don't know how to specify the outcome values ($statistic), plus I have some difficulties with the specification of my vectors... This doesn't work: tA <- apply(smoothA,4,t.test$statistic) "Error in t.test$statistic : object of type 'closure' is not subsettable" I sought in the package multtest, but can't find any helpful function. Thanks, J.
Charles C. Berry
2009-Nov-09 15:55 UTC
[R] multiple tests: t-statistic for vectors in 4-dimensional array
On Mon, 9 Nov 2009, J. wrote:> Hi everyone, > > I created a four dimensional vector (dim (128,128,1,8)). This third > dimension is necessary for another function somewhere. Now I'd like to > perform a t-test on every vector of length 8 in my array on the fourth > dimension.Vectorize the whole thing: adf <- as.data.frame( aperm( A, c(4,1,2,3))) tA2 <- array( mean(adf) / sd(adf) * sqrt(8), c(128,128,1)) HTH, Chuck> I'd like to obtain a new array of three dimensions with dimensions 128x128x1 > with all these test statistics. > > I tried this with a double loop: > > A <- array(rep(seq(-1:2),128*128*8),dim=c(128,128,1,8)) #in simulations I > fill the array with random variables > tA <- array(rep(NA,128*128),dim=c(128,128,1)) > > for (i in 1:128){ > for (j in 1:128){ > print(c(i,j)) > tA[i,j,1] <- t.test(A[i,j,1,],alternative="two.sided",mu=0)$statistic > }} > > This works, but it takes way to much time, since I'd like to run this about > 500 times. > > I read something about the apply function, but there I don't know how to > specify the outcome values ($statistic), plus I have some difficulties with > the specification of my vectors... > This doesn't work: > tA <- apply(smoothA,4,t.test$statistic) > > "Error in t.test$statistic : object of type 'closure' is not subsettable" > > I sought in the package multtest, but can't find any helpful function. > > Thanks, > > J. > > ______________________________________________ > 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. >Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901