How do you set up a linear regression with an expanding window in R without using packages?
What is the best way to set up a for loop so that the regression is done first with 30 days of data, then 31 days, then 32, etc?
If all you want is an example of how to set up an expanding window, here is one. It loops (lapply
) from start
to the length of vector x
, the regressor fitting a linear model to the first i
data points.
start <- 30
res <- lapply(start:n, function(i){
k <- seq.int(i)
fit <- lm(y[k] ~ x[k])
c(days = i, coef(fit))
})
res <- do.call(rbind, res)
op <- par(mfrow = c(1, 2))
plot(res[,1], res[,2], xlab = "window size", ylab = "Intercept", pch = 16)
plot(res[,1], res[,3], xlab = "window size", ylab = "beta", pch = 16)
par(op)
Data creation code.
set.seed(1234)
n <- 100
x <- jitter(seq.int(n))
y <- x + rnorm(n)