Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
b15ba907-4e25-4fc8-b2a7-e7a1b131d0f5 Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão1/script4.sce clear; clc; //lê dados do arquivo X = fscanfMat("C:\Users\sergi\Desktop\Trabalho1-IC\aerogerador.dat"); //separa os vetores x e y y = X(:,2); x = X(:,1); //encontra o beta X1 = [ones(2250,1)x]; b1 = inv(X1'*X1)*X1'*y; X2 = [ones(2250,1)x x^2]; b2 = inv(X2'*X2)*X2'*y; X3 = [ones(2250,1)x x^3]; b3 = inv(X3'*X3)*X3'*y; X4 = [ones(2250,1)x x^2 x^3 x^4]; b4 = inv(X4'*X4)*X4'*y; //determina os valores de ybarra e ychapeu ybarra=mean(y,'r'); ychap = X4*b4; //determina o erro e4 = y - ychap; //plota os graficos plot(x,y,"b*"); plot(x,ychap, "r-"); //determina o Coeficiente de determinação SQe = sum(e4^2); Syy = sum((y-ybarra)^2); R1 = 1-(SQe/Syy); //determina o R² ajustado SQeAdj = SQe/(2250-5); SyyAdj = Syy/(2250-1); R2 = 1 - (SQeAdj/SyyAdj); printf("O R² é: %f \n", R1); printf(" O R² ajustado é: %f", R2); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão1/script2.sce clear; clc; //lê dados do arquivo X = fscanfMat("C:\Users\sergi\Desktop\Trabalho1-IC\aerogerador.dat"); //separa os vetores x e y y = X(:,2); x = X(:,1); //encontra o beta X1 = [ones(2250,1)x]; b1 = inv(X1'*X1)*X1'*y; X2 = [ones(2250,1)x x^2]; b2 = inv(X2'*X2)*X2'*y; //determina os valores de ybarra e ychapeu ybarra=mean(y,'r'); ychap = X2*b2; //determina o erro e2 = y - ychap; //plota os graficos plot(x,y,"b*"); plot(x,ychap, "r-"); //determina o Coeficiente de determinação SQe = sum(e2^2); Syy = sum((y-ybarra)^2); R1 = 1-(SQe/Syy); //determina o R² ajustado SQeAdj = SQe/(2250-3); SyyAdj = Syy/(2250-1); R2 = 1 - (SQeAdj/SyyAdj); printf("O R² é: %f \n", R1); printf(" O R² ajustado é: %f", R2); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão2/RegressaoMultipla.m clear; clc; D =[122 139 0.115; 114 126 0.120; 086 090 0.105; 134 144 0.090; 146 163 0.100; 107 136 0.120; 068 061 0.105; 117 062 0.080; 071 041 0.100; 098 120 0.115]; x = [D(:,1) D(:,2)]; x1 = D(:,1); x2 = D(:,2); y = D(:,3); X = [ones(10,1),x]; b = inv(X'*X)*X'*y; %determina os valores de ybarra e ychapeu ybarra=mean(y,2); ychap = X*b; %determina o erro e1 = y - ychap; %plota os graficos plot3(x1,x2,y,"b*"); grid on; hold on; plot3(x1,x2,ychap,"r-"); %[X,Y] = meshgrid(x1,x2); %Z = [ones(10,1),ychap]; %mesh(X,Y,ychap); %determina o Coeficiente de determinação SQe = sum((e1).^2); Syy = sum((y-ybarra).^2); R1 = 1-(SQe/Syy); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão1/script1.sce clear; clc; //lê dados do arquivo X = fscanfMat("C:\Users\sergi\Desktop\Trabalho1-IC\aerogerador.dat"); //separa os vetores x e y y = X(:,2); x = X(:,1); //encontra o beta X1 = [ones(2250,1)x]; b1 = inv(X1'*X1)*X1'*y; //determina os valores de ybarra e ychapeu ybarra=mean(y,'r'); ychap = X1*b1; //determina o erro e1 = y - ychap; //plota os graficos plot(x,y,"b*"); plot(x,ychap, "r-"); //determina o Coeficiente de determinação SQe = sum(e1^2); Syy = sum((y-ybarra)^2); R1 = 1-(SQe/Syy); //determina o R² ajustado SQeAdj = SQe/(2250-2); SyyAdj = Syy/(2250-1); R2 = 1 - (SQeAdj/SyyAdj); printf("O R² é: %f \n", R1); printf(" O R² ajustado é: %f", R2); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão1/script5.sce clear; clc; //lê dados do arquivo X = fscanfMat("C:\Users\sergi\Desktop\Trabalho1-IC\aerogerador.dat"); //separa os vetores x e y y = X(:,2); x = X(:,1); //encontra o beta X1 = [ones(2250,1)x]; b1 = inv(X1'*X1)*X1'*y; X2 = [ones(2250,1)x x^2]; b2 = inv(X2'*X2)*X2'*y; X3 = [ones(2250,1)x x^3]; b3 = inv(X3'*X3)*X3'*y; X4 = [ones(2250,1)x x^2 x^3 x^4]; b4 = inv(X4'*X4)*X4'*y; X5 = [ones(2250,1)x x^2 x^3 x^4 x^5]; b5 = inv(X5'*X5)*X5'*y; //determina os valores de ybarra e ychapeu ybarra=mean(y,'r'); ychap = X5*b5; //determina o erro e5 = y - ychap; //plota os graficos plot(x,y,"b*"); plot(x,ychap, "r-"); //determina o Coeficiente de determinação SQe = sum(e5^2); Syy = sum((y-ybarra)^2); R1 = 1-(SQe/Syy); //determina o R² ajustado SQeAdj = SQe/(2250-6); SyyAdj = Syy/(2250-1); R2 = 1 - (SQeAdj/SyyAdj); printf("O R² é: %lf \n", R1); printf(" O R² ajustado é: %lf", R2); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Questão1/script3.sce clear; clc; //lê dados do arquivo X = fscanfMat("C:\Users\sergi\Desktop\Trabalho1-IC\aerogerador.dat"); //separa os vetores x e y y = X(:,2); x = X(:,1); //encontra o beta X1 = [ones(2250,1)x]; b1 = inv(X1'*X1)*X1'*y; X2 = [ones(2250,1)x x^2]; b2 = inv(X2'*X2)*X2'*y; X3 = [ones(2250,1)x x^2 x^3]; b3 = inv(X3'*X3)*X3'*y; //determina os valores de ybarra e ychapeu ybarra=mean(y,'r'); ychap = X3*b3; //determina o erro e3 = y - ychap; //plota os graficos plot(x,y,"b*"); plot(x,ychap, "r-"); //determina o Coeficiente de determinação SQe = sum(e3^2); Syy = sum((y-ybarra)^2); R1 = 1-(SQe/Syy); //determina o R² ajustado SQeAdj = SQe/(2250-4); SyyAdj = Syy/(2250-1); R2 = 1 - (SQeAdj/SyyAdj); printf("O R² é: %f \n", R1); printf(" O R² ajustado é: %f", R2); Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/.~lock.Documento1.docx# ,sergio,Sergio,23.04.2018 23:45,file:///home/sergio/.config/libreoffice/4; Trabalho Inteligencia Computacional - Sergio Saraiva de Sousa Neto/Documento1.pdf UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS SOBRAL ENGENHARIA DA COMPUTAÇÃO INTELIGENICA COMPUTACIONAL SÉRGIO SARAIVA DE SOUSA NETO – 385138 IMPLEMENTAÇÃO REGRESSÃO LINEAR E MULTIPLA SOBRAL 2018.1 1. INTRODUÇÃO Utilizando-se dos conhecimentos absorvidos em sala de aula, foi proposto um trabalho para a implementação dos métodos de regressão multipla e linear em linguagem de programação. Foi utilizado Scilab, para a regressão linar, e o MatLab, para a regressão multipla, além de que as ferramentas gráficas do MatLab foram mais fáceis e poderosas de usar em comparação as do Scilab. Os métodos tentam prever, usando como base, comportamentos observados, no caso do trabalho, um aerogerador, traçando uma reta por meio do método de minimos quadrados, tornando possível uma estimativa bastante próxima de cenários reais não observados. 2. REGRESSÃO LINEAR Após a leitura dos dados do arquivo por meio da função "fscafMat", os valores foram armazenados na matriz X, e depois os vetores foram divididos nas componentes x e y. Em seguida encontramos o X1 e o beta 1 pela formula beta = (X1'*X1)^(- 1)*X1'*y. Determinamos então ychap, multiplicando o X1 por beta1. Essa será a reta plotada no gráfico. 2.1 ANÁLISE DO R² E R² AJUSTADO Os valores encontrados foram satisfatórios e esperados, e notou-se que a partir de um certo número de fatores o ganho não é tão considerável em R², além de que pode se tornar muito dispendioso computacionalmete, pois quanto mais fatores, maior o custo, e a partir dessa quantidade de fatores o ganho é mínimo. As retas também conseguiram demonstrar bem os dados observados, contudo nota-se pouca diferença a partir do quarto fator. 3. REGRESSÃO MULTIPLA Após a leitura dos dados da base de dados D, foram separadas as colunas 1 e 2 na matriz x e a coluna 3 foi alocada no vetor independente x. Há também a divisão da matriz x em dois vetores de coluna única onde x1 é a coluna 1 da matriz x e o x2 é a coluna 2 da matriz x2. Encontramos, então X e Beta (b) e por fim calculamos y chapeu. Tentamos plotar o plano, contudo não foi possível solucionar o erro acusado pelo o MatLab. Entretanto traçamos uma reta com o plot3 e percebemos que ela passa proxima aos pontos e que se a vemos de um certo angulo é possível imaginar um plano. 3.1 ANÁLISE DE R² Quando observamos a variável R1 (que representa R² no código) no MatLab ele diz que o seu valor é -inf, mas se executarmos o mesmo código no Scilab o valor passa a ser 0.723882. Este valor não é muito satisfatório, mas pode ser melhorado com a utilização de mais fatores quando determinamos o y chapeu.
Compartilhar