Capítulo 1 - Conceitos introdutórios
Variável Resposta | Variáveis Explicativas | |
---|---|---|
(a) | Infecção urinária | Sexo e tratamento |
(b) | Câncer de esôfago | Consumo de bebida alcoólica e histórico familiar |
(c) | Horas de alívio de dor de cabeça | Dosagem do medicamento e idade |
(d) | Método de aprendizado preferido | Período escolar |
Nominal | Ordinal |
---|---|
Infecção urinária; Sexo; Tratamento | Horas de alívio de dor de cabeça |
Câncer de esôfago; Histórico familiar | Dosagem do medicamento |
Consumo de bebida alcoólica | Idade |
Método de aprendizado; Período escolar | |
[a] estudo transversal
[b] entre pacientes do sexo masculino = 14/26 = 0,5385; e entre pacientes do sexo feminino = 12/13 = 0,9231
[a] estudo de coorte
[b] entre fumantes = 90/800 = 0,1125; e entre não fumantes = 10/1200 = 0,0083
[a] estudo caso-controle
[c] vantagens: custo e tempo reduzidos para obtenção da resposta quando comparado ao estudo de coorte.
desvantagens: propensos a vícios devido à possíveis manipulações dos grupos de comparação (casos e controles), bem como por estar condicionado à disponibilidade e qualidade dos registros existentes ou da memória dos pacientes.
[a] ensaio clínico aleatorizado. Justificativa: a vitamina C foi administrada a um grupo de pacientes e ao outro não, caracterizando um estudo experimental e não observacional.
[a] estudo caso-controle
[a] estudo transversal
Capítulo 2 - Delineamentos amostrais e modelos associados
[a] modelo multinomial
Estudo descrito no exercício | Modelo |
---|---|
4 | Produto de binomiais |
5 | Produto de binomiais |
6 | Produto de binomiais |
7 | Produto de binomiais |
8 | Multinomial |
[b] Produto de binomiais
[a] Produto de binomiais
Sejam \(N_{11}\), \(N_{12}\), \(N_{21}\) e \(N_{22}\) varáveis aleatórias Poisson independentes com parâmetros \(\mu_{11}, \mu_{12}, \mu_{21}\) e \(\mu_{22}\), respectivamente. Então,
\(~~~ P(N_{11} = n_{11}, N_{12} = n_{12}, N_{21} = n_{21}, N_{22} = n_{22}) | N_{11}+N_{12}+N_{21}+N_{22}=n)\)=
= \(\displaystyle{\frac{P(N_{11}=n_{11},N_{12}=n_{12},N_{21}=n_{21},N_{22}= n -(n_{11}+n_{12}+n_{21}))}{P(N_{11}+N_{12}+N_{21}+N_{22}=n)}} = \frac{(1)}{(2)}\)
Como,
\((1) = \displaystyle{\frac{e^{-\mu_{11}}(\mu_{11})^{n_{11}}}{n_{11}!}\frac{e^{-\mu_{12}}(\mu_{12})^{n_{12}}}{n_{12}!} \frac{e^{-\mu_{21}}(\mu_{21})^{n_{21}}}{n_{21}!}\frac{e^{-\mu_{22}}(\mu_{22})^{n - (n_{11} + n_{12} + n_{21})}}{[n - (n_{11} + n_{12} + n_{21})]!}}\)
\((2) = \displaystyle{\frac{e^{-(\mu_{11}+ \mu_{12}+\mu_{21}+\mu_{22})}(\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22})^{n}}{n!}}\)
segue que,
\(\displaystyle{\frac{(1)}{(2)} = \frac{n!}{n_{11}!~n_{12}!~n_{21}!~[n - (n_{11}+n_{12}+n_{21})]!}~ \frac{(\mu_{11})^{n_{11}}(\mu_{12})^{n_{12}}(\mu_{21})^{n_{21}}(\mu_{22})^{n - (n_{11}+n_{12}n_{21})}} {(\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22})^n}}\)
\(= \frac{n!}{n_{11}!n_{12}!n_{21}![n - (n_{11}+n_{12}+n_{21})]!}~(\frac{\mu_{11}}{\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22}})^{n_{11}}~(\frac{\mu_{12}}{(\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22})})^{n_{12}}~(\frac{\mu_{21}}{(\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22})})^{n_{21}} ~(\frac{\mu_{22}}{(\mu_{11}+\mu_{12}+\mu_{21}+\mu_{22})})^{n -(n_{11}+n_{12}+n_{21})}\)
\(= \displaystyle{\frac{n!}{n_{11}!~n_{12}!~n_{21}!~[n - (n_{11}+n_{12}+n_{21})]!} (p_{11})^{n_{11}} (p_{12})^{n_{12}} (p_{21})^{n_{21}} (p_{22})^{n - (n_{11}+n_{12}+n_{21})}}\)
em que \(p_{ij} = \frac{\mu_{ij}}{\sum_{i,j = 1}^2 \mu_{ij}}\) para i, j = 1,2.
Capítulo 3 - Tabelas de contingência 2 x 2
1.1 Dados do exercício 3 - estudo transversal
[a] Proporções amostrais e frequências esperadas
dados<-matrix(c(14,12,12,1), nc=2)
n <- sum(dados)
dados/n
[,1] [,2]
[1,] 0.3589744 0.30769231
[2,] 0.3076923 0.02564103
Qp<-chisq.test(dados)
Qp$expected
[,1] [,2]
[1,] 17.333333 8.666667
[2,] 8.666667 4.333333
[b] Hipótese nula de interesse => H0: hipótese de independência
fisher.test(dados, alternative="two.sided") # bilateral
p-value = 0.02857
fisher.test(dados, alternative="less") # unilateral
p-value = 0.01674
[c] Condicional aos totais marginais-linha
OR li ls
0.09722222 0.01098085 0.860786
[a] Estudo de coorte
[c] RR li ls
0.9440171 0.6826663 1.305423
[b] Qui-quadrado de Pearson e RR
dados<-matrix(c(83,34,19,16), nc=2)
Qp<-chisq.test(dados, correct=F)
Qp
X-squared = 3.3852, df = 1, p-value = 0.06578
IC(RR)_95% RR li ls
1.306793 0.9438295 1.809338
IC(RR)_90% RR li ls
1.306793 0.9945187 1.717119
Para \(g_1(\widehat \theta) = \ln(\widehat p_{(1)1})\) e \(g_2(\widehat \theta) = \ln(\widehat p_{(2)1})\), segue pelo método delta que
\(Var[g_1(\widehat \theta)] = Var[\ln(\widehat p_{(1)1}] = \displaystyle{\frac{p_{(1)1}(1-p_{(1)1})}{n_{1+}}\bigg(\frac{1}{p_{(1)1}}\bigg)^2 = \frac{(1-p_{(1)1})}{(n_{1+})p_{(1)1}}}\)
\(Var[g_2(\widehat \theta)] = Var[\ln(\widehat p_{(2)1}] = \displaystyle{\frac{p_{(2)1}(1-p_{(2)1})}{n_{2+}}\bigg(\frac{1}{p_{(2)1}}\bigg)^2 = \frac{(1-p_{(2)1})}{(n_{2+})p_{(2)1}}}\)
Logo,
\(Var(\widehat f) = Var[\ln(\widehat p_{(1)1}] + Var[\ln(\widehat p_{(2)1}] = \displaystyle{ \frac{(1-p_{(1)1})}{(n_{1+})p_{(1)1}} + \frac{(1-p_{(2)1})}{(n_{2+})p_{(2)1}}}\)
Terapia | Óbito (Sim) | Óbito (não) | Total |
---|---|---|---|
Medicamentosa | 42 | 161 | 203 |
Cirurgia | 22 | 181 | 203 |
Angioplastia | 29 | 176 | 205 |
dados<-matrix(c(42,22,29,161,181,176), nc=2)
Qp<-chisq.test(dados, correct=F)
Qp
X-squared = 7.911, df = 2, p-value = 0.01915
OR li ls
Medicamentosa x Cirurgia IC(OR)_95% 2.14624 1.22863 3.74917
Medicamentosa x Angioplastia IC(OR)_90% 1.58320 1.02397 2.44786
Cirurgia x Angioplastia IC(OR)_95% 0.73766 0.40820 1.33302
X-squared = 1.5611, df = 1, p-value = 0.2115
OR li ls
[1,] 1.133493 0.9311736 1.37977
X-squared = 108.67, df = 2, p-value < 2.2e-16
OR li ls
Usual x restrição sal 0.13063 0.08631 0.19772
Usual x restrição gordura 0.32189 0.22479 0.46094
Restrição sal x restrição gordura 2.46408 1.61405 3.76179
RR li ls
Usual x restrição sal 0.49175 0.42190 0.57316
Usual x restrição gordura 0.60356 0.51147 0.71224
Restrição sal x restrição gordura 1.22737 1.11458 1.35158
Capítulo 4 - Tabelas de contingência s x r
[a] \(H_0: \bar F_1 = \bar F_2\) versus \(H_A: \bar F_1 \neq \bar F_2\)
fb1 fb2 Qs gl p
3.086207 2.086957 12.21358 1 0.0004744286
[b] \(H_0: \bar F_1 = \bar F_2\) versus \(H_A: \bar F_1 \neq \bar F_2\)
fb1 fb2 Qs gl p
1.543103 1.043478 12.21358 1 0.0004744286
\(H_0: p_{(1)1} = p_{(2)1} = p_{(3)1} = p_{(4)1} = p_{(5)1}\) (hipótese de homogeneidade)
\(H_A: p_{(i)1} \neq p_{(i')1}\) para pelo menos um par \((i, i')\) com \(i \neq i'\) (\(i, i'= 1,2,3,4,5\))
dados<-matrix(c(26,26,23,18,9,6,7,9,14,25), nc=2)
Qp<-chisq.test(dados,correct=F)
Qp
Pearson's Chi-squared test: X-squared = 29.1235, df = 4, p-value = 7.378e-06
Para proceder as comparações “duas a duas” pode-se obter e comparar
\((a)\) IC_95% de \(p_{(i)1}\) ou de \(p_{(i)2}\), para \(i = 1,2,3,4,5\)
\((b)\) IC_95% de RR i|i’, com \(i \neq i'\) (\(i, i'= 1,2,3,4,5\))
\((c)\) IC_95% de OR i|i’, com \(i \neq i'\) (\(i, i'= 1,2,3,4,5\))
Utilizando (a) segue que:
\(\hat p_{(1)2}\) = 0,1875 com IC = (0,05; 0,32)
\(\hat p_{(2)2}\) = 0,2121 com IC = (0,07; 0,35)
\(\hat p_{(3)2}\) = 0,28125 com IC = (0,12; 0,44)
\(\hat p_{(4)2}\) = 0,4375 com IC = (0,26; 0,61)
\(\hat p_{(5)2}\) = 0,7353 com IC = (0,58; 0,88)
Ainda, assumindo o vetor de escores a = (0,1) e, se fizer sentido assumir o vetor de escores c = (0,1,2,3,4), pode-se testar
\(H_0\): ausência de tendência linear (rac = 0) versus \(H_A\): presença de tendência linear (rac\(\neq\) 0)
x<-c(rep(0,32),rep(1,33),rep(2,32),rep(3,32),rep(4,34))
y<-c(rep(0,26),rep(1,6),rep(0,26),rep(1,7),rep(0,23),rep(1,9), rep(0,18),rep(1,14),rep(0,9),rep(1,25))
rac<-cor(y,x)
n<-length(x)
QCS<-(n-1)*rac^2
p<-1-pchisq(QCS,1)
cbind(rac, QCS, p)
rac QCS p
0.391568 24.83873 6.233236e-07
\(H_0: \bar F_1 = \bar F_2\) versus \(H_A: \bar F_1 \neq \bar F_2\)
dados<-matrix(c(4,6,4,8,4,2,6,4),nc=4)
escore<-c(0,1,2,3)
fb1<-(sum(dados[1,]*escore))/sum(dados[1,])
fb2<-(sum(dados[2,]*escore))/sum(dados[2,])
esp<-(c(sum(dados[,1]),sum(dados[,2]),sum(dados[,3]),sum(dados[,4])))/sum(dados)
mua<-sum(escore*esp)
va<-sum((escore-mua)^2*esp)
vbf1<-((sum(dados) - sum(dados[1,]))/(sum(dados[1,])*(sum(dados)-1)))*va
Qs = ((fb1-mua)^2)/vbf1
gl<-nrow(dados)-1
p<-1-pchisq(Qs,gl)
cbind(fb1,fb2,Qs,gl,p)
fb1 fb2 Qs gl p
1.666667 1.2 1.549573 1 0.2131985
\(H_0: r_{ac} = 0\) versus \(H_A: r_{ac} \neq 0\)
x<-c(rep(6,21),rep(8.5,49),rep(10.5,50),rep(12.5,59),rep(14.5,44))
y<-c(rep(1,7), rep(2,4), rep(3,3), rep(4,7),
rep(1,10),rep(2,15),rep(3,11),rep(4,13),
rep(1,23),rep(2,9), rep(3,11),rep(4,7),
rep(1,28),rep(2,9), rep(3,12),rep(4,10),
rep(1,32),rep(2,5), rep(3,4), rep(4,3))
rac<-cor(y,x)
n<-length(x)
QCS<-(n-1)*rac^2
p<-1-pchisq(QCS,1)
cbind(rac, QCS, p)
rac QCS p
-0.2801432 17.42261 2.992459e-05
\(H_0: \bar F_1 = \bar F_2\) versus \(H_A: \bar F_1 \neq \bar F_2\)
fb1 fb2 Qs gl p
1.747097 1.258457 72.24612 1 0
A versus B fbA fbB Qs gl valor p
6.25 3.5 47.38783 1 5.824341e-12
A versus C fbA fbC Qs gl valor p
6.25 4.86 21.07151 1 4.424585e-06
A versus D fbA fbD Qs gl valor p
6.25 7.42 17.04376 1 3.652824e-05
B versus C fbB fbC Qs gl valor p
3.5 4.86 18.52317 1 1.678513e-05
B versus D fbB fbD Qs gl valor p
3.5 7.42 67.80638 1 2.220446e-16
C versus D fbC fbD Qs gl valor p
4.86 7.42 51.39975 1 7.535084e-13
Capítulo 5 - Análise estratificada
dados<-matrix(c(45,80,84,106,64,104,124,117,71,116,82,87),nc=3)
dados
escore<-c(0,1,2)
fb11<-(sum(dados[1,]*escore))/sum(dados[1,])
fb12<-(sum(dados[2,]*escore))/sum(dados[2,])
fb21<-(sum(dados[3,]*escore))/sum(dados[3,])
fb22<-(sum(dados[4,]*escore))/sum(dados[4,])
fm1<-sum(c(sum(dados[1,]),sum(dados[3,]))*c(fb11,fb21))
esp1<-(c(sum(dados[1:2,1]),sum(dados[1:2,2]),sum(dados[1:2,3])))/sum(dados[1:2,])
mu1<-sum(escore*esp1)
esp2<-(c(sum(dados[3:4,1]),sum(dados[3:4,2]),sum(dados[3:4,3])))/sum(dados[3:4,])
mu2<-sum(escore*esp2)
mu<-sum(c(sum(dados[1,]),sum(dados[3,]))*c(mu1,mu2))
v1<- sum(((escore-mu1)^2)*esp1)
v2<- sum(((escore-mu2)^2)*esp2)
vfma<-(sum(dados[1,])*sum(dados[2,])*v1)/(sum(dados[1:2,])-1)
vfmb<-(sum(dados[3,])*sum(dados[4,])*v2)/(sum(dados[3:4,])-1)
vfm<- sum(c(vfma,vfmb))
QSMH<-((fm1-mu)^2)/vfm
p<-1-pchisq(QSMH,1)
round(c(QSMH,p),digits=5)
QSMH p
0.73789 0.39034
tab<-array(c(21,52,538,636,47,123,1578,1571),dim=c(2,2,2))
mantelhaen.test(tab, correct=F)
Mantel-Haenszel chi-squared test without continuity correction
Mantel-Haenszel X-squared = 40.117, df = 1, p-value = 2.392e-10
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
0.3059031 0.5423354
sample estimates:
common odds ratio
0.4073107
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/breslowday.test.R.txt")
breslowday.test(tab)
Breslow and Day test (with Tarone correction):
Breslow-Day X-squared = 0.5116056
Breslow-Day-Tarone X-squared = 0.5114644
Test for test of a common OR: p-value = 0.4745056
Fem|Masc: ORsem = 0.288 e OR1 = 0.477 OR2 = 0.380 ORcomum = 0.407
Masc|Fem: ORsem = 3.466 e OR1 = 2.095 OR2 = 2.628 ORcomum = 2.455
a) Pacientes sob diagnóstico I
rac QCS p
0.391568 24.83873 6.233236e-07
(b) Pacientes sob diagnóstico II
rac QCS p
0.5718972 52.33063 4.689582e-13
(c) Controlando por diagnóstico
QCSMH = 67.14238 p < 0.0001
Os resultados evidenciam associação entre efeitos adversos e dosagens do medicamento. Há um aumento na proporção de pacientes com efeitos adversos (rac > 0) com o aumento da dosagem do medicamento. Ainda, rac(I+II) = 0,456, rac(I) = 0,3915 e rac(II) = 0,5718, indicando que a proporção de pacientes com efeitos adversos depende do diagnóstico.
x<-c(rep(0,64),rep(1,65),rep(2,65),rep(3,64),rep(4,66))
y<-c(rep(0,52),rep(1,12),rep(0,38),rep(1,27),rep(0,36),rep(1,29),rep(0,19),rep(1,45),rep(0,10),rep(1,56))
rac<-cor(y,x)
n<-length(x)
QCS<-(n-1)*rac^2
p<-1-pchisq(QCS,1)
cbind(rac,QCS,p)
rac QCS p
[1,] 0.4559289 67.14238 2.220446e-16
(a) Associação entre fumo voluntário e câncer de pulmão, controlando por fumo passivo
tab<-array(c(120,111,80,155,161,117,130,124),dim=c(2,2,2))
mantelhaen.test(tab, correct=F)
Mantel-Haenszel chi-squared test without continuity correction
Mantel-Haenszel X-squared = 14.4223, df = 1, p-value = 0.0001461
Obs: Há evidências de associação entre fumo voluntário e câncer de pulmão, controlando por fumo passivo.
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/breslowday.test.R.txt")
breslowday.test(tab)
Breslow-Day X-squared = 3.273719
Test for test of a common OR: p-value = 0.07040859
ORsem = 1.63 OR1 = 2.09 OR2 = 1.31
Obs: a razão de chances comum não é apropriada para esse estudo, pois as razões de chances individuais sugerem chance de câncer de pulmão superior entre os fumantes voluntários que também são fumantes passivos, do que entre os fumantes voluntários que não são fumantes passivos.
Capítulo 6 - Tabelas com dados relacionados
dados<-matrix(c(40,8,10,70), nc=2)
mcnemar.test(dados, correct=F)
McNemar's chi-squared = 0.22222, df = 1, p-value = 0.6374
dados<-matrix(c(5,50,30,4), nc=2)
mcnemar.test(dados, correct=F)
McNemar's chi-squared = 5, df = 1, p-value = 0.02535
dados<-matrix(c(10,5,98,7), nc=2)
mcnemar.test(dados, correct=F)
McNemar's chi-squared = 83.971, df = 1, p-value < 2.2e-16
(a) Concordância quanto à gravidade: residente versus especializando
require(vcd) # instalar pacote vcd
x<-c(89,5,1,1,3,0,0,1,0)
x<-matrix(x,3,3)
Kappa(x)
value ASE z Pr(>|z|)
Unweighted 0.4338 0.1506 2.880 0.003975
Weighted 0.4368 0.1456 3.001 0.002691
(b) Concordância quanto à resolução: residente versus especializando
require(vcd)
x<-c(10,1,36,0,1,1,0,1,50)
x<-matrix(x,3,3)
Kappa(x)
value ASE z Pr(>|z|)
Unweighted 0.2333 0.06439 3.624 0.0002900
Weighted 0.2257 0.06349 3.555 0.0003782
(c) Concordância quanto à gravidade da doença: mães versus residente
require(vcd)
x<-c(1,1,8,0,1,2,5,6,73)
x<-matrix(x,3,3)
Kappa(x)
value ASE z Pr(>|z|)
Unweighted 0.09307 0.1003 0.9280 0.3534
Weighted 0.07920 0.1053 0.7521 0.4520
(a) Concordância entre os examinadores - Adesivo A
| | Examinador 2 | | | Examinador 3 | | | Examinador 3 |
| Examinador 1 | 0 1 2 3 4 | | Examinador 1 | 0 1 2 3 4 | | Examinador 2 | 0 1 2 3 4 |
|------------------------------| |------------------------------| |------------------------------|
| 0 | 3 1 0 0 0 | | 0 | 3 1 0 0 0 | | 0 | 3 0 0 0 0 |
| 1 | 0 5 0 0 0 | | 1 | 0 4 1 0 0 | | 1 | 0 5 1 0 0 |
| 2 | 0 0 0 1 0 | | 2 | 0 0 1 0 0 | | 2 | 0 0 0 0 0 |
| 3 | 0 0 0 0 0 | | 3 | 0 0 0 0 0 | | 3 | 0 0 1 0 0 |
| 4 | 0 0 0 0 4 | | 4 | 0 1 0 0 3 | | 4 | 0 1 0 0 3 |
Examinador 1 versus Examinador 2 - Adesivo A => kw = 0,9152
Examinador 1 versus Examinador 3 - Adesivo A => kw = 0,7756
Examinador 2 versus Examinador 3 - Adesivo A => kw = 0,7756
require(vcd)
x<-c(3,0,0,0,0,1,5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4)
x<-matrix(x,5,5)
summary(Kappa(x))
x<-c(3,0,0,0,0,1,4,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,3)
x<-matrix(x,5,5)
summary(Kappa(x))
x<-c(3,0,0,0,0,0,5,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,3)
x<-matrix(x,5,5)
summary(Kappa(x))
Concordância entre os examinadores - Adesivo B
| | Examinador 2 | | | Examinador 3 | | | Examinador 3 |
| Examinador 1 | 0 1 2 3 4 | | Examinador 1 | 0 1 2 3 4 | | Examinador 2 | 0 1 2 3 4 |
|------------------------------| |------------------------------| |------------------------------|
| 0 | 2 3 0 0 0 | | 0 | 3 2 0 0 0 | | 0 | 2 0 0 0 0 |
| 1 | 0 1 1 0 2 | | 1 | 0 2 2 0 0 | | 1 | 1 2 1 1 0 |
| 2 | 0 0 0 0 0 | | 2 | 0 0 0 0 0 | | 2 | 0 0 2 0 1 |
| 3 | 0 1 0 0 2 | | 3 | 0 0 0 2 0 | | 3 | 0 0 0 0 0 |
| 4 | 0 0 2 0 0 | | 4 | 0 0 1 0 1 | | 4 | 0 2 0 1 1 |
Examinador 1 versus Examinador 2 - Adesivo B => kw = 0,236
Examinador 1 versus Examinador 3 - Adesivo B => kw = 0,688
Examinador 2 versus Examinador 3 - Adesivo B => kw = 0,401
(b) Grau de infiltração entre os adesivos A e B
| | Grau | | | Grau | | | Grau |
| Examinador 1 | 0 1 2 3 4 | | Examinador 2 | 0 1 2 3 4 | | Examinador 3 | 0 1 2 3 4 |
|------------------------------| |------------------------------| |------------------------------|
| Adesivo A | 4 5 1 0 4 | | Adesivo A | 3 6 0 1 4 | | Adesivo A | 3 6 2 0 3 |
| Adesivo B | 5 4 0 3 2 | | Adesivo B | 2 5 3 0 4 | | Adesivo B | 3 4 3 2 2 |
\(H_0: \bar F_1 = \bar F_2\) versus \(H_A: \bar F_1 \neq \bar F_2\)
Examinador 1 => \(\bar f_A = 1,64; \bar f_B =1,50; Q_S\) = 0,0577 (g.l. = 1, valor p = 0,8102)
Examinador 2 => \(\bar f_A = 1,79; \bar f_B =1,93; Q_S\) = 0,0608 (g.l. = 1, valor p = 0,8052)
Examinador 3 => \(\bar f_A = 1,57; \bar f_B =1,71; Q_S\) = 0,0735 (g.l. = 1, valor p = 0,7862)
dados<-matrix(c(7,19,7,128),nc=2)
mcnemar.test(dados,correct=F)
McNemar's Chi-squared test
McNemar's chi-squared = 5.5385, df = 1, p-value = 0.0186
(a) Código para obtenção do gráfico de concordância
require(vcd)
x<-c(22,5,0,0,0, 2,7,2,1,0, 2,14,36,14,3, 0,0,0,7,0, 0,0,0,0,3)
x<-matrix(x,5,5)
rownames(x) <- c("1","2","3","4","5")
colnames(x) <- c("1","2","3","4","5")
x
agreementplot(x, xlab ="Categorias: patologista 1", ylab ="Categorias: patologista 2", line_col="gray")
(b) Intensidade de concordância
require(vcd)
x<-c(22,5,0,0,0, 2,7,2,1,0, 2,14,36,14,3, 0,0,0,7,0, 0,0,0,0,3)
x<-matrix(x,5,5)
Kappa(x)
summary(Kappa(x))
confint(Kappa(x), level=0.95)
value ASE z Pr(>|z|)
Weighted 0.6492 0.04867 13.339 1.369e-40
Kappa lwr upr
Weighted 0.5538055 0.7445806
(b) Concordância entre os dois patologistas
require(vcd)
x<-c(291,186,2,3,1, 74,256,4,10,7, 1,7,0,1,1, 1,7,2,14,8, 1,3,0,2,3)
x<-matrix(x,5,5)
Kappa(x)
summary(Kappa(x))
confint(Kappa(x), level=0.95)
value ASE z Pr(>|z|)
Weighted 0.4359 0.02834 15.38 2.074e-53
Kappa lwr upr
Weighted 0.3804014 0.4914762
Capítulo 7 - Regressão Binomial
(a) Resultados do modelo de regressão logística
chd<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex1cap7.txt", h=T)
attach(chd)
mod1<-glm(as.matrix(chd[,c(1,2)]) ~ cat+idade+ecg+cat*idade+cat*ecg+idade*ecg, family=binomial(link="logit"), data=chd)
anova(mod1, test="Chisq")
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 7 21.3320
cat 1 14.1312 6 7.2008 0.0001705 ***
idade 1 4.7240 5 2.4768 0.0297448 *
ecg 1 1.5224 4 0.9544 0.2172564
cat:idade 1 0.0321 3 0.9223 0.8577925
cat:ecg 1 0.5035 2 0.4188 0.4779635
idade:ecg 1 0.4157 1 0.0031 0.5190999
Conclusão sobre o efeito das interações duplas => não significativos
# Modelo sem as interações (modelo 2) mostrou efeito não significativo de ecg na presença de cat e idade
mod2<-glm(as.matrix(chd[,c(1,2)]) ~ cat+idade+ecg, family=binomial(link="logit"), data=chd)
anova(mod2, test="Chisq")
summary(mod2)
# Modelo selecionado (modelo 3)
mod3<-glm(as.matrix(chd[,c(1,2)]) ~ cat+idade, family=binomial(link="logit"), data=chd)
anova(mod3, test="Chisq")
summary(mod3)
dev<-residuals(mod3,type='deviance')
dev
QL<-sum(dev^2)
p1<-1-pchisq(QL,5)
cbind(QL,p1)
rpears<-residuals(mod3,type='pearson')
rpears
QP<-sum(rpears^2)
p2<-1-pchisq(QP,5)
cbind(QP,p2)
par(mfrow=c(1,2))
plot(rpears, ylab="resíduos Pearson", pch=16, ylim=c(-2,2))
abline(h=0,lty=3)
plot(dev, ylab="resíduos deviance", pch=16, ylim=c(-2,2))
abline(h=0,lty=3)
par(mfrow=c(1,1))
ntot<-c(274,122,59,32,8,39,17,58)
fit.model<-mod3
source("http://www.ime.usp.br/~giapaula/envelr_bino")
# Conclusões com base no modelo 3
Coefficients: mod3
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.5397 0.2005 -12.664 < 2e-16 ***
cat 0.7736 0.2955 2.618 0.00884 **
idade 0.6174 0.2840 2.173 0.02975 *
> exp(0.7736) # fixando idade e variando o nível de catecholamine
[1] 2.167555
Pacientes com cat = 1 (nível de catecholamine alto) apresentaram chance de doença coronária igual a 2,16 vezes a dos pacien- tes com cat = 0 (nível de catecholamine baixo).
> exp(0.6174) # fixando nível de catecholamine e variando a idade
[1] 1.854101
Pacientes com idade = 1 (>= 55 anos) apresentaram chance de doença coronária igual a 1,85 vezes a dos pacientes com idade = 0 (< 55 anos).
> exp(0.7736 + 0.6174) # variando a idade e o nível de catecholamine
[1] 4.018867
Pacientes com cat = 1 (nível de catecholamine alto) e idade = 1 (>= 55 anos) apresentaram chance de doença coronária igual a 4 vezes a dos pacientes com cat = 0 (nível de catecholamine baixo) e idade = 0 (< 55 anos).
(a) script para obtenção das probabilidades ordenadas
x1<-rep(0:5,13)
x2<-rep(3:15,rep(6,13))
px<-(exp(2.211 + 2.607*x1 - 0.52*x2))/(1+ exp(2.211 + 2.607*x1 - 0.52*x2))
est<-as.data.frame(cbind(x1,x2,px))
i<-order(est[,3], decreasing=T)
px_ord<-est[i,]
px_ord
# Selecionando o modelo (considerado log10(dose))
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex4cap7.txt", h=T)
dados$ldose<-log10(dados$dose)
attach(dados)
ajuste1<-glm(as.matrix(dados[,c(3,4)])~droga+ldose+droga*ldose,family=binomial(link="logit"),data=dados)
anova(ajuste1,test="Chisq")
ajuste1<-glm(as.matrix(dados[,c(3,4)])~ldose,family=binomial(link="logit"),data=dados)
anova(ajuste1,test="Chisq")
ajuste2<-glm(as.matrix(dados[,c(3,4)])~droga+ldose+droga*ldose,family=binomial(link="cloglog"),data=dados)
anova(ajuste2,test="Chisq")
ajuste2<-glm(as.matrix(dados[,c(3,4)])~ldose,family=binomial(link="cloglog"),data=dados)
anova(ajuste2,test="Chisq")
summary(ajuste2)
ajuste3<-glm(as.matrix(dados[,c(3,4)])~droga+ldose+droga*ldose,family=binomial(link="probit"),data=dados)
anova(ajuste3,test="Chisq")
ajuste3<-glm(as.matrix(dados[,c(3,4)])~ldose,family=binomial(link="probit"),data=dados)
anova(ajuste3,test="Chisq")
summary(ajuste3)
ajuste4<-glm(as.matrix(dados[,c(3,4)])~droga+ldose+droga*ldose,family=binomial(link="cauchit"),data=dados)
anova(ajuste4,test="Chisq")
ajuste4<-glm(as.matrix(dados[,c(3,4)])~ldose,family=binomial(link="cauchit"),data=dados)
anova(ajuste4,test="Chisq")
summary(ajuste4)
# Obs: efeito da interação droga*ldose e efeito da droga não significativos
cbind(ajuste1$aic, ajuste2$aic, ajuste3$aic, ajuste4$aic)
[,1] [,2] [,3] [,4]
[1,] 29.75466 32.3345 29.68889 31.56915
# Obs: modelo binomial com link probito e o com link logito apresentaram os menores AIC
par(mfrow=c(1,4))
ntot<-c(20,20,20,20,20,20,20,20)
fit.model<-ajuste1
source("http://www.ime.usp.br/~giapaula/envelr_bino")
fit.model<-ajuste2
source("http://www.ime.usp.br/~giapaula/envelr_bino")
fit.model<-ajuste3
source("http://www.ime.usp.br/~giapaula/envelr_bino")
fit.model<-ajuste4
source("http://www.ime.usp.br/~giapaula/envelr_bino")
# Modelos plausíveis: probito e logito
Nota: se for considerando o modelo probito (ajuste 3) com x = log10(dose), tem-se:
summary(ajuste3)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.97037 -0.49554 0.08746 0.24303 0.99555
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.1924 0.3183 -6.889 5.63e-12 ***
ldose 2.9665 0.3975 7.462 8.52e-14 ***
Null deviance: 75.0849 on 7 degrees of freedom
Residual deviance: 3.0751 on 6 degrees of freedom
AIC: 29.689
ajuste3$y
1 2 3 4 5 6 7 8
0.10 0.45 0.70 0.95 0.05 0.30 0.70 0.85
ajuste3$fitted.values
1 2 3 4 5 6 7 8
0.09690486 0.34223190 0.68674050 0.91615184 0.09690486 0.34223190 0.68674050 0.91615184
ldose
[1] 0.30103 0.60206 0.90309 1.20412 0.30103 0.60206 0.90309 1.20412
dose
[1] 2 4 8 16 2 4 8 16
Por exemplo, os camundongos que receberam dosagem 16 (log10(dose) = 1.20412) apresentaram chance de morte igual a aproximadamente 5 vezes a daqueles que receberam dosagem 8 (log10(dose) = 0.90309).
OR 16|8 = [0.91615184/(1 - 0.91615184)]/[0.68674050/(1 - 0.68674050)] = 4.984086
-----------------------------------------------------------------------
NOTA: se for considerado o modelo logito (ajuste 1) com x = log10(dose),
tem-se OR 16|8 = exp[5.0357*(1.20412-0.90309)] = 4.553503.
summary(ajuste1)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.92315 -0.47382 0.00253 0.16679 1.04263
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.7070 0.5925 -6.256 3.94e-10 ***
ldose 5.0357 0.7511 6.704 2.03e-11 ***
Null deviance: 75.0849 on 7 degrees of freedom
Residual deviance: 3.1409 on 6 degrees of freedom
AIC: 29.755
(a) Ajustando e selecionando um modelo
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex6cap7.txt", h=T)
attach(dados)
dose[1]<- 0.01
ldose<- log10(dose)
ajuste1<-glm(as.matrix(dados[,c(2,3)])~ldose, family=binomial(link="logit"), data=dados)
anova(ajuste1,test="Chisq")
ajuste2<-glm(as.matrix(dados[,c(2,3)])~ldose, family=binomial(link="cloglog"), data=dados)
anova(ajuste2,test="Chisq")
ajuste3<-glm(as.matrix(dados[,c(2,3)])~ldose, family=binomial(link="probit"), data=dados)
anova(ajuste3,test="Chisq")
ajuste4<-glm(as.matrix(dados[,c(2,3)])~ldose, family=binomial(link="cauchit"), data=dados)
anova(ajuste4,test="Chisq")
cbind(ajuste1$aic, ajuste2$aic, ajuste3$aic, ajuste4$aic)
[,1] [,2] [,3] [,4]
[1,] 24.64445 27.5475 24.95937 26.14106
par(mfrow=c(1,4))
ntot<-matrix(0,6,1)
for (i in 1:6){ntot[i]<-sum(dados[i,2:3])}
fit.model<-ajuste1
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste2
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste3
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste4
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
## Selecionado o modelo de regressão binomial com link logito (ajuste 1))
## Modelo selecionado (ajuste 1))
ajuste1<-glm(as.matrix(dados[,c(2,3)])~ldose, family=binomial(link="logit"), data=dados)
summary(ajuste1)
dev<-residuals(ajuste1, type='deviance')
dev
QL<-sum(dev^2)
p1<-1-pchisq(QL,4)
cbind(QL,p1)
rpears<-residuals(ajuste1, type='pearson')
rpears
QP<-sum(rpears^2)
p2<-1-pchisq(QP,4)
cbind(QP,p2)
x<-seq(-2,1.5,0.1)
m1<-exp(-4.8869+7.1462*x)/(1+exp(-4.8869+7.1462*x))
par(mfrow=c(1,1))
plot(ldose,sim/(sim+nao),pch=16,ylab="proporção de mortes", xlab="log10(dose)", xlim=c(-2.1,1.5),
ylim=c(0,1.05))
lines(x,m1, lty=1,lwd=2, col=2)
Com base no modelo ajustado, tem-se, por exemplo, que a chance de morte dos insetos sob a dose de inseticida 5.1 (log10(dose) = 0.7075702) foi exp(7.1462*(0.7075702-0.5797836)) \(\approx\) 2,5 vezes a daqueles sob a dose 3.8 (log10(dose) = 0.5797836).
(b) DL50 = 4.83 e DL90 = 9.8
10^(-ajuste1$coef[1]/ajuste1$coef[2])
[1] 4.828918
10^((log(0.9/0.1) + 4.8869)/7.1462)
[1] 9.801973
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex7cap7.txt", h=T)
attach(dados)
## Obs: Efeito da interação dieta*medicamento não significativo
ajuste1<-glm(as.matrix(dados[,c(3,4)])~dieta+medicamento, family=binomial(link="logit"), data=dados)
ajuste2<-glm(as.matrix(dados[,c(3,4)])~dieta+medicamento, family=binomial(link="cloglog"), data=dados)
ajuste3<-glm(as.matrix(dados[,c(3,4)])~dieta+medicamento, family=binomial(link="probit"), data=dados)
ajuste4<-glm(as.matrix(dados[,c(3,4)])~dieta+medicamento, family=binomial(link="cauchit"), data=dados)
cbind(ajuste1$aic, ajuste2$aic, ajuste3$aic, ajuste4$aic)
par(mfrow=c(1,4))
ntot<-matrix(0,9,1)
for (i in 1:9){ntot[i]<-sum(dados[i,3:4])}
fit.model<-ajuste1
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste2
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste3
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
fit.model<-ajuste4
source("https://docs.ufpr.br/~giolo/LivroADC/Funcoes/envelr_bino.txt")
# Obs: devido à facilidade de interpretação optou-se pelo modelo binomial com link logito.
anova(ajuste1, test="Chisq")
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 8 83.128
dieta 2 11.125 6 72.004 0.00384 **
medicamento 2 66.743 4 5.261 3.214e-15 ***
dev<-residuals(ajuste1, type='deviance')
QL<-sum(dev^2)
p1<-1-pchisq(QL,4)
cbind(QL,p1)
QL p1
[1,] 5.261076 0.2615428
summary(ajuste1)
Deviance Residuals:
1 2 3 4 5 6 7 8 9
-0.88060 -0.49160 1.36334 0.01514 0.75138 -0.79134 0.85668 -0.19022 -0.65129
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.1731 0.1779 6.593 4.30e-11 ***
Dieta_rs -0.2813 0.1885 -1.492 0.135641
Dieta_usual -0.6335 0.1860 -3.405 0.000661 ***
Medicamento_chlor -0.2724 0.1874 -1.454 0.145958
Medicamento_placebo -1.3995 0.1880 -7.445 9.73e-14 ***
Null deviance: 83.1284 on 8 degrees of freedom
Residual deviance: 5.2611 on 4 degrees of freedom
AIC: 58.386
Assim, mantendo-se fixo o medicamento e variando a dieta (sendo a dieta rg = categoria de referência), tem-se:
[i] OR rg | rs = 1/exp(-0.2813) = 1.324851, com IC(OR)_95% = 1/exp(-0.2813 +/- 1.96*0.1885) = (0.916; 1.917)
Embora, nesse estudo, as dietas rs (restrição de sal) e rg (restrição de gordura) não tenham apresentado evidências de diferenças significativas no que se refere à redução da PAD (valor p = 0.135641), notou-se que a chance de redução da PAD sob a dieta com restrição de gordura pode, possivelmente, ser superior a da dieta com restrição de sal, visto que OR rg | rs = 1.32. A realização de estudos adicionais pode auxiliar a avaliar melhor essa questão.
[ii] OR rg | usual = 1/exp(-0.6335) = 1.884194, com IC(OR)_95% = (1.308; 2.713), o que evidencia, para os dados desse estudo, que a chance de redução da PAD sob a dieta com restrição de gordura foi maior do que essa mesma chance sob a dieta usual.
Por outro lado, mantendo-se fixa a dieta e variando o medicamento (atenolol = categoria de referência) tem-se, para esse estudo, que:
[iii] Os medicamentos não apresentaram diferenças estatisticamente significativas (valor p = 0.145958). Contudo, os resultados “sugerem” que a eficácia do chlortalidone, quanto à redução da PAD, talvez seja inferior à do atenolol, uma vez que exp(-0.2724) = 0.7615496. A realização de estudos adicionais pode auxiliar a avaliar melhor essa questão.
[iv] Já OR atenolol | placebo = 1/exp(-1.3995) = 4.053173, com IC(OR)_95% = (2.80; 5.86), o que mostra que a chance de redução da PAD sob o atenolol foi de aproximadamente 4 vezes essa mesma chance sob o placebo.
Capítulo 8 - Regressão multinomial
[b] Ajustando e selecionando um modelo
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex1cap8.txt", h=T)
attach(dados)
require(VGAM)
mlc <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cumulative(parallel=FALSE, reverse=FALSE), dados)
coef(mlc, matrix = TRUE)
mop <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cumulative(parallel=TRUE, reverse=FALSE), dados)
coef(mop, matrix=TRUE)
TRV <- 2*(logLik(mlc)-logLik(mop))
gl <- length(coef(mlc))-length(coef(mop))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 15.11377 4 0.004470974
mlc1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco, cumulative(parallel=FALSE, reverse=FALSE), dados)
mop1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco, cumulative(parallel=TRUE, reverse=FALSE), dados)
TRV<- 2*(logLik(mlc1)-logLik(mop1))
gl <- length(coef(mlc1))-length(coef(mop1))
p<-1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 14.88761 2 0.0005850543
mlc1 <- vglm(cbind(exc,bom,mod,ruim)~pcard, cumulative(parallel=FALSE, reverse=FALSE), dados)
mop1 <- vglm(cbind(exc,bom,mod,ruim)~pcard, cumulative(parallel=TRUE, reverse=FALSE), dados)
TRV<- 2*(logLik(mlc1)-logLik(mop1))
gl <- length(coef(mlc1))-length(coef(mop1))
p<-1-pchisq(TRV,gl); cbind(TRV, gl, p)
TRV gl p
[1,] 0.5879971 2 0.7452776
# modelo selecionado
mcpp <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cumulative(parallel=FALSE~tabaco, reverse=FALSE), dados)
coef(mcpp, matrix = TRUE)
logit(P[Y<=1]) logit(P[Y<=2]) logit(P[Y<=3])
(Intercept) -1.3030321 0.8967713 3.0826522
tabacoSim -0.1271912 -0.1283847 -0.4581315
pcardSim -1.0253390 -1.0253390 -1.0253390
rp<-resid(mcpp, type = "pearson")
Qp<-sum(rp^2);
cbind(Qp,1-pchisq(Qp,5))
Qp
[1,] 6.791648 0.2366026
QL<-deviance(mcpp)
cbind(QL,1-pchisq(QL,5))
QL
[1,] 6.528623 0.2581221
par(mfrow=c(1,2))
rb<- mcpp@y - fitted(mcpp)
plot(1:4,rb[,1], pch=20, ylim=c(-0.5,0.5),xlim=c(1,16),xlab="índice",ylab="Probabilidade observada - predita")
points(5:8, rb[,2], pch=20)
points(9:12, rb[,3], pch=20)
points(13:16, rb[,4], pch=20)
abline(h=0, lty=3)
rp<-resid(mcpp, type = "pearson")
plot(1:4,rp[,1], pch=20, ylim=c(-3,3), xlim=c(1,12), xlab="índice", ylab="Resíduos de Pearson")
points(5:8, rp[,2], pch=20)
points(9:12, rp[,3], pch=20)
abline(h=0, lty=3)
[c] Algumas conclusões
A partir do logito 1, tem-se, por exemplo, que a chance de estado de saúde excelente (em relação aos demais) entre os idosos sem problema cardíaco foi 1/exp(-1.025339) = 2.788 vezes a daqueles com problema cardíaco. Já a chance de estado de saúde excelente entre os idosos que não utilizavam tabaco foi 1/exp(-0.1271912) = 1.135 vezes a dos que utilizavam.
[a] Modelo logitos categorias adjacentes
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/idosos.txt", h=T)
attach(dados)
require(VGAM)
mca1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard,acat(parallel=FALSE,reverse=TRUE),dados)
coef(mca1, matrix = TRUE)
mca2 <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard,acat(parallel=TRUE,reverse=TRUE),dados)
coef(mca2, matrix=TRUE)
TRV <- 2*(logLik(mca1)-logLik(mca2))
gl <- length(coef(mca1))-length(coef(mca2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 22.58513 4 0.0001532303
mca1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco,acat(parallel=FALSE,reverse=TRUE),dados)
mca2 <- vglm(cbind(exc,bom,mod,ruim)~tabaco,acat(parallel=TRUE,reverse=TRUE),dados)
TRV <- 2*(logLik(mca1)-logLik(mca2))
gl <- length(coef(mca1))-length(coef(mca2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 11.08578 2 0.003915192
mca1 <- vglm(cbind(exc,bom,mod,ruim)~pcard,acat(parallel=FALSE,reverse=TRUE),dados)
mca2 <- vglm(cbind(exc,bom,mod,ruim)~pcard,acat(parallel=TRUE,reverse=TRUE),dados)
TRV <- 2*(logLik(mca1)-logLik(mca2))
gl <- length(coef(mca1))-length(coef(mca2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 11.53136 2 0.003133257
mca <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard,acat(parallel=FALSE,reverse=TRUE),dados)
summary(mca)
coef(mca, matrix = TRUE)
loge(P[Y=1]/P[Y=2]) loge(P[Y=2]/P[Y=3]) loge(P[Y=3]/P[Y=4])
(Intercept) -0.84303147 0.70411995 1.7108833
tabacoSim -0.08578843 -0.01907128 -0.4264225
pcardSim -0.61955710 -0.81983308 -0.3516252
QL<-deviance(mca)
cbind(QL,1-pchisq(QL,3))
QL
[1,] 6.370057 0.09493045
par(mfrow=c(1,2))
rb<- mca@y - fitted(mca)
plot(1:4,rb[,1], pch=20, ylim=c(-0.5,0.5),xlim=c(1,16),xlab="índice",ylab="Probabilidade observada - predita")
points(5:8, rb[,2],pch=20)
points(9:12, rb[,3],pch=20)
points(13:16, rb[,4],pch=20)
abline(h=0, lty=3)
rp<-resid(mca, type = "pearson")
plot(1:4,rp[,1], pch=20, ylim=c(-3,3),xlim=c(1,12),xlab="índice",ylab="Resíduos de Pearson")
points(5:8, rp[,2],pch=20)
points(9:12, rp[,3],pch=20)
abline(h=0, lty=3)
A partir do logito 3, tem-se, por exemplo, que a chance de estado de saúde moderado (em relação ao estado ruim) entre os idosos sem problema cardíaco foi 1/exp(-0.3516252) = 1.42 vezes a dos com problema cardíaco. Ainda, a chance de estado de saúde moderado (em relação ao estado ruim) entre os idosos que não utilizavam tabaco foi 1/exp(-0.4264225) = 1.53 vezes a dos que utilizavam.
[b] Modelo logitos razão contínua
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/idosos.txt", h=T)
attach(dados)
require(VGAM)
mrc1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cratio(parallel=FALSE, reverse=FALSE), dados)
coef(mrc1, matrix = TRUE)
mrc2 <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cratio(parallel=TRUE, reverse=FALSE), dados)
coef(mrc2, matrix=TRUE)
TRV <- 2*(logLik(mca1)-logLik(mca2))
gl <- length(coef(mrc1))-length(coef(mrc2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 11.53136 4 0.02119862
mrc1 <- vglm(cbind(exc,bom,mod,ruim)~tabaco, cratio(parallel=FALSE, reverse=FALSE), dados)
mrc2 <- vglm(cbind(exc,bom,mod,ruim)~tabaco, cratio(parallel=TRUE, reverse=FALSE), dados)
TRV <- 2*(logLik(mrc1)-logLik(mrc2))
gl <- length(coef(mrc1))-length(coef(mrc2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 9.08337 2 0.01065544
mrc1 <- vglm(cbind(exc,bom,mod,ruim)~pcard, cratio(parallel=FALSE, reverse=FALSE), dados)
mrc2 <- vglm(cbind(exc,bom,mod,ruim)~pcard, cratio(parallel=TRUE, reverse=FALSE), dados)
TRV <- 2*(logLik(mrc1)-logLik(mrc2))
gl <- length(coef(mrc1))-length(coef(mrc2))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 28.21272 2 7.476286e-07
mrc <- vglm(cbind(exc,bom,mod,ruim)~tabaco+pcard, cratio(parallel=FALSE, reverse=FALSE), dados)
summary(mrc)
coef(mrc, matrix = TRUE)
logit(P[Y>1|Y>=1]) logit(P[Y>2|Y>=2]) logit(P[Y>3|Y>=3])
(Intercept) 1.302607 -0.5396741 -1.7103210
tabacoSim 0.124586 0.1052933 0.4252645
pcardSim 1.045950 0.8879319 0.3500455
QL<-deviance(mrc)
cbind(QL,1-pchisq(QL,3))
QL p-value
[1,] 6.124047 0.1057286
par(mfrow=c(1,2))
rb<- mrc@y - fitted(mrc)
plot(1:4,rb[,1], pch=20, ylim=c(-0.5,0.5),xlim=c(1,16),xlab="índice",ylab="Probabilidade observada - predita")
points(5:8, rb[,2], pch=20)
points(9:12, rb[,3], pch=20)
points(13:16, rb[,4], pch=20)
abline(h=0, lty=3)
rp<-resid(mrc, type = "pearson")
plot(1:4,rp[,1], pch=20, ylim=c(-3,3),xlim=c(1,12),xlab="índice",ylab="Resíduos de Pearson")
points(5:8, rp[,2],pch=20)
points(9:12, rp[,3],pch=20)
abline(h=0,lty=3)
[a] Ajustando e selecionando um modelo
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/ex4cap8.txt", h=T)
attach(dados)
require(VGAM)
# modelo inicial (mostrou efeito não significativo da covariável poluição do ar)
mlc <- vglm(cbind(n1,n2,n3,n4)~fumo+trab+ar, cumulative(parallel=FALSE, reverse=FALSE), dados)
summary(mlc)
# avaliando a suposição de chances proporcionais
mlc <- vglm(cbind(n1,n2,n3,n4)~fumo+trab, cumulative(parallel=FALSE, reverse=FALSE), dados)
coef(mlc, matrix = TRUE)
logit(P[Y<=1]) logit(P[Y<=2]) logit(P[Y<=3])
(Intercept) 1.6612419 2.84694620 3.8067147
fumoN 0.4316733 0.03705781 0.9731269
fumoS -1.3995398 -1.72342341 -1.7783494
trabS -0.8416610 -0.85802821 -0.9043969
mop <- vglm(cbind(n1,n2,n3,n4)~fumo+trab, cumulative(parallel=TRUE, reverse=FALSE), dados)
coef(mop, matrix = TRUE)
logit(P[Y<=1]) logit(P[Y<=2]) logit(P[Y<=3])
(Intercept) 1.7008674 2.5821548 3.5007771
fumoN 0.4013478 0.4013478 0.4013478
fumoS -1.4505706 -1.4505706 -1.4505706
trabS -0.8591378 -0.8591378 -0.8591378
TRV <- 2*(logLik(mlc)-logLik(mop))
gl <- length(coef(mlc))-length(coef(mop))
p <- 1-pchisq(TRV,gl)
cbind(TRV, gl, p)
TRV gl p
[1,] 12.3538 6 0.05452564
mlc1 <- vglm(cbind(n1,n2,n3,n4)~fumo, cumulative(parallel=FALSE, reverse=FALSE), dados)
mop1 <- vglm(cbind(n1,n2,n3,n4)~fumo, cumulative(parallel=TRUE, reverse=FALSE), dados)
TRV<- 2*(logLik(mlc1)-logLik(mop1))
gl <- length(coef(mlc1))-length(coef(mop1))
p<-1-pchisq(TRV,gl); cbind(TRV, gl, p)
TRV gl p
[1,] 12.70856 4 0.01279123
mlc2 <- vglm(cbind(n1,n2,n3,n4)~trab, cumulative(parallel=FALSE, reverse=FALSE), dados)
mop2 <- vglm(cbind(n1,n2,n3,n4)~trab, cumulative(parallel=TRUE, reverse=FALSE), dados)
TRV<- 2*(logLik(mlc2)-logLik(mop2))
gl <- length(coef(mlc2))-length(coef(mop2))
p<-1-pchisq(TRV,gl); cbind(TRV, gl, p)
TRV gl p
[1,] 0.2551593 2 0.8802233
# modelo selecionado: mlc com chances proporcionais parciais
mcpp <- vglm(cbind(n1,n2,n3,n4)~fumo+trab, cumulative(parallel=FALSE~fumo, reverse=FALSE), dados)
coef(mcpp, matrix = TRUE)
logit(P[Y<=1]) logit(P[Y<=2]) logit(P[Y<=3])
(Intercept) 1.6661554 2.84414186 3.7810307
fumoN 0.4306765 0.03814593 0.9705752
fumoS -1.4014119 -1.72401437 -1.7776227
trabS -0.8548397 -0.85483967 -0.8548397
[b] Adequação do modelo selecionado: MLC com CPP com as covariáveis fumo e poluição no trabalho
rp<-resid(mcpp, type = "pearson")
Qp<-sum(rp^2);
cbind(Qp,1-pchisq(Qp,26))
Qp p-value
[1,] 13.67476 0.9770414
QL<-deviance(mcpp)
cbind(QL,1-pchisq(QL,26))
QL p-value
[1,] 13.75799 0.9760529
par(mfrow=c(1,2))
rb<- mcpp@y - fitted(mcpp)
plot(1:12,rb[,1], pch=20, ylim=c(-0.5,0.5), xlim=c(1,48), xlab="índice", ylab="Probabilidade observada - predita")
points(13:24, rb[,2], pch=20)
points(25:36, rb[,3], pch=20)
points(37:48, rb[,4], pch=20)
abline(h=0, lty=3)
rp<-resid(mcpp, type = "pearson")
plot(1:12, rp[,1], pch=20, ylim=c(-3,3), xlim=c(1,16), xlab="índice", ylab="Resíduos de Pearson")
points(13:24, rp[,2], pch=20)
points(25:36, rp[,3], pch=20)
abline(h=0, lty=3)
[c] Algumas conclusões
A partir do logito 1 (gravidade I versus II ou III ou IV) tem-se, por exemplo, que:
Poluição no trabalho: OR S|N = exp(-0.855) = 0.425
OR N|S = 1/exp(-0.855) = 2.351
Logo, a chance de nenhum sintoma de doença respiratória crônica entre os que trabalhavam em local sem poluição foi 2,35 vezes a dos que trabalhavam em local com poluição.
Quanto ao tabaco, sendo a categoria ex-fumante = nível de referência, tem-se:
OR NF|EX = exp(0.43) = 1.537
de modo que a chance de nenhum sintoma de doença respiratória crônica entre os não fumantes (NF) foi em torno de 1,5 vezes a dos ex-fumantes (EX).
Capítulo 9 - Regressão logística condicional
[a] Análise dos dados
match<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/infart.txt", h=T)
attach(match)
require(survival)
model1<-clogit(MI~SMK+SBP+ECG+SMK*SBP+SMK*ECG+SBP*ECG+strata(par), data=match)
model1
coef exp(coef) se(coef) z p
SMK -6.81713 0.00109 7.41058 -0.92 0.36
SBP 0.02045 1.02066 0.02740 0.75 0.46
ECG 3.75271 42.63644 7.88380 0.48 0.63
SMK:SBP 0.05828 1.06001 0.05633 1.03 0.30
SMK:ECG -1.47174 0.22953 1.96530 -0.75 0.45
SBP:ECG -0.00834 0.99169 0.05118 -0.16 0.87
Likelihood ratio test=12.7 on 6 df, p=0.0487
n= 78, number of events= 39
model2<-clogit(MI~SMK+SBP+ECG+strata(par), data=match)
model2
coef exp(coef) se(coef) z p
SMK 0.837 2.309 0.652 1.28 0.199
SBP 0.035 1.036 0.021 1.66 0.096
ECG 1.831 6.242 1.154 1.59 0.113
Likelihood ratio test=11.4 on 3 df, p=0.00963
n= 78, number of events= 39
model3<-clogit(MI~SBP+strata(par), data=match)
model3
coef exp(coef) se(coef) z p
SBP 0.0381 1.0388 0.0213 1.79 0.073
ECG 1.6834 5.3837 1.0958 1.54 0.124
# saídas do modelo selecionado
model4<-clogit(MI~SBP+strata(par), data=match)
model4
coef exp(coef) se(coef) z p
SBP 0.0481 1.0492 0.0203 2.36 0.018
Likelihood ratio test=6.41 on 1 df, p=0.0113
n= 78, number of events= 39
summary(model4)
coef exp(coef) se(coef) z Pr(>|z|)
SBP 0.04807 1.04924 0.02033 2.364 0.0181 *
exp(coef) exp(-coef) lower .95 upper .95
SBP 1.049 0.9531 1.008 1.092
plot(model4$residuals, pch=16, ylim=c(-2.5,2.5))
Conclusões com base no modelo selecionado:
Para esse estudo, foram encontradas evidências de associação entre a SBP e o infarto do miocárdio (MI), uma vez que a chance de encontrarmos, entre os casos, indivíduos com SBP > 120 mmHg foi maior do que a de encontramos indivíduos com SBP = 120 mmHg.
Ou, analogamente, há evidências de associação entre a SBP e o infarto do miocárdio (MI), uma vez que a chance de encontrarmos indivíduos com SBP elevado foi maior entre os casos (indivíduos com MI) do que entre os controles (indivíduos sem MI).
Por exemplo: OR (SBP=140|SBP=120) = exp(0.04807*20) = 2.615. Logo:
A chance de encontrarmos, entre os casos, indivíduos com SBP = 140 mmHg foi 2,6 vezes a de encontramos indivíduos com SBP = 120 mmHg. Isso implica que, entre os casos, é esperado 5 indivíduos com SBP = 140 mmHg para cada 2 indivíduos com SBP = 120 mmHg.
Ou, analogamente, a chance de encontramos indivíduos com SBP = 140 mmHg entre os casos foi 2,6 vezes a de encontrarmos indivíduos com SBP = 140 mmHg entre os controles. Isso implica que é esperado 5 indivíduos com SBP = 140 mmHg entre os casos para cada 2 com SBP = 140 mmHg entre os controles.
[a] Analise dos dados
dados<-read.table("https://docs.ufpr.br/~giolo/LivroADC/Dados/infertilidade.txt", h=T)
i<-order(dados[,7])
dados<-dados[i,]
attach(dados)
require(survival)
model1<-clogit(caso~ab_induzido+ab_espontaneo+strata(par), data=dados)
model1
coef exp(coef) se(coef) z p
ab_induzido 1.151 3.162 0.370 3.11 0.0019
ab_espontaneo 1.880 6.551 0.415 4.53 5.9e-06
Likelihood ratio test=37.8 on 2 df, p=6.14e-09
n= 166, number of events= 83
plot(model1$residuals, pch=149, ylim=c(-2.5,2.5))
[b] Conclusões a partir do modelo ajustado aos dados:
A partir do modelo ajustado, há evidências de associação entre a infertilidade secundária feminina e abortos prévios, uma vez que a chance de encontramos, entre os casos, mulheres com 1 ou mais abortos induzidos, bem como mulheres com 1 ou mais abortos espontâneo, foi maior do que a chance de encontramos mulheres com nenhum aborto induzido ou espontâneo.
Ou analogamente, há evidências de associação entre a infertilidade secundária feminina e abortos prévios, uma vez que a chance de abortos induzidos, bem como de abortos espontâneos, foi maior entre os casos do que entre os controles.
[1] Variando o número de abortos induzidos (mantendo fixo o número de abortos espontâneos)
Entre os casos, notou-se que a chance de encontrarmos mulheres com 1 aborto induzido foi em torno de 3 vezes a de encontramos mulheres com 0 (nenhum) aborto induzido.
Ou, analogamente, a chance de mulheres com 1 aborto induzido entre os casos foi em torno de 3 vezes a de mulheres com 1 aborto induzido entre os controles.
[2] Variando o número de abortos espontâneos (mantendo fixo o número de abortos induzidos)
Entre os casos, notou-se que a chance de encontramos mulheres com 1 aborto espontâneo foi em torno de 6,5 vezes a de encontrarmos mulheres com 0 (nenhum) aborto espontâneo.
Ou, analogamente, a chance de mulheres com 1 aborto espontâneo entre os casos foi em torno de 6,5 vezes a de mulheres com 1 aborto espontâneo entre os controles.