Line 32: | Line 32: | ||
Golsa | Golsa | ||
+ | |||
+ | |||
+ | |||
+ | == Cholesky Decomposition == | ||
+ | |||
+ | I wrote this MATLAB / FreeMat code to compute the Cholesky Decomposition of a matrix. The matrix <b>A</b> should be real and positive definite. | ||
+ | |||
+ | function L = cholesky(A) | ||
+ | N = length(A); | ||
+ | L = zeros(N); | ||
+ | for i=1:N | ||
+ | for j=1:i-1 | ||
+ | L(i,j) = 1/L(j,j) * (A(i,j) - L(i,1:j-1)*L(j,1:j-1)'); | ||
+ | end | ||
+ | L(i,i) = sqrt(A(i,i) - L(i,1:i-1)*L(i,1:i-1)'); | ||
+ | end | ||
+ | end | ||
+ | |||
+ | You can use the resulting lower triangular matrix <b>L</b> to generate multivariate normal samples with covariance given by the matrix <b>A</b> by computing | ||
+ | |||
+ | <b>X</b> = <b><math>\mu</math></b> + <b>L Z</b>, where <b>Z</b> is iid standard normal. | ||
+ | |||
+ | [[User:Pritchey|Pritchey]] 20:28, 9 April 2010 (UTC) |
Revision as of 15:28, 9 April 2010
MATLAB has a "mle" function for maximum likelihood estimation. I think that this function is useful to verify the result of hw2 if you have MATLAB. I try to find the effect of the sample size in MLE using "mle" function because the number of samples is critical for estimation. To do this, I generate samples from normal distribution with mean as 0 and std as 5. The below graph shows the results of MLE according to the number of samples.
The code for this graph is like below.
samples_step = 3; num_samples = samples_step:samples_step:10000; len = length(num_samples); mu = 0; sigma = 5; muhat = zeros(1, len); sigmahat = zeros(1, len); for x = num_samples data = mu + sigma * randn(1, x); phat = mle(data(1, :)); muhat(1, x/samples_step) = phat(1); sigmahat(1, x/samples_step) = phat(2); end plot(num_samples, muhat); hold on; plot(num_samples, sigmahat);
--Han84 22:49, 2 April 2010 (UTC)
Need real database? Look it up in this website:
http://archive.ics.uci.edu/ml/datasets.html
have fun!
Golsa
Cholesky Decomposition
I wrote this MATLAB / FreeMat code to compute the Cholesky Decomposition of a matrix. The matrix A should be real and positive definite.
function L = cholesky(A) N = length(A); L = zeros(N); for i=1:N for j=1:i-1 L(i,j) = 1/L(j,j) * (A(i,j) - L(i,1:j-1)*L(j,1:j-1)'); end L(i,i) = sqrt(A(i,i) - L(i,1:i-1)*L(i,1:i-1)'); end end
You can use the resulting lower triangular matrix L to generate multivariate normal samples with covariance given by the matrix A by computing
X = $ \mu $ + L Z, where Z is iid standard normal.
Pritchey 20:28, 9 April 2010 (UTC)