Documente Academic
Documente Profesional
Documente Cultură
REGRESIE LOGISTICĂ
Exemple:
Observație: variabila de răspuns (y) are doar două valori, este dicotomică.
Regresia logistică seamănă cu regresia liniară dar este dezvoltată pentru variabila de răspuns (y) de tip
dicotomic.
Dacă avem variabila dependentă de tip dicotomic, înseamnă că aceasta poate lua doar două valori de
obicei codificate cu 1 (de exemplu: afecțiune prezentă, deces, eveniment studiat realizat) respectiv 0
(afecțiune absentă, supraviețuire, eveniment studiat nerealizat).
Iată grafic cum ar arăta valorile determinate experimental (valori practice) pentru o astfel de situație:
Y Regresia liniară
este improprie ! Regresia liniară nu este utilă deoarece ar
produce ușor valori peste 1 sau mai mici ca 0,
(0,1) chiar dacă am lua în calcul probabilitatea
evenimentului (s-ar obține erori mari).
(0,0)
X
Se pune problema determinării unei funcții notate cu g, care să aproximeze graficul alăturat, de forma:
g(𝑦)
ො = 𝑓 𝑥𝑖 = 𝑎0 + 𝑎1 ∙ 𝑥1 + 𝑎2 ∙ 𝑥2 + … . +𝑎𝑛 ∙ 𝑥𝑛
Astfel se va lucra cu probabilitatea de realizare a evenimentului dar într-o formă ce să acopere domeniul
utilizat la maxim deci -∞ la +∞.
p
Aceasta este funcția logit definită: logit p =ln 1−p , p reprezintă probabilitatea realizării evenimentului
y în condițiile exprimate de x. Probabilitatea variază de la [0,1] ceea ce implică că logit(p) variază de la -∞ la
+∞ așa cum am dorit.
p
Avem astfel: logit p =ln 1−p = 𝑎0 + 𝑎1 ∙ 𝑥1 + 𝑎2 ∙ 𝑥2 + … . +𝑎𝑛 ∙ 𝑥𝑛 = σ𝑛𝑖=0 𝑎𝑖 ∙ 𝑥𝑖
Coeficientul a0 reprezintă intersecția funcției cu axa YY’. Se obține pentru x1=x2= … =xn=0
p
Raportul 1−p este tocmai cota – realizăm astfel că va exista o legătură între coeficienții ai (forma
exponențială) și cotă.
𝑒𝑥𝑝 σ𝑛
𝑖=0 𝑎𝑖 ∙𝑥𝑖
Dacă scoatem probabilitatea din funcția anterioară avem: p= 1+𝑒𝑥𝑝 σ𝑛
, aceasta este funcția
𝑖=0 𝑎𝑖 ∙𝑥𝑖
𝑒𝑥𝑝 σ𝑛
𝑖=0 𝑎𝑖 ∙𝑥𝑖 1
logistică. Putem scrie: 𝑝 = 𝒍𝒐𝒈𝒊𝒔𝒕𝒊𝒄 σ𝑛𝑖=0 𝑎𝑖 ∙ 𝑥𝑖 = = 1+𝑒𝑥𝑝
1+𝑒𝑥𝑝 σ𝑛𝑖=0 𝑎𝑖 ∙𝑥𝑖 − σ𝑛𝑖=0 𝑎𝑖 ∙𝑥𝑖
Iată grafic funcția logistică care aproximează probabilitatea evenimentului studiat funcție de
covariabilele xi.
Prob(Y=1|x) - reprezintă probabilitatea ca Y=1 (amintim Y este codificat cu 1 sau 0), condiționată de
valorile variabilelor explicative x.
Prob(Y=1|x)
p=1
p=0
X
𝒆𝒙𝒑 σ𝒏𝒊=𝟎 𝒂𝒊 ∙ 𝒙𝒊 𝟏
Funcția logistică : p Y=1|𝒙𝒊 = =
𝟏 + 𝒆𝒙𝒑 σ𝒏𝒊=𝟎 𝒂𝒊 ∙ 𝒙𝒊 𝟏 + 𝒆𝒙𝒑 − σ𝒏𝒊=𝟎 𝒂𝒊 ∙ 𝒙𝒊
Interpretarea coeficienților în cadrul regresiei logistice.
p
În forma inițială : logit p =ln 1−p = 𝑎0 + 𝑎1 ∙ 𝑥1 + 𝑎2 ∙ 𝑥2 + … . +𝑎𝑛 ∙ 𝑥𝑛 , coeficienții sunt greu de
interpretat – aceasta deoarece logaritmul natural din cotă este mai greu de înțeles.
Facem următorul calcul: mai întâi creștem doar o covariabilă cu Δx, apoi scădem cele două funcții logit.
Alegem de exemplu variabila x1 , aceasta nu va bloca generalizarea rezultatului.
p′
Avem astfel: logit p′ =ln = 𝑎0 + 𝑎1 ∙ (𝑥1 +∆𝑥) + 𝑎2 ∙ 𝑥2 + … . +𝑎𝑛 ∙ 𝑥𝑛
1−p′
p′ p
Scădem funcțiile: logit p′ − logit p = 𝑎1 ∙ ∆𝑥 avem apoi ln -ln 1−p = ln 𝐶𝑜𝑡𝑎1 − ln 𝐶𝑜𝑡𝑎2
1−p′
Cota1
Și obținem: ln
Cota2 = ln 𝑂𝑅 = 𝑎1 ∙ ∆𝑥 , unde OR este raportul cotelor (Odd Ratio).
Prin exponențiere scoatem OR = exp(a1·Δx).
Interpretarea devine lesne de înțeles: exponențiala din coeficientul unei covariabile, reprezintă
raportul cotelor (OR) deci de câte ori este mai riscant de a avea afecțiunea sau evenimentul studiat
pentru creșterea covariabilei respective cu un punct și menținerea constantă a celorlalte covariabile.
Dacă avem doar o covariabilă și aceasta este de tip dicotomic atunci OR calculat prin regresie logistică
coincide cu OR calculat din tabelul de contingență și se numește valoare neajustată.
Dacă avem mai mult de o covariabilă, atunci se ține cont prin regresie de toate efectele variabilelor
explicative și valorile OR se numesc ajustate – acestea sunt de interes deoarece se pot elimina factorii de
confuzie.
Coeficientul a0 reprezintă valoarea de referință a modelului, deci pentru toate covariabilele xi egale cu 0.
Dacă variabila xi este de tip numeric referința este clar punctul 0 al acesteia. Dacă variabila este
categorială cu mai mult de două variante atunci punctul de referință este mai greu de ales. O metodă ar
consta în alegerea categoriei ce are cele mai puține valori – pentru a permite o putere statistică bună.
De obicei programele de statistică prezintă atât coeficienții ai cât și exp(ai ) și intervalele de confidență.
Atenție: Exp(a0) nu reprezintă OR, reprezintă doar cota în punctul de referință (x=0).
Testul Hosmer - Lemeshow
Este utilizat în regresia logistică pentru a verifica dacă modelul este util (cât de bine se potrivește datelor
practice) deci poate fi utilizat statistic.
Funcția discriminantă respectă o distribuție de tip Chi pătrat și verifică diferențele dintre frecvențele
observate și cele prezise prin model. Se împart datele în decile și se calculează frecvențele observate cât și
așteptate în fiecare din cele 10 grupe pentru fiecare tip eveniment prezent respectiv absent.
Dacă frecvențele observate și cele deduse (așteptate) prin regresie logistică sunt apropiate, atunci nu
avem semnificație și modelul este util reușind să prezică corect.
În caz contrar, cu alte cuvinte dacă frecvențele observate diferă de cele așteptate, avem semnificație și
putem deducem că modelul nu este util. Practic erorile sunt mari.
H0: Nu există diferență între frecvențele observate și cele așteptate, deci modelul prezice corect
H1: Avem diferență între cele două tipuri de frecvențe ceea ce înseamnă că modelul prezice cu erori.
Dezavantaj – testul este criticat deoarece are putere statistică relativ mică și de asemenea depinde de
definirea grupurilor în calculul cuantilelor (depinde de volumul eșantionului).
Testul Omnibus
Crearea modelului pentru mai multe variabile de intrare se poate face pas cu pas prin introducerea a câte o
covariabilă și apoi verificarea utilității acesteia. Există și metoda inversă – se pleacă cu toate covariabilele și
se elimină pe rând cele nesemnificative.
Acest test verifică diferența dintre modelul la pasul anterior și modelul la pasul actual. Dacă se obține
diferență semnificativă statistic rezultă că ultima variabilă este utilă (sau ultima modificare este utilă).
Se poate să se impună introducerea tuturor covariabilelor odată. Astfel testul omnibus va verifica modelul
de la momentul 0 (adică cel doar cu coeficientul a0, deci termenul liber) cu modelul format din toate variabilele
explicative – este evident că dorim să obținem semnificație.
Acest test ar fi o variantă mai bună comparativ cu verificarea prin metoda Hosmer-Lemeshow.
Tabelul de clasificare
Avem două tabele de clasificare – înainte de a introduce covariabilele, deci modelul doar cu termenul a0 și
modelul cu toate covariabilele alese introduse.
Se verifică prin aceasta ca procentul total de clasificare să fie crescut pentru modelul logistic cu variabilele
explicative introduse.
Pseudo coeficientul R2
Metoda de calcul a coeficienților în cadrul regresiei logistice (maximizarea funcției de verosimilitate) este
total diferită de metoda de minimizare a sumei erorilor pătratice folosită la regresia liniară. Astfel interpretarea
pseudo coeficienților R2 în regresia logistică este diferită.
Un pseudo coeficient R2 normalizat în domeniul [0,1] este cel propos de Nagelkerke / Cragg & Uhler’s.
Acesta măsoară îmbunătățirea față de modelul nul, adusă de modelul cu variabile explicative. Acest model
nul este cel în care covariabilele sunt egale cu 0 – deci ar rezulta o medie simplă a variabilei dependente
pentru predicție.
Acești pseudo coeficienți pot fi folosiți pentru comparație doar utilizând aceeași bază de date – forma
matematică nu permite altfel de comparații. Astfel putem verifica dacă introducerea sau eliminarea unei
variabile explicative are efect asupra performanței modelului.
Dimensiunea eșantionului în cadrul regresiei logistice
Volumul eșantionului are un rol foarte important în precizia de măsurare dar și în puterea testului, deci
șansa de a găsi semnificație statistică. Mai simplu prezentat, cu cât avem mai multă informație cu atât avem
încredere mai mare în rezultate.
Există mai multe metode de determinare a dimensiunii eșantionului.
Vom prezenta în continuarea ”regula celor zece evenimente” – o regulă des întâlnită.
Aceasta spune că trebuie să existe 10 evenimente sau non evenimente studiate, pentru fiecare covariabilă
introdusă în model. Deci verificăm frecvența cea mai mică a ieșirii (0 sau 1). Pentru regresie logistică se alege
categoria din variabila răspuns cu cel mai mic volum. Presupunem că aceasta are frecvența relativă f și avem
m variabile explicative. Volumul eșantionului devine: 10 * m * 1/f. Dacă m=5 covariabile, frecvența de 1 a ieșirii
este 0.7 iar frecvența de 0 a ieșirii este 0.3, atunci f=0.3 (cea mai mică) definește volumul și obținem
10*5*1/0.3= 167.
Dorim să vedem în ce măsură părinții alergici atât mama cât și tata pot influența probabilitatea de apariție a
alergiei la copil. Apoi vom trece la o problemă mai complexă introducând în model și informația cu privire la
fumat.
Conform codificărilor standard am notat cu 1 prezența alergiei respectiv a fumatului iar cu 0 lipsa acestora.
Iată variabilele de interes sunt prezentate în tabelul de mai jos (folosim aplicația SPSS):
Alegem în continuare din meniul SPSS: Analyze + Regression + Binary Logistic
Classification Tablea,b
Predicted
La pasul inițial (Step 0) avem o clasificare corectă
allergy child (acuratețea) în procent de 69.3%. Aceasta rezultă din:
Observed Absent Prezent Percentage Correct 819/1182=69.2%
Step 0 allergy Absent 819 0 100.0 Inițial avem doar constanta în ecuație, deci cele
child Prezent 363 0 .0
p
Overall Percentage 69.3 două covariabile sunt 0: logit p =ln 1−p = 𝑎0 .
a. Constant is included in the model.
b. The cut value is .500 p=363/1182=0.3071 deci p/(1-p)=0.443=exp(a0)
Variables in the Equation
B S.E. Wald df Sig. Exp(B) Astfel a0=ln(p/(1-p))=ln(0.443)=-0.814
Step 0 Constant -.814 .063 166.526 1 .000 .443
Classification Tablea,b
Clasificarea finală (Step 1) nu aduce îmbunătățiri. Predicted
allergy child
Cu toate că am adăugat două covariabile în model, Observed Absent Prezent Percentage Correct
acesta nu reușește să îmbunătățească predicția. Step 1 allergy Absent 819 0 100.0
child Prezent 363 0 .0
Overall Percentage 69.3
a. Constant is included in the model.
b. The cut value is .500
Variables not in the Equation
Score df Sig.
Step 0 Variables allergy mother 4.541 1 .033 Variabilele care nu sunt în model prezintă semnificație –
allergy father 8.213 1 .004
Overall Statistics 11.280 2 .004
deci trebuie verificat și introduse în calcul.
Model Summary
Cox & Snell Nagelkerke R
Step -2 Log likelihood R Square Square Pseudocoeficientul de determinare (puterea
1 1446.848 a .009 .013
a. Estimation terminated at iteration number 4 because parameter
predictivă), prezintă mai multe forme.
estimates changed by less than .001. Nagelkerke R Square variază în domeniul [0,1] și
este preferat.
Valoare foarte mică arată că modelul nu satisface
cerințele de predicție.
Iată următoarele rezultate obținute
Conform testului Hosmer-Lemeshow nu avem semnificație – deci acceptăm ipoteza nulă, nu există
diferență semnificativă între frecvențe.
În următorul tabel avem informații despre coeficienții regresiei logistice (notați cu B). Obținem semnificație
doar pentru prezența alergiei la tată – iar aceasta arată un risc în spațiul OR de valoare 1.401 (OR=1.401).
Astfel evenimentul alergie la copilul, are o șansă de apariție de 1.4 ori mai mare dacă tatăl este fumător
comparativ cu tatăl nefumător.
Prezența semnificației este marcată și în intervalul de confidență (nu cuprinde valoarea 1).
În primul rând observăm că toți coeficienții au semnificație – deci toate covariabilele au efect. Valorile OR
sunt prezentate în coloana Exp(B) , coeficienții sunt notați cu B.
Testul Hosmer-Lemeshow nu este semnificativ deci modelul este util – confirmat statistic.
Citim apoi valoarea exp(B) ce reprezintă OR (Odd Ratio deci Raportul Cotelor). Obținem OR=4.189.
Astfel prin trecerea de la 0 la 1 adică de la sub 65 ani la 65 sau peste această vârstă, riscul de a te
îmbolnăvi de CDI crește de 4.189 ori.
Variables in the Equation
95% C.I.for EXP(B)
B S.E. Wald df Sig. Exp(B) Lower Upper
Step 1a Varsta≥65_0_1 1.433 .374 14.699 1 .000 4.189 2.014 8.713
Constant -2.735 .298 84.323 1 .000 .065
a. Variable(s) entered on step 1: Varsta≥65_0_1.
Continuăm analiza și considerăm acum vârsta în forma continuă deci ani.
În definirea regresiei logistice se modifică doar definirea covariabilei vârsta în forma x_varsta_ani.
Vârsta este o covariabilă ce prezintă semnificație p=0.021 deci are influență asupra infecției cu CDI.
Interpretarea coeficientului în forma exponențială: OR=1.042 ceea ce arată o influență negativă. Mai clar, la
creșterea cu un an în vârstă riscul persoanei de a avea CDI crește în spațiul OR la 1.042 adică de 1.042 ori
mai riscant.
Același rezultat se obține dacă folosim vârsta din an în an, avem coeficientul B=0.041 (din tabelul
precedent) îl înmulțim cu 10 (deci o creștere cu 10 ani) și apoi exponențiăm:
Orcreștere cu 10 ani = exp(0.041·10) = exp(0.41) = 1.504 (diferența apare deoarece am folosit doar 3 zecimale).
Variables in the Equation
95% C.I.for EXP(B)
B S.E. Wald df Sig. Exp(B) Lower Upper
a
Step 1 Varsta (10 ani) .414 .179 5.330 1 .021 1.513 1.065 2.150
Constant -4.617 1.169 15.600 1 .000 .010
a. Variable(s) entered on step 1: Varsta (10 ani).
Regresia logistică folosind aplicația R
Vom folosi aceeași bază de date – același tabel pentru crearea unui model regresional de tip logistic.
Lansăm aplicația Rstudio – care se bazează pe softul R dar ne ajută cu o interfață mai bogată în opțiuni, o
verificare și prezentare a sintaxei comenzilor cât și servicii pentru lucru cu grafice.
Deschidem tabelul de date:
> data_1=read.delim(file.choose(), sep = "\t", header=TRUE)
Calculăm în continuare intervalul de confidență pentru coeficienți cât și pentru exp(bi) deci raportul cotelor:
> confint(logit_1) # este bazată pe metoda Log-Likelihood
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) -1.96919084 -1.4014933
allergy_mother 0.16343320 0.7129299
allergy_father 0.07732033 0.5969998
smoke_mother 0.22098744 0.7854495
smoke_father1 0.28493082 0.8267372
> confint.default(logit_1) # metoda standard bazată pe eroarea standard
2.5 % 97.5 %
(Intercept) -1.96371844 -1.3964418
allergy_mother 0.16331900 0.7124435
allergy_father 0.07775149 0.5971562
smoke_mother 0.21993933 0.7840123
smoke_father1 0.28407169 0.8255454
Puteam obține aceste valori și prin funcția cbind() – column bind (cuplare de coloane, legare de coloane)
> cbind(coef(logit_1),confint(logit_1))
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) -1.6800801 -1.96919084 -1.4014933
allergy_mother 0.4378813 0.16343320 0.7129299
allergy_father 0.3374539 0.07732033 0.5969998
smoke_mother 0.5019758 0.22098744 0.7854495
smoke_father1 0.5548085 0.28493082 0.8267372
Calculăm OR și intervalul de confidență:
> cbind(exp(coef(logit_1)),exp(confint(logit_1)))
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) 0.186359 0.1395697 0.246229
allergy_mother 1.549421 1.1775467 2.039959
allergy_father 1.401375 1.0803881 1.816660
smoke_mother 1.651982 1.2473078 2.193393
smoke_father1 1.741608 1.3296700 2.285848
În final calculăm nivelul de semnificație al întregului model – comparat cu un model nul (deci fără variabile
explicative, un model constant). Este o statistică de tip Chi pătrat ce prezintă diferența dintre deviațiile
reziduurilor între cele două modele.
Avem semnificație statistică – deci modelul este util în predicția alergiei la copil funcție de factorii de intrare.
VĂ MULȚUMESC !