[R] Suggestion on how to improve efficiency when using MASS:::hubers on high-dimensional arrays

From: Benilton Carvalho <bcarvalh_at_jhsph.edu>
Date: Fri 19 Jan 2007 - 23:17:26 GMT

Hi Everyone,

Given the scenario I have, I was wondering if anyone would be able to give me a hind on how to get the results from hubers() in a more efficient way.

I have an outcome on an array [N x S x D].

I also have a factor (levels 1,2,3) stored on a matrix N x S.

My objective is to get "mu" and "sigma" for each of the N rows (outcome) stratified by the factor (levels 1, 2 and 3) for each of the D "levels", but using MASS:hubers().

Ideally the final result would be an array [N x D x 3 x 2].

The following toy example demonstrates what I want to do, and I'd like to improve the performance when working on my case, where S=400 and N > 200000

Thank you very much for any suggestion.


## begin toy example


N <- 100
S <- 5
D <- 2

outcome <- array(rnorm(N*S*D), dim=c(N, S, D)) classes <- matrix(sample(c(1:3, NA), N*S, rep=T), ncol=S)

results <- array(NA, dim=c(N, D, 3, 2))

myHubers <- function(x)

   if (length(x)>1) as.numeric(hubers(x)) else c(NA, NA)

for (n in 1:N)

   for (d in 1:D){

     tmp <- outcome[n,,d]
     grp <- classes[n,]
     results[n, d,,] <- t(sapply(split(tmp, factor(grp, levels=1:3)),  

## end

Benilton Carvalho
PhD Candidate
Department of Biostatistics
Johns Hopkins University

R-help@stat.math.ethz.ch mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Sat Jan 20 10:24:05 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 20 Jan 2007 - 07:30:22 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.