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