Frederick Ho
2010-Mar-18 11:35 UTC
[R] Regress a matrix on another matrix column by column
Hi everyone, I have a response matrix (y) and two predictor matrices (x.a, x.b), how should i proceed if i want to regress y on x.a and x.b column by column? To be specific, what i want to do is: y[,1]~x.a[,1]+x.b[,1] y[,2]~x.a[,2]+x.b[,2] . . . I have tried lm(y~x1+x2) but it does not work as R treat that as: y[,1]~x.a[,1]+x.a[,2]+...+x.b[,1]+x.b[,2]+... . . . Thanks. Regards, Fred [[alternative HTML version deleted]]
Dimitris Rizopoulos
2010-Mar-18 13:40 UTC
[R] Regress a matrix on another matrix column by column
try this:
y <- matrix(rnorm(100*100), 100, 100)
x.a <- matrix(rnorm(100*100), 100, 100)
x.b <- matrix(rnorm(100*100), 100, 100)
M <- ncol(y)
models <- vector("list", M)
for (m in 1:M) {
Dat <- data.frame(y = y[, m], x.a = x.a[, m], x.b = x.b[, m])
models[[m]] <- lm(y ~ ., data = Dat)
}
Moreover and depending on what exactly you want to extract from these
models, it may be even faster if you use lm.fit() instead of lm().
I hope it helps.
Best,
Dimitris
On 3/18/2010 12:35 PM, Frederick Ho wrote:> Hi everyone,
>
> I have a response matrix (y) and two predictor matrices (x.a, x.b), how
> should i proceed if i want to regress y on x.a and x.b column by column?
>
> To be specific, what i want to do is:
>
> y[,1]~x.a[,1]+x.b[,1]
> y[,2]~x.a[,2]+x.b[,2]
> .
> .
> .
>
> I have tried lm(y~x1+x2) but it does not work as R treat that as:
>
> y[,1]~x.a[,1]+x.a[,2]+...+x.b[,1]+x.b[,2]+...
> .
> .
> .
>
> Thanks.
>
> Regards,
> Fred
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
--
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center
Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
Henrique Dallazuanna
2010-Mar-18 13:50 UTC
[R] Regress a matrix on another matrix column by column
Try this: mapply(function(y, x, z)lm(y ~ x + z), as.data.frame(y), as.data.frame(x.a), as.data.frame(x.b), SIMPLIFY = FALSE) On Thu, Mar 18, 2010 at 8:35 AM, Frederick Ho <crescal at gmail.com> wrote:> Hi everyone, > > I have a response matrix (y) and two predictor matrices (x.a, x.b), how > should i proceed if i want to regress y on x.a and x.b column by column? > > To be specific, what i want to do is: > > y[,1]~x.a[,1]+x.b[,1] > y[,2]~x.a[,2]+x.b[,2] > . > . > . > > I have tried lm(y~x1+x2) but it does not work as R treat that as: > > y[,1]~x.a[,1]+x.a[,2]+...+x.b[,1]+x.b[,2]+... > . > . > . > > Thanks. > > Regards, > Fred > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > 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. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O