for loop and linear models
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.petzev at 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 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.