Wie von Karakal erwähnt, können Sie mvtnorm Paket in R. verwenden Angenommen , Sie ein lm Modell gemacht ( mit dem Namen „Modell“) von einem der Antwort in Ihrem Modell, und nannten es „Modell“, ist hier, wie die multivariate prädiktive Verteilung zu erhalten von mehreren Antworten "resp1", "resp2", "resp3", die in einer Matrixform Y gespeichert sind:
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)
Jetzt sind Quantile von ysim Beta-Erwartungstoleranzintervalle aus der prädiktiven Verteilung. Sie können die abgetastete Verteilung natürlich direkt verwenden, um zu tun, was Sie wollen.
Um Andrew F. zu antworten, sind Freiheitsgrade daher nu = N- (M + F) +1 ... N ist die Anzahl der Beobachtungen, M die Anzahl der Antworten und F die Anzahl der Parameter pro Gleichungsmodell. nu muss positiv sein.
(Vielleicht möchten Sie meine Arbeit in diesem Dokument lesen :-))