Regresion polinomial Daniel Fernado Zambrano Gutierrez Datos: Se definen los datos ,se extraen los vectores X Y y se establece el orden del polinomio orden = 13; % D = [0 -5; % 2 150; % 4 -10; % 6 50; % 8 -200; % 10 0 ; % 12 -100 ]; % X = D(:,1); % Y = D(:,2); y=@(x) 10*exp(-0.5*x)+2; X=[0:0.2:6]'; Y=awgn(y(X),10,0); Generacion del modelo: El modelo de regresión polinomial se define como: Se puede expresar en forma de matriz en términos de una matriz de diseño vector de parámetro y un vector de errores aleatorios. La i-ésima fila de , un vector de respuesta y contendrá el valor , un e para la muestra de datos i-ésimo. Entonces el modelo se puede escribir como un sistema de ecuaciones lineales: Empleando notación matricial pura se escribe como: MX = Generar_Modelo(X,orden); se envian como parametros el orden del polinomio y el vector 1 . Mas adelantese explica la funcion Modelo(). El vector de coeficientes de regresión polinomial estimados es: El termino se denomina matriz pseudoinversa y se puede rescribir como En Matlab podemos usar la funcion pinv( ) . b = pinv(MX)*Y; Coeficientes del polinomio b b = 14×1 -0.0002 0.0068 -0.1126 1.0805 -6.6294 27.2088 -75.9925 144.4160 -184.5149 155.4567 Generamos nuestra Y estimada. Ye = MX*b; Verificamos el modelo. X2 = (min(X)-1:0.01:max(X)+1)'; Ye2 = Generar_Modelo(X2,orden)*b; Graficamos el modelo obtenido y los datos iniciales figure() plot(X,Y,'*r',X,Ye,'g+',X2,Ye2,'b') grid on legend('Datos','Y estimada','Modelo generado') xlim([-1.1 13.7]) ylim([-536 718]) 2 . Calculamos el error obtenido N = length(X); error = ( (Y-Ye)'*(Y-Ye))/N error = 0.0505 Funcion Modelo function MX = Generar_Modelo(X,orden) f = @(X1,orde) X1.^orde; MX = ones(size(X)); for i = 1 : orden MX = [ f(X,i) MX]; end end Se reciben los datos de X y el orden, se procede a realizar una evaluacion mediante una funcion anonima y se finaliza generando la matriz MX. 3 4