Mostre a distribuição Poisson Truncada, com função de probabilidade f(y;λ)=λ λy (eλ−1)y
!, em que y=0,1,2,…λ>0 pertence á família exponencial f(y)=exp[ϕ{yθ−b(θ)}+c(y,ϕ)].
exp{log( λy/ (ey−1)y!)}
exp=log()
= 1[ylog(λ)−log(ey−1)]+logy!
-> ϕ=1, θ=log(), b(θ)=log(ey−1), c(y,)=log(y!)$$
Na tabela abaixo descrevemos o número de bactérias sobreviventes em amostras de um produto alimentício segundo o tempo (em minutos) de exposição do produto a uma temperatura de 300◦F
|Número| 175 108 95 82 71 50 49 31 28 17 16 11|
|Tempo| 1 2 3 4 5 6 7 8 9 10 11 12|
Carregando os dados
numero=c(175, 108, 95, 82, 71, 50, 49, 31, 28, 17, 16, 11)
tempo=seq(1:12)
q2 <- data.frame(tempo,numero)
colnames(q2) <- c("Tempo", "Número")
attach(q2)
Histograma Usualmente analisamos o histograma da variável dependente para verificar a melhor distribuição para o ajuste do modelo. Abaixo podemos verificar que a distribuição Poisson aparenta ser adequado para os dados em questão.
hist(Número)
Ajuste
fit1<-glm(Número~Tempo, family = poisson(link=identity))
fit2<-glm(Número~Tempo, family = poisson(link=log))
fit3<-glm(Número~Tempo, family = poisson(link=sqrt))
Análise de Desvio Vamos verificar a adequação dos modelos. Se , o modelo em investigação é aceito.
phi1<-summary(fit1)$dispersion
desvio1<-summary(fit1)$deviance/phi1
q.quadr1<-qchisq(0.95,summary(fit1)$df.residual)
phi2<-summary(fit2)$dispersion
desvio2<-summary(fit2)$deviance/phi2
q.quadr2<-qchisq(0.95,summary(fit2)$df.residual)
phi3<-summary(fit3)$dispersion
desvio3<-summary(fit3)$deviance/phi3
q.quadr3<-qchisq(0.95,summary(fit3)$df.residual)
Pelo comparativo dos desvios o modelo 1 é o único que apresenta resultados não interresante para o ajuste dos dados. Continuaremos nossas analises com o modelo 2 e 3.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library("gridExtra")
va2<-fitted(fit2)
va3<-fitted(fit3)
y = Número
g2 <- ggplot(q2 , aes(x=va2, y=y)) + ylim(0,200) + xlim(0,200) +
geom_point(size=4, color='#e7ad52') + geom_abline(intercept = 0, slope =
1, color='#001132') + theme(axis.title.x = element_text(colour =
'#001132'), axis.text.x = element_text(colour = '#001132'), axis.title.y
= element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
g3 <- ggplot(q2, aes(x=va3, y=y)) + ylim(0,200) + xlim(0,200) +
geom_point(size=4, color='#e7ad52') + geom_abline(intercept = 0, slope =
1, color='#001132') + theme(axis.title.x = element_text(colour =
'#001132'), axis.text.x = element_text(colour = '#001132'), axis.title.y
= element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
grid.arrange(g2, g3, ncol=2, nrow=1)
Pela análise gráfica o modelo 2, aparenta estar melhor adequada que o modelo 3. Entretanto, o modelo 3 está muito próximo será necessário uma análise de variância para retirar possíveis duvidas.
library(boot)
library("gridExtra")
library(ggplot2)
rd2<-glm.diag(fit2)$rd
rd3<-glm.diag(fit3)$rd
qq2 <- ggplot(q2, aes(sample=rd2)) + stat_qq(size=4,
color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) + stat_qq_line(colour =
'#001132') + theme(axis.title.x = element_text(colour = '#001132'),
axis.text.x = element_text(colour = '#001132'), axis.title.y =
element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
qq3 <- ggplot(q2, aes(sample=rd3)) + stat_qq(size=4,
color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) + stat_qq_line(colour =
'#001132')+ theme(axis.title.x = element_text(colour = '#001132'),
axis.text.x = element_text(colour = '#001132'), axis.title.y =
element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
grid.arrange(qq2, qq3, ncol=2, nrow=1)
Ao analisarmos a função de variância, temos a comprovação de que o modelo 2 estar com a reta muito melhor ajustada que o modelo 3. Por conta disso, usaremos o segundo modelo.
library(knitr)
ajuste<-summary(fit2)
kable(ajuste$coefficients)
| Estimate | Std. Error | z value | Pr(>|z|) | |
|---|---|---|---|---|
| (Intercept) | 5.3055715 | 0.0634827 | 83.57504 | 0 |
| Tempo | -0.2288956 | 0.0126999 | -18.02336 | 0 |
\[log(\mu_i) = 5.3 - 0.228*tempo_i\] Ou seja a cada minuto aumentado teremos uma diminuição de 0.228 no log da quantidade média de bactérias.
-Teste de Normalidade
library(nortest)
rd1<-glm.diag(fit2)$rd
teste1<-lillie.test(rd1)
teste2<-shapiro.test(rd1)
Ao observar os resíduos, temos a informação que são normais, pois seu p-valor dos testes são maiores que 5%, aceitamos a hipótese de que os resíduos apresentam normalidade. Também podemos verificar a normalidade através do gráfico qq-plot.
library(ggplot2)
qq1 <- ggplot(q2, aes(sample=rd1))+
stat_qq(size=4, color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) +
stat_qq_line(colour = '#001132') + theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
qq1
rd1<-glm.diag(fit2)$rd
indice=as.vector(1:length(Número))
rd <- ggplot(q2, aes(x=indice,
y=rd1)) + geom_point(size=4, color='#e7ad52') + geom_abline(intercept =
-2, slope = 0, color='#001132')+ geom_abline(intercept = 2, slope = 0,
color='#001132') + ylim(-4,4) + theme(axis.title.x = element_text(colour
= '#001132'), axis.text.x = element_text(colour = '#001132'),
axis.title.y = element_text(colour = '#001132'), axis.text.y =
element_text(colour = '#001132'))
rd
Como observado, temos apenas um único ponto próximo aos limites.
h<-glm.diag(fit2)$h
indice =as.vector(1:length(Número))
h3 <-ggplot(q2, aes(x=indice, y=h)) + geom_point(size=4,
color='#e7ad52') + geom_abline(intercept = 2*(2/length(Número)), slope
= 0, color='#001132') + theme(axis.title.x = element_text(colour =
'#001132'), axis.text.x = element_text(colour = '#001132'), axis.title.y
= element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
h3
O modelo tem um único ponto acima do limite, podendo ser um possível ponto de alavanca.
DC<-glm.diag(fit2)$cook
indice=as.vector(1:length(Número))
dc <- ggplot(q2, aes(x=indice, y=DC)) + geom_point(size=4,
color='#e7ad52') + geom_abline(intercept = qchisq(0.1,2)/2, slope = 0,
color='#001132') + theme(axis.title.x = element_text(colour =
'#001132'), axis.text.x = element_text(colour = '#001132'), axis.title.y
= element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
dc
O modelo tem 3 pontos acima dos limites, onde 2 estão muito Destoante dos demais.
#Questão 3
Carregando o banco de dados e nomeando as colunas para facilitar a analise.
library(readr)
questao3 <-read_csv("E:/OneDrive/Documentos/defects.txt", col_names = FALSE)
## Rows: 30 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (4): X1, X2, X3, X4
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
colnames(questao3) <- c("Temperatura", "Densidade",
"Taxa", "Defeitos")
attach(questao3)
Iremos utilizar a distribuição normal:
fit1<-glm(Defeitos~Temperatura+Densidade+Taxa, family =
gaussian(link=identity))
fit2<-glm(Defeitos~Temperatura+Densidade+Taxa, family =
gaussian(link=log))
fit3<-glm(Defeitos~Temperatura+Densidade+Taxa,
family = gaussian(link=inverse))
Vamos verificar a adequação dos modelos.
phi1<-summary(fit1)$dispersion
desvio1<-summary(fit1)$deviance/phi1
q.quadr1<-qchisq(0.95,summary(fit1)$df.residual)
phi2<-summary(fit2)$dispersion
desvio2 <-summary(fit2)$deviance/phi2
q.quadr2<-qchisq(0.95,summary(fit2)$df.residual)
phi3<-summary(fit3)$dispersion
desvio3<-summary(fit3)$deviance/phi3
q.quadr3<-qchisq(0.95,summary(fit3)$df.residual)
Podemos observar que todos os modelos são adequados
library(ggplot2)
library("gridExtra")
va1<-fitted(fit1)
va2<-fitted(fit2)
va3<-fitted(fit3)
y<-Defeitos
g1 <- ggplot(questao3 , aes(x=va1, y=y)) +
geom_point(size=4, color='#e7ad52') + geom_abline(intercept = 0, slope =
1, color='#001132') + ggtitle("Modelo 1") + theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
g2<- ggplot(questao3, aes(x=va2,
y=y)) + geom_point(size=4, color='#e7ad52') + geom_abline(intercept = 0,
slope = 1, color='#001132') + ggtitle("Modelo 2") + theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
g3 <- ggplot(questao3, aes(x=va3,
y=y)) + geom_point(size=4, color='#e7ad52') + geom_abline(intercept = 0,
slope = 1, color='#001132') + ggtitle("Modelo 3") + theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
grid.arrange(g1, g2, g3, ncol=3, nrow=1)
Observamos que o modelo 1 e o modelo 2 são os melhores ajustes diante da reta. Entretanto, entre os dois o modelo um aparenta ter melhores resultados.
Escolha da função de variância Gráfico de versus valores ajustados.
library("gridExtra")
library(ggplot2)
library(boot)
rd1<-glm.diag(fit1)$rd
rd2<-glm.diag(fit2)$rd
rd3<-glm.diag(fit3)$rd
q1 <- ggplot(questao3, aes(sample=rd1))+
ggtitle("Modelo 1") + stat_qq(size=4, color="#e7ad52") + ylim(-4, 4) +
xlim(-4, 4) + stat_qq_line(colour = '#001132')+ theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
q2 <- ggplot(questao3,
aes(sample=rd2)) + ggtitle("Modelo 2") + stat_qq(size=4,
color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) + stat_qq_line(colour =
'#001132')+ theme(axis.title.x = element_text(colour = '#001132'),
axis.text.x = element_text(colour = '#001132'), axis.title.y =
element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
q3 <- ggplot(questao3, aes(sample=rd3)) + stat_qq(size=4,
color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) + ggtitle("Modelo 3") +
stat_qq_line(colour = '#001132')+ theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
grid.arrange(q1, q2, q3, ncol=3, nrow=1)
Por fim, através do gráfico acima, fica mais evidente a escolha do modelo 1 como o mais apropriado para nossos dados.
Seleção de variáveis Com a função identidade sendo escolha mais apropriada, iremos rodar o algoritmo de stepwise para tentarmos identificar as variáveis mais significantes para nosso modelo.
menor<-glm(Defeitos~1, family = gaussian(link=identity))
maior<-glm(Defeitos~Temperatura+Densidade+Taxa,family =
gaussian(link=identity))
step(menor, scope = list(upper=maior),
direction="both")
## Start: AIC=266.06
## Defeitos ~ 1
##
## Df Deviance AIC
## + Temperatura 1 1496.9 208.43
## + Densidade 1 1612.5 210.67
## + Taxa 1 2364.3 222.15
## <none> 10923.9 266.06
##
## Step: AIC=208.43
## Defeitos ~ Temperatura
##
## Df Deviance AIC
## + Densidade 1 1354.8 207.44
## + Taxa 1 1389.7 208.21
## <none> 1496.9 208.43
## - Temperatura 1 10923.9 266.06
##
## Step: AIC=207.44
## Defeitos ~ Temperatura + Densidade
##
## Df Deviance AIC
## <none> 1354.8 207.44
## - Densidade 1 1496.8 208.43
## + Taxa 1 1314.4 208.53
## - Temperatura 1 1612.5 210.67
##
## Call: glm(formula = Defeitos ~ Temperatura + Densidade, family = gaussian(link = identity))
##
## Coefficients:
## (Intercept) Temperatura Densidade
## 46.238 18.050 -2.327
##
## Degrees of Freedom: 29 Total (i.e. Null); 27 Residual
## Null Deviance: 10920
## Residual Deviance: 1355 AIC: 207.4
Modelo Final Através das análises de desvio, análises gráficas e seleção de variáveis foi escolhido o modelo 1 que faz uso da funçao identidade e as seguintes variáveis:
library(knitr)
fit1<-glm(Defeitos ~ Temperatura + Densidade, family =
gaussian(link=identity))
ajuste<-summary(fit1)
kable(ajuste$coefficients)
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 46.237985 | 52.065528 | 0.8880729 | 0.3823449 |
| Temperatura | 18.049940 | 7.965269 | 2.2660803 | 0.0316738 |
| Densidade | -2.327472 | 1.383311 | -1.6825371 | 0.1039958 |
Isto é, fixando a densidade, quando quando acrescido uma unidade de temperatura teremos um aumento no número médio de defeitos. E quando fixado a temperatura, quando acrescido uma unidade de densidade teremos uma diminuição no número médio de defeitos.
-Análise de Diagnósticos -Teste de Normalidade
library(nortest)
rd1<-glm.diag(fit1)$rd
teste1<-lillie.test(rd1)
teste2<-shapiro.test(rd1)
Os resíduos são normais,como o p-valor dos testes aplicados são maiores que 5%.
library(ggplot2)
q1 <- ggplot(questao3, aes(sample=rd1))+
stat_qq(size=4, color="#e7ad52") + ylim(-4, 4) + xlim(-4, 4) +
stat_qq_line(colour = '#001132') + theme(axis.title.x =
element_text(colour = '#001132'), axis.text.x = element_text(colour =
'#001132'), axis.title.y = element_text(colour = '#001132'), axis.text.y
= element_text(colour = '#001132'))
q1
Diagnósticos Aberrantes
rd1<-glm.diag(fit1)$rd
indice=as.vector(1:length(Defeitos))
rd <- ggplot(questao3,
aes(x=indice, y=rd1)) + geom_point(size=4, color='#e7ad52') +
geom_abline(intercept = -2, slope = 0, color='#001132')+
geom_abline(intercept = 2, slope = 0, color='#001132') + ylim(-4,4) +
theme(axis.title.x = element_text(colour = '#001132'), axis.text.x =
element_text(colour = '#001132'), axis.title.y = element_text(colour =
'#001132'), axis.text.y = element_text(colour = '#001132'))
rd
O modelo apresentou apenas um único ponto acima dos limites e um único ponto abaixo dos limites.
h<-glm.diag(fit1)$h
indice=as.vector(1:length(Defeitos))
h3<- ggplot(questao3, aes(x=indice, y=h)) + geom_point(size=4,
color='#e7ad52') + geom_abline(intercept =
2*(length(coef(fit1))/length(Defeitos)), slope = 0, color='#001132') +
theme(axis.title.x = element_text(colour = '#001132'), axis.text.x =
element_text(colour = '#001132'), axis.title.y = element_text(colour =
'#001132'), axis.text.y = element_text(colour = '#001132'))
h3
Para o gráfico de pontos de alavanca, o modelo apresentou apenas um único ponto acima do limite estabelecido.
-Influentes
DC<-glm.diag(fit1)$cook
indice=as.vector(1:length(Defeitos))
dc <- ggplot(questao3,
aes(x=indice, y=DC)) + geom_point(size=4, color='#e7ad52') +
geom_abline(intercept = qchisq(0.05,length(coef(fit1)))/2, slope = 0,
color='#001132') + theme(axis.title.x = element_text(colour =
'#001132'), axis.text.x = element_text(colour = '#001132'), axis.title.y
= element_text(colour = '#001132'), axis.text.y = element_text(colour =
'#001132'))
dc
O modelo tem 2 pontos acima dos limites, talvez sendo necessária uma investigação mais aprofundada.