Comme mentionné par caracal, vous pouvez utiliser le paquetage mvtnorm dans R. En supposant que vous ayez créé un modèle lm (nommé "modèle") de l' une des réponses de votre modèle et que vous l'appeliez "modèle", voici comment obtenir la distribution prédictive multivariée de plusieurs réponses "resp1", "resp2", "resp3" stockées dans une matrice Y:
library(mvtnorm)
model = lm(resp1~1+x+x1+x2,datas) #this is only a fake model to get
#the X matrix out of it
Y = as.matrix(datas[,c("resp1","resp2","resp3")])
X = model.matrix(delete.response(terms(model)),
data, model$contrasts)
XprimeX = t(X) %*% X
XprimeXinv = solve(xprimex)
hatB = xprimexinv %*% t(X) %*% Y
A = t(Y - X%*%hatB)%*% (Y-X%*%hatB)
F = ncol(X)
M = ncol(Y)
N = nrow(Y)
nu= N-(M+F)+1 #nu must be positive
C_1 = c(1 + x0 %*% xprimexinv %*% t(x0)) #for a prediction of the factor setting x0 (a vector of size F=ncol(X))
varY = A/(nu)
postmean = x0 %*% hatB
nsim = 2000
ysim = rmvt(n=nsim,delta=postmux0,C_1*varY,df=nu)
Maintenant, les quantiles de ysim sont des intervalles de tolérance aux attentes bêta de la distribution prédictive, vous pouvez bien sûr utiliser directement la distribution échantillonnée pour faire ce que vous voulez.
Pour répondre à Andrew F., les degrés de liberté sont donc nu = N- (M + F) +1 ... N étant le nombre d'observations, M le nombre de réponses et F le nombre de paramètres par modèle d'équation. nu doit être positif.
(Vous voudrez peut-être lire mon travail dans ce document :-))