[R-es] Bucle de regresiones

Griera-yandex gr|er@ @end|ng |rom y@ndex@com
Lun Nov 15 14:24:37 CET 2021


Hola:

Sí, muchas gracias! Funciona. Aunque no entiendo como en el bucle original no coge el contenido de X1 si en la fórmula aparece "X1". Son cosas que me cuesta entender de R. Que le vamos ha hacer!

Gracias de nuevo y saludos.
		

On Mon, 15 Nov 2021 13:57:51 +0100
Proyecto R-UCA <r-uca using uca.es> wrote:

> Buenas,
> 
> En el bucle estás asignando a la variable X el valor "X1" y no el
> contenido de la variable X.
> 
> A ver si esto te sirve:
> 
> for (Y in 1:2)
> {
>     for (X in 3:4)
>     {
>         cat ("Y:", names(df)[Y], "X:", names(df)[X], "\n")
>         print (summary (lm (df[,Y] ~ df[,X] + SE + ED,
>                             data <- df)))
>     }
> }
> 
> Un saludo.
> 
> El lun, 15-11-2021 a las 13:20 +0100, Griera-yandex escribió:
> > Hola, buenos dias:
> > 
> > Estoy intentando hacer una serie de regresiones en las que la "y" y una
> > de las "x", son diferentes en cada regresión. Además, hay unos
> > predictores constantes. Un ejemplo seria de los datos seria:
> > 
> > N <- 100
> > 
> > # x1, y1
> > set.seed(1234)
> > x1 <- sample(1:100, N, replace <- TRUE)
> > mean(x1);sd(x1)
> > y1 <- x1 + 2 + 1.5*rnorm(length(x1))
> > 
> > # x2, y2
> > set.seed(5678)
> > x2 <- 1:N
> > x2 <- sample(1:100, N, replace <- TRUE)
> > mean(x2);sd(x2)
> > y2 <- x2 + 2 + 1.5*rnorm(length(x2))
> > 
> > df <- data.frame (Y1 <- y1
> >                 , Y2 <- y2
> >                 , X1 <- x1
> >                 , X2 <- x2
> >                 , SE <- factor(rbinom(N, 1, .5))
> >                 , ED <- sample(20:50, N, replace <- TRUE)
> >                                         )
> > 
> > Intento hacer dos bucles para cambiar la "y" y las "x":
> > 
> > YL <- c ("Y1", "Y2")
> > XL <- c ("X1", "X2")
> > for (Y in YL)
> >         {
> >                 for (X in XL)
> >                         {
> >                                 cat ("Y:", Y, "X:", X, "\n")
> >                                 print (summary (lm (Y ~ X + SE + ED,
> > data <- df)))
> >                         }
> >         }
> > 
> > Pero al ejecutarlo, da el error:
> > 
> > Error in model.frame.default(formula = Y ~ X + SE + ED, data = df,
> > drop.unused.levels = TRUE) : 
> >   variable lengths differ (found for 'SE')
> > 
> > Parece como si no entendiera que la Y es "Y1" y la X es "X1" de df. 
> > 
> > ¿Alguna ayuda de como se puedes solucionas?
> > 
> > Muchas gracias a todos!
> > 
> >  
> > 
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> 
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es