修改plot.ACF中的y轴限制(包nlme)

时间:2015-11-11 03:53:31

标签: r plot

我使用函数plot.ACF(package nlme)来绘制模型残差的自相关图。问题是图中的自相关很难读。如何修改功能图中的y轴限制.ACF?

这是我的图表:

enter image description here

1 个答案:

答案 0 :(得分:2)

nlme:::plot.ACF函数具有硬编码ylim赋值,因此您必须稍微修改该函数(下面的注释行是我更改的唯一位置)。

my_acf_plot <- function (x, alpha = 0, xlab = "Lag", ylab = "Autocorrelation", 
                         grid = FALSE,
                         ylim = NULL,  ## add ylim
                         ...) 
{
    require("lattice")   ## for xyplot, panel.* function
    ## (unnecessary originally because the package imports 
    ##  the required functions)
    object <- x
    if (is.null(ylim)) ylim <- range(object$ACF)  ## set ylim if unset
    if (alpha) {
        assign("stdv", qnorm(1 - alpha/2)/sqrt(attr(object, "n.used")))
        stMax <- max(stdv)
        ylim <- c(min(c(-stMax, ylim[1])), max(c(ylim[2], stMax)))
    }
    assign("alpha", as.logical(alpha))
    assign("grid", grid)
    xyplot(ACF ~ lag, object, ylim = ylim, panel = function(x, 
        y, ...) {
        x <- as.numeric(x)
        y <- as.numeric(y)
        if (grid) 
            panel.grid()
        panel.xyplot(x, y, type = "h")
        panel.abline(0, 0)
        if (alpha) {
            llines(x, stdv, lty = 2)
            llines(x, -stdv, lty = 2)
        }
    }, xlab = xlab, ylab = ylab, ...)
}

示例:

library(nlme)
set.seed(101)
d <- data.frame(y=rnorm(50),x=1:50)    
my_acf_plot(ACF(gls(y~x,data=d)),ylim=c(-0.3,0.5))