[R] repeat a linear regression model
arun
smartpink111 at yahoo.com
Mon Oct 14 20:46:44 CEST 2013
Hi,
Try:
Please use ?dput() to show the example dataset:
dat <- structure(list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Y = c(555L,
345L, 456L, 552L, 342L, 452L, 555L, 345L, 456L, 552L, 342L, 452L,
562L, 352L, 463L, 582L, 342L, 483L, 522L, 362L, 493L, 532L, 342L,
423L), X1 = c(111L, 234L, 353L, 115L, 232L, 358L, 111L, 234L,
353L, 115L, 232L, 358L, 118L, 251L, 320L, 138L, 211L, 320L, 128L,
221L, 320L, 119L, 242L, 330L), X2 = c(222L, 445L, 453L, 222L,
449L, 458L, 222L, 445L, 453L, 222L, 449L, 458L, 239L, 422L, 470L,
219L, 422L, 410L, 239L, 492L, 470L, 219L, 432L, 460L), X3 = c(333L,
543L, 456L, 343L, 524L, 458L, 333L, 543L, 456L, 343L, 524L, 458L,
340L, 540L, 473L, 310L, 520L, 453L, 310L, 530L, 483L, 320L, 530L,
413L), X4 = c(456L, 33L, 333L, 486L, 23L, 348L, 456L, 33L, 333L,
486L, 23L, 348L, 463L, 40L, 330L, 423L, 43L, 310L, 433L, 45L,
310L, 433L, 41L, 340L)), .Names = c("ID", "Y", "X1", "X2", "X3",
"X4"), class = "data.frame", row.names = c(NA, -24L))
res <- t(sapply(split(dat[,-1],dat$ID),function(x) coef(lm(Y~.,data=x))[-1]))
colnames(res) <- letters[1:4]
#or
library(plyr)
res1 <- ddply(dat,.(ID),function(x) coef(lm(Y~.,data=x[,-1])))[,-2]
colnames(res1)[-1] <- colnames(res)
#or
res3 <- do.call(rbind,by(dat[,-1],dat[,1],function(x) coef(lm(Y~.,data=x))[-1]))
colnames(res3) <- colnames(res)
A.K.
On Monday, October 14, 2013 1:00 PM, Valeria Muzzolini <valeria.muzzolini at uniud.it> wrote:
Hello,
I'd like to repeat a linear regression model for groups of rows that are
identified by an ID number.
My table is like this:
ID Y X1 X2 X3 X4
1 555 111 222 333 456
1 345 234 445 543 33
1 456 353 453 456 333
2 562 118 229 340 463
2 352 241 452 550 40
2 463 360 460 463 340
3 ....
...
...
...
....
3
3
I want to obtain an estimate of the linear model for each ID.
ex. y = a1X1 + b1X2 + c1X3 + d1X4 where ID= 1
y = a2X1 + b2X2 + c2X3 + d2X4 where ID= 2 and so on...
I'd like to obtain a table such this:
ID a b c d
1 ... ... ... ..
2 .. .. .. ..
3 .. .. .. ..
Can you sugget me something?
Can I use a "for" script?
Thank you very much!
Valeria
[[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.
More information about the R-help
mailing list