[R] applying lm on an array of observations with common design matrix

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Feb 22 09:17:38 CET 2007


On Thu, 22 Feb 2007, Petr Klasterecky wrote:

> Ranjan Maitra napsal(a):
>> On Sun, 18 Feb 2007 07:46:56 +0000 (GMT) Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
>>
>>> 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).
>>
>> In this context, can one also get the variance-covariance matrix of the 
>> coefficients?
>
> Sure:
>
> lapply(summary(fit), function(x) {"$"(x,cov.unscaled)})

But that is not the variance-covariance matrix (and it is an unusual way 
to write x$cov.unscaled)!

> Add indexing if you do not want the whole matrix. You can extract
> whatever you want, just take a look at ?summary.lm, section Value.

It is unclear to me what the questioner expects: the estimated 
coefficients for different responses are independent.  For a list of 
matrices applying to each response one could mimic vcov.lm and do

lapply(summary(fit, corr=FALSE),
        function(so) so$sigma^2 * so$cov.unscaled)

-- 
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