Caracal tarafından belirtildiği gibi, R'de mvtnorm paketini kullanabilirsiniz. Modelinizdeki yanıtlardan birinin bir lm modelini ("model" olarak adlandırılmış) yaptığınızı ve "model" olarak adlandırdığınızı varsayalım , burada çok değişkenli tahmin dağılımını nasıl elde edersiniz bir matris formunda saklanan "resp1", "resp2", "resp3" birkaç yanıtının:
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)
Şimdi, ysim'in miktarları yordayıcı dağılımdan gelen beta-beklenti tolerans aralıklarıdır, elbette istediğiniz şekilde yapmak için doğrudan örneklenmiş dağıtımı kullanabilirsiniz.
Andrew F.'i cevaplamak için, serbestlik dereceleri nu = N- (M + F) +1 ... N, gözlem sayısı, M yanıt sayısı ve D denklem modeli başına parametre sayısıdır. nu pozitif olmalı.
( Çalışmamı bu belgede okumak isteyebilirsiniz :-))