[R] applying lm on an array of observations with common design matrix
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun Feb 18 08:46:56 CET 2007
On Sat, 17 Feb 2007, Ranjan Maitra wrote:
> Dear list,
>
> I have a 4-dimensional array Y of dimension 330 x 67 x 35 x 51. I have a
> design matrix X of dimension 330 x 4. I want to fit a linear regression
> of each
>
> lm( Y[, i, j, k] ~ X). for each i, j, k.
>
> Can I do it in one shot without a loop?
Yes.
YY <- YY
dim(YY) <- c(330, 67*35*51)
fit <- lm(YY ~ X)
> Actually, I am also interested in getting the p-values of some of the
> coefficients -- lets say the coefficient corresponding to the second
> column of the design matrix. Can the same be done using array-based
> operations?
Use lapply(summary(fit), function(x) coef(x)[3,4]) (since there is a
intercept, you want the third coefficient).
Note that this will give a vector, so set its dimension to c(67,35,51) to
relate to the original array.
I have not BTW looked into the memory requirements here, and you might
want to do this on slices of the array for that reason.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list