[R] sapply() related query

Girish A.R. garamach at gmail.com
Wed Jun 17 18:11:33 CEST 2009


Thanks, Marc! This is what I was looking for.

best,

-Girish

PS: Also appreciate your concern about this being a part of a variable
selection process.

On Jun 17, 9:01 pm, Marc Schwartz <marc_schwa... at me.com> wrote:
> On Jun 17, 2009, at 10:06 AM, Girish A.R. wrote:
>
>
>
> > Hi folks,
>
> > I'm trying to consolidate the outputs (of anova() and lrm()) from
> > multiple runs of single-variable logistic regression. Here's how the
> > output looks:
> > ------------------------------------------------------------
> >                          y ~ x1      y ~ x2       y ~ x3      y ~
> > x4
> > Chi-Square 0.1342152  1.573538  1.267291  1.518200
> > d.f.                           2                 2
> > 2              1
> > P                0.9350946  0.4553136 0.5306538  0.2178921
> > R2            0.01003342   0.1272791 0.0954126 0.1184302
> > -------------------------------------------------------------------
> > The problem I have is when there are a lot more variables (15+) --- It
> > would be nice if this output is transposed.
>
> > A reproducible code is included below. I tried the transpose function,
> > but it didn't seem to work. If there is a neater way of getting the
> > desired output, I'd appreciate that as well.
>
> > ===========================================
> > Lines <- "y   x1  x2  x3  x4
> > 0   m   1   0   7
> > 1   t   2   1   13
> > 0   f   1   2   18
> > 1   t   1   2   16
> > 1   f   3   0   16
> > 0   t   3   1   16
> > 0   t   1   1   16
> > 0   t   2   1   16
> > 1   t   3   2   14
> > 0   t   1   0   9
> > 0   t   1   0   10
> > 1   m   1   0   4
> > 0   f   2   2   18
> > 1   f   1   1   12
> > 0   t   2   0   13
> > 0   t   1   1  16
> > 1   t   1   2   7
> > 0   f   2   1   18"
>
> > my.data <- read.table(textConnection(Lines), header = TRUE)
> > my.data$x1 <- as.factor(my.data$x1)
> > my.data$x2 <- as.factor(my.data$x2)
> > my.data$x3 <- as.factor(my.data$x3)
> > my.data$y <- as.logical(my.data$y)
>
> > sapply(paste("y ~", names(my.data)[2:dim(my.data)[2]]),
> > function(f){tab <- cbind(as.data.frame(t(anova(lrm(as.formula(f),data
> > = my.data,x=T,y=T))[1,])),
> > as.data.frame(t(lrm(as.formula(f),data = my.data,x=T,y=T)$stats[10])))
> > })
> > =================================
>
> > Thanks,
>
> > - Girish
>
> You can try something like this:
>
> library(Design)
>
> my.func <- function(x)
> {
>    mod <- lrm(my.data$y ~ x)
>    data.frame(t(anova(mod)[1, ]), R2 = mod$stats[10])
>
> }
>
>  > t(sapply(my.data[, -1], my.func))
>     Chi.Square d.f. P         R2
> x1 0.1342152  2    0.9350946 0.01003342
> x2 1.573538   2    0.4553136 0.1272791
> x3 1.267291   2    0.5306538 0.0954126
> x4 1.518200   1    0.2178921 0.1184302
>
> I am not sure what your end game might be, but would simply express  
> the appropriate caution if this is a step in any approach to variable  
> selection for subsequent model development...
>
> HTH,
>
> Marc Schwartz
>
> ______________________________________________
> R-h... at r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list