clear all; close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Carica il file di dati che vogliamo analizzare % L'opzione -ascii dice a Matlab che si tratta di % dati in formato puro testo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% load -ascii dati_reg2.txt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % I dati sono stati caricati da Matlab in una matrice % di nome dati_reg2, cioe' con lo stesso nome del file % Estraiamo ora la variabile y e il vettore x %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x = dati_reg2(:,1); y = dati_reg2(:,end); % Tracciamo lo scatter plot di x contro y % unitamente alla retta di regressione figure(1) plot(x,y,'.') l1 = lsline; set(l1,'Color','r','LineWidth',2) title('Y vs. X e previsione del modello lineare') print reg2_1.wmf -dmeta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stimiamo un modello di regressione lineare con il % comando regress e tracciamo alcuni grafici per % l'analisi dei residui %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(2) % Prepariamo la matrice dei dati % Il modello di regressione e': y=a0+a1*x X = [ones(size(x)) x]; [b1,b1int,res1,res1int,stats1]=regress(y,X); % Qui troviamo il coeff. R-quadro che ci fornisce una misura % della bonta' di adattamento del modello ai dati stats1(1) % Questo e' il grafico di figura 1 subplot(2,2,1) [xsort,idx]=sort(x); plot(x,y,'.',x,X*b1,'.') title(['Y e previsione vs. X - R^2=',num2str(floor(100*stats1(1))/100)]) % Grafico dei residui del modello contro il valore di x subplot(2,2,2) plot(xsort,res1(idx)) xlabel('X') ylabel('Residui') title('Residui modello vs. valori di X') % Istogramma dei residui e curva gaussiana per % il confronto delle distribuzioni subplot(2,2,3) me1=mean(res1); sd1=std(res1); res1std=(res1-me1)/sd1; [fr1,xc1]=hist(res1std,40); delta1=xc1(2)-xc1(1); fr1 = fr1/sum(fr1.*delta1); % Trasformo le frequenze in densita' e traccio % l'istogramma bar(xc1,fr1,1); hold on; % Traccio il grafico della guassiana xpdf=[-5:.05:5]; plot(xpdf,normpdf(xpdf),'r'); % Test di gaussianita' dei residui con il metodo di Jarque-Bera warning off; [h,p]=jbtest(res1); title(['p-value JB test = ',num2str(round(1000*p)/1000)]) % Il Q-Q Plot dei residui del modello per valutarne la gaussianita' subplot(2,2,4) qqplot(res1) print reg2_2.wmf -dmeta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stimiamo un modello di regressione polinomiale con il % comando regress e tracciamo alcuni grafici per % l'analisi dei residui %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(3) % Attenzione! Aggiungiamo le potenze di x alla matrice X dei dati % In questo modo otteniamo un modello di regressione polinomiale % y = a0 + a1*x + a2*x^2 + ... + an*x^n % dove n e' l'ordine del polinomio che abbiamo scelto X = [ones(size(x)) x x.^2 x.^3 x.^4 x.^5]; [b2,b2int,res2,res2int,stats2]=regress(y,X); % Qui troviamo il coeff. R-quadro che ci fornisce una misura % della bonta' di adattamento del modello ai dati stats2(1) % Tracciamo lo scatter plot di x contro y % unitamente alla previsione del modello stimato subplot(2,2,1) [xsort,idx]=sort(x); plot(x,y,'.',x,X*b2,'.') title(['Y e previsione vs. X - R^2=',num2str(floor(100*stats2(1))/100)]) % Grafico dei residui del modello contro il valore di x subplot(2,2,2) plot(xsort,res2(idx)) xlabel('X') ylabel('Residui') title('Residui modello vs. valori di X') % Istogramma dei residui e curva gaussiana per % il confronto delle distribuzioni subplot(2,2,3) % Trasformo le frequenze in densita' e traccio % l'istogramma me2=mean(res2); sd2=std(res2); res2std=(res2-me2)/sd2; [fr2,xc2]=hist(res2std,40); delta2=xc2(2)-xc2(1); fr2 = fr2/sum(fr2.*delta2); bar(xc2,fr2,1); hold on; % Traccio il grafico della guassiana xpdf=[-5:.05:5]; plot(xpdf,normpdf(xpdf),'r'); % Test di gaussianita' dei residui con il metodo di Jarque-Bera [h,p]=jbtest(res2); title(['p-value JB test = ',num2str(round(1000*p)/1000)]) % Il Q-Q Plot dei residui del modello per valutarne la gaussianita' subplot(2,2,4) qqplot(res2) print reg2_3.wmf -dmeta % Marco Sandri % Università di Brescia % Dipartimento Metodi Quantitativi % info@msandri.it