|
|
Factor B |
|
|
|
Y |
N |
Factor A |
Y |
23 |
77 |
|
N |
49 |
51 |
> twotwoll<-data.frame(count=c(23,49,77,51), A=factor(c("Y","N","Y","N")),B=factor(c("Y","Y","N","N"))) > twotwoll count A B 1 23 Y Y 2 49 N Y 3 77 Y N 4 51 N N > fitttll<-glm(count~A*B,data=twotwoll,family=poisson(link=log)) > anova(fitttll,test="Chisq") Analysis of Deviance Table Model: poisson, link: log Response: count Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 3 30.8142 A 1 0.0000 2 30.8142 1.0000 B 1 15.8916 1 14.9226 0.0001 A:B 1 14.9226 0 4.44e-16 0.0001
> twotwolg <- data.frame(count=c(23,49),n=c(100,100),A=factor(c("Y","N"))) > twotwolg count n A 1 23 100 Y 2 49 100 N > fitttlg <- glm(cbind(count,n-count)~A, data=twotwolg, family=binomial(link=logit)) > anova(fitttlg, test="Chisq") Analysis of Deviance Table Model: binomial, link: logit Response: cbind(count, n - count) Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 1 14.9226 A 1 14.9226 0 1.108e-14 0.0001
> coef(update(fitttll,.~1)) (Intercept) 3.912027 > predict(update(fitttll,.~1)) 1 2 3 4 3.912027 3.912027 3.912027 3.912027 > exp(predict(update(fitttll,.~1))) 1 2 3 4 50.00021 50.00021 50.00021 50.00021 > coef(update(fitttll,.~A)) (Intercept) AY 3.912023e+00 1.925451e-09 > predict(update(fitttll,.~A)) 1 2 3 4 3.912023 3.912023 3.912023 3.912023 > exp(predict(update(fitttll,.~A))) 1 2 3 4 50 50 50 50 > coef(update(fitttll,.~A+B)) (Intercept) AY BY 4.158883e+00 6.131844e-07 -5.753613e-01 > predict(update(fitttll,.~A+B)) 1 2 3 4 3.583522 3.583522 4.158883 4.158883 > exp(predict(update(fitttll,.~A+B))) 1 2 3 4 36.00012 36.00009 64.00002 63.99998 > coef(fitttll) (Intercept) AY BY AY:BY 3.93182563 0.41197979 -0.04000533 -1.16830587 > predict(fitttll) 1 2 3 4 3.135494 3.891820 4.343805 3.931826 > exp(predict(fitttll)) 1 2 3 4 23 49 77 51
> invlogit <- function(x) exp(x)/(1+exp(x)) > coef(update(fitttlg,.~1)) (Intercept) -0.5753641 > predict(update(fitttlg,.~1)) [1] -0.5753641 -0.5753641 > invlogit(predict(update(fitttlg,.~1))) [1] 0.36 0.36 > invlogit(predict(update(fitttlg,.~1)))*twotwolg$n [1] 36 36 > coef(fitttlg) (Intercept) AY -0.04000533 -1.16830587 > predict(fitttlg) [1] -1.20831120 -0.04000533 > invlogit(predict(fitttlg)) [1] 0.23 0.49 > invlogit(predict(fitttlg))*twotwolg$n [1] 23 49
> twotworaw<-data.frame(y=c(rep(1,72),rep(0,128)), A=c(rep("Y",23),rep("N",49),rep("Y",77),rep("N",51)))
Here, I have printed out only the first 30 of 200 lines of data:
> twotworaw[1:30,] y A 1 1 Y 2 1 Y 3 1 Y 4 1 Y 5 1 Y 6 1 Y 7 1 Y 8 1 Y 9 1 Y 10 1 Y 11 1 Y 12 1 Y 13 1 Y 14 1 Y 15 1 Y 16 1 Y 17 1 Y 18 1 Y 19 1 Y 20 1 Y 21 1 Y 22 1 Y 23 1 Y 24 1 N 25 1 N 26 1 N 27 1 N 28 1 N 29 1 N 30 1 N > fitttr <- glm(cbind(y,1-y)~A, data=twotworaw, family=binomial(link=logit)) > anova(fitttr) Analysis of Deviance Table Model: binomial, link: logit Response: cbind(y, 1 - y) Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev NULL 199 261.367 A 1 14.923 198 246.445
Note that the residual deviance can't get to 0 when the data are entered in this form.