I try to evaluate the pdf of a multivariate t-distribution in Matlab. Unfortunately the function is only defined for a correlation matrix and not for a covariance matrix. I guess i can rescale the input data and use the Matlab function.

In 1d this is done by dividing the data through the standard deviation $\sigma$, computing the pdf, and dividing the result by $\sigma$.

How is this done in the multivariate case?

An example:

I create random draws where $X \sim \mathcal{N}(0,{\Sigma})$ and $\Sigma$ may equal any covariance matrix. In the next step I want to evaluate the pdf of a t-distribution of my data $X$ with some degree of freedom $\nu$. I want to know $p(X|\Sigma,\nu)$.

In Matlab the function mvtpdf accepts only correlation matrices. In my understanding I have to scale my data $X$ with some transformation $T(\cdot)$ to match the different scales. How do I find $T(\cdot)$?

  • $\begingroup$ MATLAB apparently already provides solution to convert covariance matrix to correlation matrix : fr.mathworks.com/help/stats/corrcov.html $\endgroup$ – Riff Apr 21 '16 at 9:35
  • $\begingroup$ Thanks for the hint, but i think this does not help me with the rescaling of the input data, because the data would still lie in the wrong scale if I just use the correlation matrix instead of the covariance matrix. $\endgroup$ – tho Apr 21 '16 at 9:43
  • $\begingroup$ Oh I though that you had a function and you wanted to rescale to get the correlation matrix and use that function. $\endgroup$ – Riff Apr 21 '16 at 9:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.