时间序列上混合效应模型的预测值总和的方差

机器算法验证 混合模式 方差 随机变量
2022-01-20 23:41:19

我有一个混合效应模型(实际上是一个广义的加性混合模型),它可以为我提供时间序列的预测。为了抵消自相关,我使用了 corCAR1 模型,因为我缺少数据。数据应该给我一个总负载,所以我需要对整个预测区间求和。但我还应该估计该总负载的标准误差。

如果所有预测都是独立的,则可以通过以下方式轻松解决:

Var(i=1nE[Xi])=i=1nVar(E[Xi])Var(E[Xi])=SE(E[Xi])2

问题是,预测值来自模型,并且原始数据具有自相关性。整个问题导致以下问题:

  1. 我是否正确假设计算预测的 SE 可以解释为该预测的期望值的方差的根?我倾向于将预测解释为“平均预测”,因此对一整套均值求和。
  2. 我如何在这个问题中加入自相关,或者我可以安全地假设它不会对结果产生太大影响?

这是 R 中的一个示例。我的真实数据集有大约 34.000 个测量值,因此可扩展性是一个问题。这就是我在每个月内对自相关进行建模的原因,否则计算将不再可能。这不是最正确的解决方案,但最正确的解决方案是不可行的。

set.seed(12)
require(mgcv)

Data <- data.frame(
    dates = seq(as.Date("2011-1-1"),as.Date("2011-12-31"),by="day")
)

Data <- within(Data,{
X <- abs(rnorm(nrow(Data),3))
Y <- 2*X + X^2 + scale(Data$dates)^2
month <- as.POSIXlt(dates)$mon+1
mday <- as.POSIXlt(dates)$mday
})

model <- gamm(Y~s(X)+s(as.numeric(dates)),correlation=corCAR1(form=~mday|month),data=Data)

preds <- predict(model$gam,se=T)

Total <- sum(preds$fit)

编辑 :

经验教训:在恐慌之前先浏览所有帮助文件中的所有示例。在 predict.gam 的帮助文件中,我可以找到:

#########################################################
## now get variance of sum of predictions using lpmatrix
#########################################################

Xp <- predict(b,newd,type="lpmatrix") 

## Xp %*% coef(b) yields vector of predictions

a <- rep(1,31)
Xs <- t(a) %*% Xp ## Xs %*% coef(b) gives sum of predictions
var.sum <- Xs %*% b$Vp %*% t(Xs)

这似乎接近我想要做的。这仍然没有告诉我它是如何完成的。我可以得到它基于线性预测矩阵的事实。仍然欢迎任何见解。

1个回答

在矩阵表示法中,混合模型可以表示为

y = X*beta + Z*u + epsilon

其中 X 和 Z 分别是与固定效应和随机效应观测相关的已知设计矩阵。

我将应用一个简单而充分(但不是最好的)转换来校正涉及丢失第一次观察的自相关,并将 [y1, y2,...yn] 的列向量替换为更小的一个观察列向量,即:[y2 - rho*y1, y3 - rho*y2,..., yn - rho*y(n-1)],其中 rho 是您对串行自相关的估计值。

这可以通过乘以矩阵 T 来执行,形成 T*y,其中 T 的第一行组成如下:[ -rho, 1, 0, 0,....],第二行:[ 0, -rho, 1, 0, 0, ...] 等。同理,其他设计矩阵改为 T*X 和 T*Z。此外,误差项的方差-协方差矩阵也发生了变化,现在有了独立的误差项。

现在,只需使用新的设计矩阵计算解决方案。