我想重新调整并获得新的估计值,以便通过考虑长期平均值来重新校准最新模型拟合(本例中较短的样本50 obs)。那么如何进行拦截(斜率?)转换?
以下是一些数据:
set.seed(2017); n <- 200; price <- rep(55, n); walk <- rnorm(n)
for(i in 2:n) price[i] <- price[i-1] + walk[i];
data <- data.frame(price, idx=seq_along(price))
模型部分:
# mean of price on whole data set: 55.03
plot(price ~ idx, data=data)
abline(lm(price ~ 1, data=data), col="red", lwd=2)
# here the mean on reduced sample is 52.85:
# lm(price ~ 1, data=data[((nrow(data)-50):nrow(data)), ])
abline(lm(price ~ idx, data=data[((nrow(data)-50):nrow(data)), ]));
那么如何适应lm(price ~ idx, data=data[((nrow(data)-50):nrow(data)), ])
的契合度;这样它就反映了整个数据集的long term mean
。 (无需重新运行整个数据集的回归。)
示例:
fit <- lm(price ~ idx, data=data[((nrow(data)-50):nrow(data)), ])
fit
predict(fit, newdata = data.frame(idx=200))
# mean value 56.71, needed `long-term mean` of 55.03 (circa)