quinta-feira, 10 de maio de 2012

REGRESSÃO MQO - MATLAB

Segue abaixo rotina em Matlab para regressao usando MQO.

% Regressao usando o Metodo dos Mínimos Quadrados Ordinarios (MQO)
% Elaborado por Celso Jose Costa Junior
% Os dados de entrada sao: variavel dependente (vetor y); e variavel
% independente (matriz x).
% exemplo: y = [y1; y2;...;yn]
%          x = [x21 x31 ... xk1; x22 x32 ... xk2; ... ;x2n x3n ... xkn]

function [beta, F, R2, t] = mqo (y,x)

% Recebe o numero de linhas (l) e de colunas (c) de x
[l,c] = size(x);

% Acrescente a primeira coluna unitaria na matriz x
c2 = c + 1;
x2 = ones(l,c2);
k = 1;
for i = 1:l
    for j = 2:c2
        x2(i,j) = x(i,k);
        k = k +1;
    end
    k = 1;
end

% Encontre os parametros betas
beta = inv(x2'*x2)*(x2'*y);

% Prepare a tabela ANOVA
ye = x2*beta;
residuo = y - ye;
y2 = y - mean(y);

SQR = residuo'*residuo;  % Soma dos quadrados dos residuos
SQT = y2'*y2;            % Soma dos quadrados totais
SQE = SQT - SQR;         % Soma dos quadrados explicados

gl_E = c2 - 1;           % Graus de liberdade dos explicados
gl_R = (l - 1) - gl_E;   % Graus de liberdade dos residuos

MQE = SQE/gl_E;
MQR = SQR/gl_R;

F = MQE/MQR;
R2 = SQE/SQT;

%Encontre as estatisticas t dos parametros betas
variancia = MQR*(inv(x2'*x2));
for i=1:c2
    t(i,1) = beta(i,1)/(variancia(i,i))^0.5;
end

Nenhum comentário:

Postar um comentário