Seperti disebutkan oleh caracal, Anda dapat menggunakan paket mvtnorm di R. Dengan anggapan Anda membuat model lm (bernama "model") dari salah satu respons dalam model Anda, dan menyebutnya "model", berikut adalah cara mendapatkan distribusi prediktif multivarian. dari beberapa respons "resp1", "resp2", "resp3" disimpan dalam bentuk matriks 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)
Sekarang, kuantil dari ysim adalah interval toleransi beta-ekspektasi dari distribusi prediktif, Anda tentu saja dapat langsung menggunakan distribusi sampel untuk melakukan apa pun yang Anda inginkan.
Untuk menjawab Andrew F., derajat kebebasan karenanya nu = N- (M + F) +1 ... N menjadi # pengamatan, M # tanggapan dan F # parameter per model persamaan. nu harus positif.
(Anda mungkin ingin membaca karya saya di dalam dokumen ini :-))