Dear list,
I am curious about how R computes the autocorrelation? What formula does
it use? Theoretical or sample ACF?
I have tried to type acf in the R console, but I don't understand what it
is actually doing besides the basic if...else... statement. Could someone
help me read this output?
> acf
function (x, lag.max = NULL, type = c("correlation", "covariance",
"partial"), plot = TRUE, na.action = na.fail, demean = TRUE,
...)
{
type <- match.arg(type)
if (type == "partial") {
m <- match.call()
m[[1L]] <- quote(stats::pacf)
m$type <- NULL
return(eval(m, parent.frame()))
}
series <- deparse(substitute(x))
x <- na.action(as.ts(x))
x.freq <- frequency(x)
x <- as.matrix(x)
if (!is.numeric(x))
stop("'x' must be numeric")
sampleT <- as.integer(nrow(x))
nser <- as.integer(ncol(x))
if (is.na(sampleT) || is.na(nser))
stop("'sampleT' and 'nser' must be integer")
if (is.null(lag.max))
lag.max <- floor(10 * (log10(sampleT) - log10(nser)))
lag.max <- as.integer(min(lag.max, sampleT - 1L))
if (is.na(lag.max) || lag.max < 0)
stop("'lag.max' must be at least 0")
if (demean)
x <- sweep(x, 2, colMeans(x, na.rm = TRUE), check.margin = FALSE)
lag <- matrix(1, nser, nser)
lag[lower.tri(lag)] <- -1
acf <- .Call(C_acf, x, lag.max, type == "correlation")
lag <- outer(0:lag.max, lag/x.freq)
acf.out <- structure(list(acf = acf, type = type, n.used = sampleT,
lag = lag, series = series, snames = colnames(x)), class = "acf")
if (plot) {
plot.acf(acf.out, ...)
invisible(acf.out)
}
else acf.out
}
<bytecode: 0x1020badf0>
<environment: namespace:stats>
Thanks in advance,
Mike
[[alternative HTML version deleted]]
______________________________________________
[email protected] 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.