eval_AR_perf.m
上传用户:mozhenmi
上传日期:2008-02-18
资源大小:13k
文件大小:1k
源码类别:

其他小程序

开发平台:

Matlab

  1. function [ypred, ll, mse] = eval_AR_perf(coef, C, y, model)
  2. % Evaluate the performance of an AR model.
  3. % Inputs
  4. % coef(:,:,k,m) - coef. matrix to use for k steps back, model m
  5. % C(:,:,m)      - cov. matrix for model m
  6. % y(:,t)        - observation at time t
  7. % model(t)      - which model to use at time t (defaults to 1 if not specified)
  8. %
  9. % Outputs
  10. % ypred(:,t)    - the predicted value of y at t based on the evidence thru t-1.
  11. % ll            - log likelihood
  12. % mse           - mean squared error = sum_t d_t . d_t, where d_t = pred(y_t) - y(t)
  13. [s T] = size(y);
  14. k = size(coef, 3);
  15. M = size(coef, 4);
  16. if nargin<4, model = ones(1, T); end
  17. ypred = zeros(s, T);
  18. ypred(:, 1:k) = y(:, 1:k);
  19. mse = 0;
  20. ll = 0;
  21. for j=1:M
  22.   c(j) = log(normal_coef(C(:,:,j)));
  23.   invC(:,:,j) = inv(C(:,:,j));
  24. end
  25. coef = reshape(coef, [s s*k M]);
  26. for t=k+1:T
  27.   m = model(t-k);
  28.   past = y(:,t-1:-1:t-k);
  29.   ypred(:,t) = coef(:, :, m) * past(:);
  30.   d = ypred(:,t) - y(:,t);
  31.   mse = mse + d' * d;
  32.   ll = ll + c(m) - 0.5*(d' * invC(:,:,m) * d);
  33. end
  34. mse = mse / (T-k+1);