Sunteți pe pagina 1din 7

Modelul liniar generalizat binomial

Este de forma: Y=+x+

si variabila rezultativa trebuie sa provina dintr-o repartitie normal in caz


contrar se recurge la modelul liniar generalizat. O prima generalizare a
modelului liniar consta in faptul ca cerem variabila rezultativa y sa provina
din familia exponentialelor.

Convenim notitele succes, respective esec in variabila


corespunzatoare:

{
z= 1,caz de succes
0,caz de esec

P(z=1)=

P(z=0)=1-

In cazul in care variabila raspuns este masurata pe o scara binara, ne


intereseaza sa modelam probabilitatea de succes (adica ). Din nefericire
(mebrul drept) combinatia liniara a variabilelor predictoare poate duce la
valori in afara intervalului [0,1].
Pentru ca sa ramana in intervalul [0,1] folosim egalitatea:
x

(*) = f ( s ) ds , unde f ( s ) 0.

In functie de cum alegem f (s) vom avea urmatoarele modele


binomiale:

1) Modelul probit;
2
(sm)
f ( s ) - densitatea normala, 1 2
2

Alegem f ( s )= e si ne dorim
2
realizarea unui model de forma:
(1) g ( ) = 0+ 1 x , unde g= functia de legatura (link) si x-variabila
predictoare;
In cazul modelului liniar functia de legatura este functia identica.
Modelul (2) este primul tip de model si mai este cunoscut sub numele de
modelul doza-raspuns.
2) Modelul logit;
3) Modelul C log-log.

1
In cazul modelelor binomial modelam probabiliatetea (probabilitatea de
succes a evenimentului) prin intermediul celor 3 functii. Prin urmare vom
avea 3 modele de modele binomiale(logiste).

Realizarea in R:

Variabila rezultativa se da sub forma unei matrici cu 2 coloane:

- Prima coloana reprezinta succesiunile;


- A II-a reprezinta esecurile

Functia care realizeaza modelul logistic: glm( ).

Aplicatie:

In pachetul faraway avem data.frame bliss care are 5 in registrari si 3


coloane(variabile): dead, alive, conc.

> install.packages("faraway") # instaleaza pachetul

> library(faraway)

> attach(bliss) # ataseaza pachetul de date bliss

> ?bliss #ne ofera informatii despre pachet

> bliss #ne afiseaza datele pachetului

dead alive conc

1 2 28 0

2 8 22 1

3 15 15 2

4 23 7 3

5 27 3 4

Interpretarea: Prima coloana dead reprezinta succesul, a doua coloana


alivereprezinta esecurile, iar a treia coloana conc reprezinta variabila
predictoare, care ne da nivelul concentratilor.

Deoarece variabila conc reduce semnificativ deviatia reziduuala rezulta ca


este semnificativa pentru model.

2
> mbl<-glm(cbind(dead,alive)~conc,binomial)

> mbp<-glm(cbind(dead,alive)~conc,binomial(link=probit))

> mbc<-glm(cbind(dead,alive)~conc,binomial(link=cloglog))

Cele 3 modele reprezinta probabilitatile de succes corespunzatoare. Daca


dorim valorile de succes ajustate corespunzatoare, vom inmulti aceste
probabilitati cu suma dintre succesuri si esecuri .

V1) > fitted(mbl) #returneaza probabilitatile de succes

1 2 3 4 5

0.08917177 0.23832314 0.50000000 0.76167686 0.91082823

> fitted(mbl)*(dead+alive) #returneaza succesele ajustate


1 2 3 4 5

2.675153 7.149694 15.000000 22.850306 27.324847

V2) > predict(mbl,type="response")

1 2 3 4 5

0.08917177 0.23832314 0.50000000 0.76167686 0.91082823

> predict(mbl,type="response")*(dead+alive)

1 2 3 4 5

2.675153 7.149694 15.000000 22.850306 27.324847

Afisem prin intermediul data.frame probabilitatea de succes date de cele 3


modele:

> data.frame(m1=fitted(mbl),m2=fitted(mbp),m3=fitted(mbc))

m1 m2 m3

1 0.08917177 0.08424186 0.1272700

2 0.23832314 0.24487335 0.2496909

3 0.50000000 0.49827210 0.4545910

4 0.76167686 0.75239612 0.7217655

5 0.91082823 0.91441122 0.9327715

3
Afisam prin intermediul unei data.frame succesurile observate si succesele
ajustate de cele 3 modele:

>data.frame(val.obs=dead,vaj1=fitted(mbl)*(dead+alive),vaj2=fitted(mbp)*
(dead+alive),vaj3=fitted(mbc)*(dead+alive))

val.obs vaj1 vaj2 vaj3

1 2 2.675153 2.527256 3.818100

2 8 7.149694 7.346201 7.490727

3 15 15.000000 14.948163 13.637731

4 23 22.850306 22.571884 21.652965

5 27 27.324847 27.432337 27.983146


Problema inversa ne intereseaza care este doza pentru a avea succese cu
probabilitatea p:

> (logit(0.9)-mbl$coef[1])/mbl$coef[2] # ne returneaza termenul liber

(Intercept)

3.89107

Ne permite sa calculam mai multe doze(concentratii) la diferite probabilitati,


pentru acest lucru folosim functia dose.p din pachetul MASS:

> library(MASS)

> dose.p(mbl,p=c(0.5,0.9))

Dose SE

p = 0.5: 2.00000 0.1784367

p = 0.9: 3.89107 0.3449965

Dorim sa facem predictii pentru date care nu fac parte din model.
Pentru a vedea care este predictia pentru concentratia 5 folosim:

> nou<-data.frame(conc=5)

> predict(mbl,nou,type="response")

0.9702777

> predict(mbl,nou,type="response")*(dead+alive)

4
[1] 29.10833 29.10833 29.10833 29.10833 29.10833

Pentru stabilirea daca un model binomial este bun sau correct(acceptabil)


folosim comanda:

> summary(mbl)

Call:

glm(formula = cbind(dead, alive) ~ conc, family = binomial)

Deviance Residuals:
1 2 3 4 5

-0.4510 0.3597 0.0000 0.0643 -0.2045

Coefficients:

Estimate Std. Error z value Pr(>|z|)

(Intercept) -2.3238 0.4179 -5.561 2.69e-08 ***

conc 1.1619 0.1814 6.405 1.51e-10 ***

---

Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 64.76327 on 4 degrees of freedom

Residual deviance: 0.37875 on 3 degrees of freedom

AIC: 20.854

Number of Fisher Scoring iterations: 4.

Aplicatie: Datele sunt extrase dintr-un studiu privind decesul la


consumatorii de droguri n funcie de vrsta i consum.

> decedat <- c(37,123,236,132,1,14,32,34)

> esantion <- c(62514,51138,31548,7210,17159,12522,6010,3085)

5
> drog <- gl(2,4,8, labels = c("yes","no"))

> age <- gl(4,1,8, labels = c("25-34","35-44","45-54","55-64"))

> data.frame (age, drog,decedat,esantion)

age drog decedat esantion

1 25-34 yes 37 62514

2 35-44 yes 123 51138

3 45-54 yes 236 31548

4 55-64 yes 132 7210

5 25-34 no 1 17159

6 35-44 no 14 12522

7 45-54 no 32 6010

8 55-64 no 34 3085

> mb<-glm(cbind(decedat,esantion-decedat)~age+drog,binomial)

> summary(mb)

Call:

glm(formula = cbind(decedat, esantion - decedat) ~ age + drog,

family = binomial)

Deviance Residuals:

1 2 3 4 5 6 7 8

0.7081 0.2538 -0.3681 -0.1096 -2.2378 -0.7016 1.0728 0.2185

Coefficients:

Estimate Std. Error z value Pr(>|z|)

(Intercept) -7.5504 0.1631 -46.299 < 2e-16 ***

age35-44 1.4997 0.1834 8.176 2.94e-16 ***

age45-54 2.6864 0.1735 15.482 < 2e-16 ***

6
age55-64 3.5780 0.1803 19.843 < 2e-16 ***

drogno -0.5624 0.1206 -4.663 3.11e-06 ***

---

Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 754.0979 on 7 degrees of freedom

Residual deviance: 7.4118 on 3 degrees of freedom

AIC: 60.661

Number of Fisher Scoring iterations: 4

Pentru a dori sa vedem contributia fiecarei variabile predictoare la reducerea


deviatiei modelului de interes fata de modelul nul, aplicam urmatarea
functie:

> anova(mb,test="Chisq")

Analysis of Deviance Table

Model: binomial, link: logit

Response: cbind(decedat, esantion - decedat)

Terms added sequentially (first to last)

Df Deviance Resid. Df Resid. Dev P(>|Chi|)

NULL 7 754.10

age 3 721.94 4 32.16 < 2.2e-16 ***

drog 1 24.75 3 7.41 6.529e-07 ***

---

Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

S-ar putea să vă placă și