Hi,

thanks for the comments. You have been of great help.

Regards

On Mon, Jun 20, 2011 at 11:52 PM, Dennis Murphy <djmu...@gmail.com> wrote:

> Hi:
>
> (a) What Brian said...
>
> (b) Here's one way to generate a list of model objects from which you
> can extract the pieces you may want.
>
> # Generate a fairly minimal, reproducible data set
> set.seed(345)   # makes results below reproducible
> dd <- data.frame(X = rnorm(100), Y = rnorm(100),
>                  gp = factor(rep(LETTERS[1:5], each = 20)))
>
> # Basically, split the data frame by gp into a list of sub-data frames
> # and fit lm() to each piece. We use the plyr package for this:
> library(plyr)
> mlist <- dlply(dd, .(gp), function(d) lm(Y ~ X, data = d))
>
> # mlist is a list of lm objects, from which you can extract salient
> # pieces using the l*ply functions from plyr. For example,
>
> # return the coefficients from each model fit:
> > ldply(mlist, coef)
>  gp (Intercept)            X
> 1  A -0.05670893 -0.008741077
> 2  B -0.41071309 -0.134832968
> 3  C -0.02007992  0.379762195
> 4  D  0.04168990  0.213085495
> 5  E  0.19094314  0.010481033
>
> # R^2:
> > ldply(mlist, function(m) summary(m)$r.squared)
>  gp           V1
> 1  A 9.287934e-05
> 2  B 1.684219e-02
> 3  C 1.200286e-01
> 4  D 4.235989e-02
> 5  E 7.294735e-05
>
> # Table of coefficients, SEs and significance tests
> # (outputs a list)
> llply(mlist, function(m) summary(m)$coefficients)
>
> # Data frame of predicted values and residuals (multiple outputs):
> ldply(mlist, function(m) data.frame(pred = fitted(m), res = resid(m)))
>
> HTH,
> Dennis
>
> On Mon, Jun 20, 2011 at 12:23 PM, ivan <i.pet...@gmail.com> wrote:
> > Hi,
> >
> > I have two datasets, x and y. Simplified x and y denote:
> >
> >  X
> >
> > Y
> >
> >  A B C A B C  . . . . . .  . . . . . .  . . . . . .
> > I want to implement all possible models such as lm(X$A~Y$A), lm(X$B~Y$B),
> > lm(X$C~Y$C)... I have tried the following:
> >
> > fun<- function(x,y){
> >            for(i in 1:length(colnames(x))){
> >              for(j in 1:length(colnames(y))){
> >               if(colnames(x)[i]==colnames(y)[j]){
> >               models=list(lm(ts(x[i])~ts(y[j])))
> >               }
> >               else{}
> >            }
> >          }
> >           return(models)
> > }
> >
> > The problem is that this returns only one of the three models, namely the
> > last one. What am I doing wrong? Thank you very much in advance.
> >
> > Regards
> >
> >        [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@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.
> >
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to