You are on page 1of 14

Model liniar unifactorial

Modelul liniar unifactorial este dat sub urmatoarea forma:

Y=α+βx+ε

unde:

y=variabila raspuns

ε=variabila aleatoare care modeleaza influenta hazardului (intamplarii)
asupra lui y.

β=panta liniei(coeficientul de regresie)

Linia intersecteaza axa y in α=intercept.

Pentru estimarea lui α si β avem rezidurii:
SS res =∑ ( y i−(α + β x i ))2
i

Deci, metoda celor mai mici patrate in estimarea lui α si β consta in
minimizarea lui SSrez.

^β= ∑ (
x i−´x ) ( y i− ´y )
Solutia : ∑ ( x i−´x )2 ;

α^ = ´y − β^ ´x .

y i=α^ + ^β x i –valori ajustate ale lui yi

ei=yi- ŷi -rezidurile

Determinarea functiei de regresie liniara si multe alte informatii se
realizeaza prin intermediul comenzii:
> ml1<-lm(y~x)
>ml # obtinem termenul liber(intercept α) si
coeficientul lui x (β)

Pentru a extrage valorile ajustate adica pe ŷi folosim comanda:

>fitted(ml1) # returneaza ŷi

Pentru a determina rezidurile folosim comada:

>rezid(ml1) # returneaza ei=yi- ŷi

1

5 1.2 1.7 1.52 16 8.27 6 5. > library(ISwR) > attach(thuesen) > thuesen blood.19 13 19.glucose (short.0 1.12 18 10.47 5 7.1 1.09 9 7.34 3 8.yi fata de dreapta de regresie.27 4 19.25 12 5.18 10 12.2 1.8 1.37 2 . care creaza dificultati la unele comenzi grafice.exclude) # se plaseaza la inceput de crearea comenzii ml1 Consideram situatia in care dorim sa descriem relatia dintre doua variabile cu ajutorul analizei de regresie liniara.3 1.glucose short.frame.action=na.dreapta de regresie si segmentele ce reprezinta rezidurile.1 1.31 8 11. Pentru reprezentarea grafica a modelului liniar cu: norul de puncte.velocity si blood.).95 14 15.3 1.velocity in functie de blood glucose.1 1. Vom determina un model liniar din pachetul ISwR unde se gaseste data.2 1. Vom iesi din impas cu ajutoru comenzii: >options(na.2 1. Atasam dreapta de regresie: >abline(ml1) #ataseaza graficului (deja existent) dreapta de regresie Pentru segmentele ce modeleaza rezidurile folosim comanda: >segments(x.3 1.thuesen cu doua coloane short.28 15 6.y) #pozitia punctelor xi.76 2 10.5 1.6 NA 17 4.49 7 9.7 1.3 1.fitted(ml1).22 11 6.velocity 1 15.y) #deseneaza segmentele OBS: In general datele statistice contin si informatii neaccesibile: NA.x. vom folosi succesiv urmatoarele functii: >plot(y~x) plot(x.

5 1.101 0.414 on 1 and 21 DF.02196 0. Simbolurile din 3 .glucose 1.velocity~blood.0479 Aceasta ofera o vedere superficiala a distributiei rezidurilor. codes: 0 ‘***’ 0.1 ‘ ’ 1 Residual standard error: 0. dreapta-montaj este considerata a fi short.09781 0.001 ‘**’ 0.19 12.glucose) Residuals: Min 1Q Median 3Q Max -0.05 ‘. O functie extractor de baza este summary: > summary(lm(short.’ 0.02196 Argumentul lm este o functie model in care in care simbolul tilda (~).14760 -0.velocity ~ blood.3 1.098+0.05 21 13.exclude) > ml1<-lm(short. In aceasta formula avem estimata intercepta (termenul liber . teste t.26e-09 *** blood.1343 F-statistic: 4.glucose)) Call: lm(formula = short.1737.09781 0.5 1. dar de aceasta data insotita de erori standard.action=na.glucose) > ml1 Call: lm(formula = short.40141 -0.32 22 4.8 1.0479 * --- Signif.19 20 16. care poate fi utilizat ca o scurta verificare a ipotezelor distributionale.03001 0.glucose) Coefficients: (Intercept) blood.12 24 9. dar de exemplu nu toate testele de semnificatie sunt date.02202 0.2167 on 21 degrees of freedom (1 observation deleted due to missingness) Multiple R-squared: 0. ar trebui sa fie citit ca :”descris de”(„in functe de”).01045 2.glucose 0. si p-valori.03 23 8. p-value: 0. Aici observam coeficientul regresiei si din nou intercepta. Error t value Pr(>|t|) (Intercept) 1.70 > options(na. Adjusted R-squared: 0.9 1.345 6.glucose.velocity ~ blood.11748 9.1 1.α ) si panta estimata(β).43490 Coefficients: Estimate Std.velocity~blood.01 ‘*’ 0. Cea mai buna linie.velocity =1.0220*blood.

Linia din partea de jos arata definitia acestor indicatori.434897199 -0.429449 1.341599 9 10 11 12 13 14 15 16 1.145757649 0.149448964 0.022019994 13 14 15 16 17 18 0.262534 1.214216 1.365758 1.302066 1.02196 > fitted(ml1) 1 2 3 4 5 6 7 8 1.401411486 -0.056084062 0.velocity~blood.glucose) > ml1 Call: lm(formula = short.306459 > resid(ml1) 1 2 3 4 5 6 0.005036223 -0.275711 1.244964 1.007933665 -0.244964 NA 17 18 19 20 21 22 23 24 1.275783754 7 8 9 10 11 12 0.205431 1.182346406 -0.005711308 -0.414 cu 1 respectiv 21 grade de libertate. o expresie a variatiei observatiilor din jurul regresiei liniare.2167cu 21 grade de libertate.255945 1.glucose 1.335010 1.069916424 -0.0479. estimand parametrul model σ.175431237 -0.433841 1.dreapta sunt indicatori grafici ai nivelului de seminficatie. F-statistic este:4.070057471 0.004989882 -0.372346 1. Alte doua functii de extragere sunt fitted si resid care sunt utilizate dupa cum urmeaza: > ml1<-lm(short.326158532 0.251598875 -0.05.515103 1.Aceasta este variatie reziduala. daca sunt date informatiile duplicate-el devine mult mai important cand exista mai mult de o variavila explicativa.045971143 19 20 21 22 23 24 -0.324029 1. Rezidurile si valorile fitted Am vazut cum summary poate fi utilizat pentru a extrage informatia despre rezultatele analizelor regresiei.velocity ~ blood.glucose) Coefficients: (Intercept) blood.275036223 NA -0.526084 1.09781 0.393541161 4 .389916 1.01<p<0.190057 1. Acesta este un test F pentru ipotezele cand coefcientul regresiei este 0.212020 1.Acest test nu este cu adevarat important in analizele regresiilor liniare simple.291085 1. o stea inseamna 0. p-valoarea fiind :0.171085074 0.014054962 0.451411 1. Erorile standard reziduale sunt: 0.082533795 -0.

Functia fitted returneaza valorile fitted-valorile y .data.v e lo c ity 1 .frame.2 1 . Este necesar sa se discute niste aspecte incomode care apar cand lipsesc niste valori in date.velocity observat.0 5 10 15 20 blood.8 s h o rt. Rezidurile demonstrate cu resid sunt diferenta dintre acesta si short.glucose Cu ajutorul functiei abline atasam graficului deja existent dreapta de regresie: > abline(ml1) 5 . OBS:valorile fitted si rezidurile sunt marcate cu nume al thuesen.glucose) 1 . In continuare vom construi norul de puncte cu ajutorul functiei plot: >plot(short.4 1 .velocity~blood.6 1 .

2 1 .fitted(ml1).glucose Urmatorul pas este de a desena segmentele: > segments(blood.4 1 .velocity) 6 .glucose.short.v e lo c ity 1 .0 5 10 15 20 blood.blood.glucose.8 s h o rt. 1 .6 1 .

8 1.velocity in functie de blood.y2). Predictie si benzi de confidenta Valorile prezise cu sau fara predictive.6 short.2 1.0 5 10 15 20 blood. Observam ca functia segments deseneaza segmente care sunt argument ale coordonatei punctului in ordinea(x1. si banda de confidenta pot fi extrase prin intermediul functiei predict.: >predict(ml1)>fitted(ml1) > predict(ml1) 1 2 3 4 5 6 7 8 7 .4 1.glucose cu linia fitted si segmentele reziduale.y1.velocity 1.glucose In momentul de fata avem graficul lui short.x2. 1.

214216 1.433841 1.244964 1.glucose=20)) 1 1.429449 1.246317 1.255945 1.frame(blood.433841 1.398889 8 1.576312 2 1.335010 1.214216 1.302066 1.velocity pentru cazul in care blood.335010 1.526084 1.139367 1.glucose=20 procedam astfel: > predict(ml1.212020 1.306459 Daca dorim sa precizam valorile lui short.069315 1.262534 1.275711 1.291085 1.341599 1.291371 1.365758 1.275711 1.cea mai apropiata de graficul functiei de regresie (numita si banda de confidenta sau interval de confidenta) si se refera la nesiguranta din jurul observatiilor din model. acest lucru se realizeaza prin adaugarea parametrului: > interval="confidence" > int="c" > predict(ml1.205244 1.389916 1.int="c") #returneaza trei coloane cu urmatoarea interpretare: fit lwr upr 1 1.1.359118 7 1.255945 1.745607 5 1.240589 1.436881 8 .372523 6 1.537065 Prin intermediul functiei predict putem deasemenea sa prezicem doua benzi(interval): a) Banda ingusta .381887 4 1.306561 1.526084 1.169536 1.newdata=data.429431 3 1.190057 18 19 20 21 22 23 24 1.244964 1.324029 1.451411 1.341599 9 10 11 12 13 14 15 17 1.515103 1.372346 1.205431 1.302066 1.

295446 1.9 1.375374 10 1.568681 15 1.255945 0.353898 18 1.515103 1.391086 24 1.int="p") fit lwr upr 1 1.368287 12 1.027352 5 1.7904672 1.8127292 1.467765 11 1.607377 21 1.262534 1.418008 19 1. numita si banda de predictie se refera la nesiguranta in jurul observatiilor viitoare (se refera la predictie pentru noi esantioane).389916 1.762993 9 .212020 1.738693 4 1.433841 0.526084 1.053805 1.9612137 1.324029 1.267629 1.191084 1.121641 1.306459 1.357057 23 1.7408499 1.402326 b) A doua banda.8745815 1.721423 6 1.795439 3 1.358583 13 1.429449 1.065457 1.230050 1.205431 1.365758 1.121641 1.335010 0.mai larga .906469 2 1.503389 22 1.244964 1.210592 1.0248161 2.263750 1.190057 1.372346 1.368287 17 1.724854 14 1.451411 1.305352 1.302066 0.276444 1.290217 1. Banda de prezicere pentru date ulterioare adaugam: > interval="prediction"  > int="p" > predict(ml1.149694 1.8411393 1.291085 1.244964 1.275711 0.477064 20 1.026217 1.687583 7 1.214216 0.

365758 0.rm=T 3)este posibil (daca nu ne ingrijim de asta) ca cele doua beni de predictie( in special cea de predictive nu de confidenta) sa iasa in afara 10 .8294798 1.429449 0.glucose) trebuie sa aiba valorile strict crescatoare.928281 21 1. int = "p") : Predictions on current data refer to _future_ responses Putem realiza grafic cele doua benzi de confidenta si de predictive prin intermediul functiei: >matlines .9037136 1.012169 14 1.712177 17 1.669560 18 1.velocity) care ne creaza problem.9252067 1.7299634 1.lm(ml1. Trebuie sa fim atenti insa la urmatoarele trei chestiuni: 1).190057 0.680899 23 1.7777510 1.767186 Warning message: In predict.205431 0.291085 0.244964 0.372346 0.244964 0.7777510 1.854626 22 1.212020 0.515103 1.324029 0.9096964 1.9577873 1.784367 19 1.306459 0.389916 0.827802 11 1.variabila predictoare(in cazul nostru blood.802205 9 1.8636906 1.262534 0.712177 12 1.0180367 2.7105546 1.901111 15 1.8 1. vom remedia acest lucru prin : na.727090 10 1.9745421 1. 2)Putem avea in datele noastre obs NA(de exemplu la short.752690 24 1.834996 20 1.8457315 1.341599 0.8809929 1.7381424 1.451411 0.685898 13 1.7979780 1.

ylim=range(short.glucose 11 .pp.0 1.frame$blood.velocity. Realizam aceasta astfel: > pred.0 0.gluc<-pred.glucose Functia range returneaza doua valori:cea mai mica si cea mai mare valoare Desenarea.unde vector2 poate fi pc sau pp.graficului.frame(blood.8 5 10 15 20 blood. > pred. (trasarea graficului celor doua benzi) se face prin intermediul comenzii:>matlines(vector1.int="p".velocity.newdata=pred.frame<-data.4 1.glucose. Vom iesi din acest impas punand functiei plot argumentul ylim.frame) Ne asiguram prin intermediul parametrului yi de la functia plot ca cele doua benzi incap pe desen.…).8 1. rm=T)) 2.newdata=pred.int="c".2 1. > plot(blood.6 short.vector2.glucose=4:20) Pregatim banda de confidenta: > pc<-predict(ml1.velocity 1.na.frame) Pregatim zona de predictie: > pp<-predict(ml1.short.

0 5 10 15 20 blood.gluc.col="red") #returneaza banda de confidenta > matlines(pred. Raportul de determinare este valabil doar modelelor liniare cat si modelelor neliniare.pc. In cazul modelului liniar unifactorial: 12 .> matlines(pred.col="green") #returneaza banda de predictie 2.pp.gluc.5 1.0 short.glucose Raportul de determinare R2 Coeficientul de corelatie il putem aplica doar modelelor liniare unifactoriale.velocity 1.

x1 x= () . In R: apare in p-value= 0. III) Testul F(Fisher) de validare per ansamblu al tuturor variabilelor predictoare din model. y= . . notat R2 : 2 2 R=2 ∑ ( ^yi − ´y ) =1− ∑ ei ∑ ( yi − ´y )2 ∑ ( y i− ´y )2 Verificarea statistica a unui model liniar se face cu summary: > summary(lm(short. yn () . . . . xn -valorile observate ale variabilelor predicatoare. Daca p-value >0. y1 . Ea contine trei etape: I) Determinarea erorilor standard. In R: residual standard error=0. Daca p-value <0. .Erori din coeficientii modelului. Daca la unul din coeficienti.2167 cu 21 grade de libertate. Avem 2 tipuri de erori standard: . adica coeficientul este semnificativ. Numim coeficientul de determinare. II) Testul t privind erorile standard din coeficientul modelului.Erorile din functia de regresie.05=> nu putem respinge ipoteza nula.velocity~blood. testul student nu treece acesta ne sugereaza intr-o prima faza ca variabila predictoare corespunzatoare ar putea fi inlaturata din model. .glucose)) Verificarea statistica a unui model liniar este o operatie de validare a modelului.0479. Ideea care sta la baza coeficientului de determinare este descompunerea variantei din variabila rezultativa pe doua directii: o directive – variant datorata variabilei predictoare (care ne dorim sa fie cat de mare) si variabila data lui ε.valorile observate ale variabilelor rezultative. ε1 () ε= .05=> se resinge ipoteza nula. 13 . εn -rezidurile (aleatorul) sau ce nu am inclus in model. y=α + βx+ ε .

dr.Conf. Stan 14 .BIBLIOGRAFIE: 1) “Introductory Statistics with R” – Peter Dalgaard 2) Curs predat . I.