TP1 - régression
linéaire
Un corrigé de la partie Scilab
(FX Dehon, 22 mars
06)
1-3.
agri=[100,60,76,74,90,93,102,98,103,110,117,118,112,115,116,121,134,130]
indu=[100,50,84,99,113,122,128,143,145,146,159,172,188,204,213,220,242,254]
xbarre=sum(agri)/18;ybarre=sum(indu)/18;
for
i=1:18,plot2d(agri(i),indu(i),-4),end;
plot2d(xbarre,ybarre,-2)
xtitle(['le nuage et son centre
de gravite'],'agri','indu')
4-5.
for
i=1:18,prodxy(i)=(agri(i)-xbarre)*(indu(i)-ybarre),end
for
i=1:18,prodxx(i)=(agri(i)-xbarre)^2,end
for
i=1:18,prodyy(i)=(indu(i)-ybarre)^2,end
achapeau=sum(prodxy)/sum(prodxx);bchapeau=ybarre-achapeau*xbarre
function
y=f(x);y=achapeau*x+bchapeau;endfunction
fplot2d(min(agri)-10:.1:max(agri)+10,f)
6.
a2chapeau=sum(prodxy)/sum(prodyy);b2chapeau=xbarre-a2chapeau*ybarre
function
y=g(x);y=(x-b2chapeau)/a2chapeau;endfunction
fplot2d(min(agri)-10:.1:max(agri)+10,g)
7.
rdeux=sum(prodxy)^2/(sum(prodxx)*sum(prodyy))
8.
for
i=1:18,res(i)=indu(i)-f(agri(i)),end
xset("window",2);for
i=1:18,plot2d(i,res(i),-1),end
function
y=h(x);y=0;endfunction;fplot2d(0:.1:19,h);xtitle(['Residus'],'i','res')
xset("window",3);r=[-45:10:45];histplot(r,res);xtitle(['Histogramme
des residus'])
9.
dt=sum((indu-ybarre)^2)
dt=sum((indu-ybarre)^2)/400
dr=sum((f(agri)-ybarre)^2)/400
dr/dt
rdeux
10.
f(74)
f(102)
11.
agri(7)=200
xbarre=sum(agri)/18;
for
i=1:18,prodxy(i)=(agri(i)-xbarre)*(indu(i)-ybarre),end
for
i=1:18,prodxx(i)=(agri(i)-xbarre)^2,end;
a3chapeau=sum(prodxy)/sum(prodxx);b3chapeau=ybarre-a3chapeau*xbarre
function
y=k(x);y=a3chapeau*x+b3chapeau;endfunction
xset("window",4);for
i=1:18,plot2d(agri(i),indu(i),-4),end;plot2d(xbarre,ybarre,-2);
fplot2d(min(agri)-10:.1:max(agri)+10,f,style=2)
fplot2d(min(agri)-10:.1:max(agri)+10,k)
xtitle(["nuage modifie, la
nouvelle et l ancienne (en bleu) droite de regression"],'agri','indu')
xs2gif(4,"nouvdroite.gif")