R: Generic Function for Making Coefficient Plot

coefplot {arm} | R Documentation

## Generic Function for Making Coefficient Plot

### Description

Functions that plot the coefficients plus and minus 1 and 2 sd from a lm, glm, bugs, and polr fits.

### Usage

    coefplot(object,...)

    ## Default S3 method:
    coefplot(coefs, sds, CI=2,
                    lower.conf.bounds, upper.conf.bounds,
                    varnames=NULL, vertical=TRUE,
                    v.axis=TRUE, h.axis=TRUE,
                    cex.var=0.8, cex.pts=0.9,
                    col.pts=1, pch.pts=20, var.las=2,
                    main=NULL, xlab=NULL, ylab=NULL, mar=c(1,3,5.1,2),
                    plot=TRUE, add=FALSE, offset=.1, ...)

    ## S4 method for signature 'bugs'
    coefplot(object, var.idx=NULL, varnames=NULL,
                CI=1, vertical=TRUE,
                v.axis=TRUE, h.axis=TRUE,
                cex.var=0.8, cex.pts=0.9,
                col.pts=1, pch.pts=20, var.las=2,
                main=NULL, xlab=NULL, ylab=NULL,
                plot=TRUE, add=FALSE, offset=.1,
                mar=c(1,3,5.1,2), ...)

    ## S4 method for signature 'numeric'
    coefplot(object, ...)
    ## S4 method for signature 'lm'
    coefplot(object, varnames=NULL, intercept=FALSE, ...)
    ## S4 method for signature 'glm'
    coefplot(object, varnames=NULL, intercept=FALSE, ...)
    ## S4 method for signature 'polr'
    coefplot(object, varnames=NULL, ...)

### Arguments

`object` | fitted objects-lm, glm, bugs and polr, or a vector of coefficients.
`...` | further arguments passed to or from other methods.
`coefs` | a vector of coefficients.
`sds` | a vector of sds of coefficients.
`CI` | confidence interval, default is 2, which will plot plus and minus 2 sds or 95% CI. If CI=1, plot plus and minus 1 sds or 50% CI instead.
`lower.conf.bounds` | lower bounds of confidence intervals.
`upper.conf.bounds` | upper bounds of confidence intervals.
`varnames` | a vector of variable names, default is NULL, which will use the names of variables; if specified, the length of varnames must be equal to the length of predictors, including the intercept.
`vertical` | orientation of the plot, default is TRUE which will plot variable names in the 2nd axis. If FALSE, plot variable names in the first axis instead.
`v.axis` | default is TRUE, which shows the bottom axis–axis(1).
`h.axis` | default is TRUE, which shows the left axis–axis(2).
`cex.var` | The fontsize of the varible names, default=0.8.
`cex.pts` | The size of data points, default=0.9.
`col.pts` | color of points and segments, default is black.
`pch.pts` | symbol of points, default is solid dot.
`var.las` | the orientation of variable names against the axis, default is 2. see the usage of `las` in `par`.
`main` | The main title (on top) using font and size (character expansion) `par("font.main")` and color `par("col.main")`.
`xlab` | X axis label using font and character expansion `par("font.lab")` and color `par("col.lab")`.
`ylab` | Y axis label, same font attributes as `xlab`.
`mar` | A numerical vector of the form `c(bottom, left, top, right)` which gives the number of lines of margin to be specified on the four sides of the plot. The default is `c(1,3,5.1,2)`.
`plot` | default is TRUE, plot the estimates.
`add` | if add=TRUE, plot over the existing plot. default is FALSE.
`offset` | add extra spaces to separate from the existing dots. default is 0.1.

`var.idx` | the index of the variables of a bugs object, default is NULL which will plot all the variables.
`intercept` | If TRUE will plot intercept, default=FALSE to get better presentation.

### Details

This function plots coefficients from bugs, lm, glm and polr with 1 sd and 2 sd interval bars.

### Value

Plot of the coefficients from a bugs, lm or glm fit. You can add the intercept, the variable names and the display the result of the fitted model.

### Author(s)

Yu-Sung Su suyusung@tsinghua.edu.cn

### References

Andrew Gelman and Jennifer Hill, Data Analysis Using Regression and Multilevel/Hierarchical Models, Cambridge University Press, 2006.

### See Also

`display`, `par`, `lm`, `glm`, `bayesglm`, `plot`

### Examples

    old.par <- par(no.readonly = TRUE)

     y1 <- rnorm(1000,50,23)
     y2 <- rbinom(1000,1,prob=0.72)
     x1 <- rnorm(1000,50,2)
     x2 <- rbinom(1000,1,prob=0.63)
     x3 <- rpois(1000, 2)
     x4 <- runif(1000,40,100)
     x5 <- rbeta(1000,2,2)

     longnames <- c("a long name01","a long name02","a long name03",
                    "a long name04","a long name05")

     fit1 <- lm(y1 ~ x1 + x2 + x3 + x4 + x5)
     fit2 <- glm(y2 ~ x1 + x2 + x3 + x4 + x5,
                family=binomial(link="logit"))
     op <- par()
     # plot 1
     par (mfrow=c(2,2))
     coefplot(fit1)
     coefplot(fit2, col.pts="blue")

     # plot 2
     longnames <- c("(Intercept)", longnames)
     coefplot(fit1, longnames, intercept=TRUE, CI=1)

     # plot 3
     coefplot(fit2, vertical=FALSE, var.las=1, frame.plot=TRUE)

     # plot 4: comparison to show bayesglm works better than glm
     n <- 100
     x1 <- rnorm (n)
     x2 <- rbinom (n, 1, .5)
     b0 <- 1
     b1 <- 1.5
     b2 <- 2
     y <- rbinom (n, 1, invlogit(b0+b1*x1+b2*x2))
     y <- ifelse (x2==1, 1, y)
     x1 <- rescale(x1)
     x2 <- rescale(x2, "center")

     M1 <- glm (y ~ x1 + x2, family=binomial(link="logit"))
           display (M1)
     M2 <- bayesglm (y ~ x1 + x2, family=binomial(link="logit"))
           display (M2)

    #===================
    #    stacked plot
    #===================
      coefplot(M2, xlim=c(-1,5), intercept=TRUE)
      coefplot(M1, add=TRUE, col.pts="red")

    #====================
    # arrayed plot
    #====================
      par(mfrow=c(1,2))
      x.scale <- c(0, 7.5) # fix x.scale for comparison
      coefplot(M1, xlim=x.scale, main="glm", intercept=TRUE)
      coefplot(M2, xlim=x.scale, main="bayesglm", intercept=TRUE)

    # plot 5: the ordered logit model from polr
     M3 <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
     coefplot(M3, main="polr")

     M4 <- bayespolr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
     coefplot(M4, main="bayespolr", add=TRUE, col.pts="red")

    ## plot 6: plot bugs & lmer
    # par <- op
    # M5 <- lmer(Reaction ~ Days + (1|Subject), sleepstudy)
    # M5.sim <- mcsamp(M5)
    # coefplot(M5.sim, var.idx=5:22, CI=1, ylim=c(18,1), main="lmer model")

    # plot 7: plot coefficients & sds vectors
     coef.vect <- c(0.2, 1.4, 2.3, 0.5)
     sd.vect <- c(0.12, 0.24, 0.23, 0.15)
     longnames <- c("var1", "var2", "var3", "var4")
     coefplot (coef.vect, sd.vect, varnames=longnames, main="Regression Estimates")
     coefplot (coef.vect, sd.vect, varnames=longnames, vertical=FALSE,
        var.las=1, main="Regression Estimates")

    par(old.par)

[Package arm version 1.9-3 Index]