I'm trying to do a linear regression between the columns of matrices. In example below I want to regress column 1 of matrix xdat with column1 of ydat and do a separate regression between the column 2s of each matrix. But the output I get seems to give correct slopes but incorrect intercepts and another set of slopes with value NA. How do I do this correctly? I'm after the slope and intercept of each columns regression> xdat <- matrix(1:6,3,2) > xdat[,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6> ydat <- xdat > ydat[,1] <- xdat[,1]*3 +2 > ydat[,1] [,2] [1,] 5 4 [2,] 8 5 [3,] 11 6> ydat[,2] <- xdat[,2]*4 - 3 > yadtError: object "yadt" not found> ydat[,1] [,2] [1,] 5 13 [2,] 8 17 [3,] 11 21> lrg <- lm(y~x)Error in eval(expr, envir, enclos) : object "y" not found> lrg <- lm(ydat~xdat) > lrgCall: lm(formula = ydat ~ xdat) Coefficients: [,1] [,2] (Intercept) 2 9 xdat1 3 4 xdat2 NA NA -- View this message in context: http://www.nabble.com/Using-lm-with-a-matrix--tp17708207p17708207.html Sent from the R help mailing list archive at Nabble.com.
On Jun 7, 2008, at 8:13 AM, jonboym wrote:> > I'm trying to do a linear regression between the columns of > matrices. In > example below I want to regress column 1 of matrix xdat with > column1 of ydat > and do a separate regression between the column 2s of each matrix. > But the > output I get seems to give correct slopes but incorrect intercepts and > another set of slopes with value NA. How do I do this correctly? > I'm after > the slope and intercept of each columns regression > >> xdat <- matrix(1:6,3,2) >> xdat > [,1] [,2] > [1,] 1 4 > [2,] 2 5 > [3,] 3 6 >> ydat <- xdat >> ydat[,1] <- xdat[,1]*3 +2 >> ydat > [,1] [,2] > [1,] 5 4 > [2,] 8 5 > [3,] 11 6 >> ydat[,2] <- xdat[,2]*4 - 3 >> yadt > Error: object "yadt" not found >> ydat > [,1] [,2] > [1,] 5 13 > [2,] 8 17 > [3,] 11 21 >> lrg <- lm(y~x) > Error in eval(expr, envir, enclos) : object "y" not found >> lrg <- lm(ydat~xdat) >> lrg > > Call: > lm(formula = ydat ~ xdat) > > Coefficients: > [,1] [,2] > (Intercept) 2 9 > xdat1 3 4 > xdat2 NA NATry this: lapply( 1:2, function(i) lm( y~x, data=list(x=xdat[,i], y=ydat[,i]) ) ) Haris Skiadas Department of Mathematics and Computer Science Hanover College
Many thanks, works great! Charilaos Skiadas-3 wrote:> > Try this: > > lapply( 1:2, function(i) lm( y~x, data=list(x=xdat[,i], y=ydat[,i]) ) ) > > Haris Skiadas >-- View this message in context: http://www.nabble.com/Using-lm-with-a-matrix--tp17708207p17829661.html Sent from the R help mailing list archive at Nabble.com.