A question regarding mvnpdf
조회 수: 1 (최근 30일)
이전 댓글 표시
Dear all,
I have a 2 by 1 variable u_t that varies across time t=1,....,T. This variable follows the multivariate normal N(0, (1\lambda_t)*Sigma) where lambda_t is a scalar , varies across time and follows a gamma density. Sigma is a 2 by 2 matrix.
I want to find the
j=1: T
mvnpdf(u_t(j,:),(1\lambda)Sigma)
end
where lambda=the vector of all lambda_t's
But the mvnpdf does not allow for that since this product (1\lambda)Sigma makes no sense. Is there a way of finding
mvnpdf(u_t(j,:),(1\lambda)Sigma) for each j?
Thanks is advance
답변 (1개)
Tom Lane
2013년 4월 2일
I'm not sure if the separate Sigma/lambda values correspond to the separate rows of u_t. If they do, here's an example where supply an array of Sigma values by stacking them in a 3-D array, and I multiply each Sigma by the corresponding lambda, and compute the density at the corresponding row of x.
>> x = [1 1;1 2;2 1];
>> mu = [0 0];
>> Sigma = cat(3,eye(2),2*eye(2),eye(2));
>> lambda = [1 .5 .6];
>> for j=1:3; disp(mvnpdf(x(j,:),mu,lambda(j)*Sigma(:,:,j))); end
0.0585
0.0131
0.0041
>> mvnpdf(x,mu,bsxfun(@times,reshape(lambda,[1 1 3]),Sigma))
ans =
0.0585
0.0131
0.0041
댓글 수: 3
Tom Lane
2013년 4월 3일
I see only two alternatives. One is to loop, each time supplying a single Sigma and the entire u_t array. The other is to expand both the u_t array and the Sigma 3-D array so that there are enough copies of each Sigma for each row of u_t, and enough copies of u_t for each Sigma. I think you'd be better of looping with a single Sigma matrix each time.
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!