Você está na página 1de 10

MLG_3_EST_PULSO

Sarah Emmylle

07/07/2023

Bibliotecas utilizadas
library(MASS)
library(dplyr)

##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(stats)

Carregando o banco de dados


pulso1<-scan('pulso.dat',what = list(pulsacao_em_repouso=0, habito_de_fumar=0, peso=0))

pulsobd1 <- data.frame(Pulsação=pulso1$pulsacao_em_repouso,


Fuma=pulso1$habito_de_fumar,
Peso=pulso1$peso)

pulso<-scan('pulso.dat',what = list(pulsacao_em_repouso=0, habito_de_fumar=0, peso=0))

pulso$pulsacao_em_repouso[pulso$pulsacao_em_repouso=="1"] <- "Pulsação Normal"


pulso$pulsacao_em_repouso[pulso$pulsacao_em_repouso=="2"] <- "Pulsação Alta"

pulso$habito_de_fumar[pulso$habito_de_fumar=="1"] <- "Sim"


pulso$habito_de_fumar[pulso$habito_de_fumar=="2"] <- "Não"

attach(pulso)

1
pulsoBD <- data.frame(Pulsação=pulso$pulsacao_em_repouso,
Fuma=pulso$habito_de_fumar,
Peso=pulso$peso)

Variáveis
No arquivo pulso.dat são descritas as variáveis pulsação em repouso (1: normal, 2: alta), hábito de fumar (1:
sim, 2: não) e peso (em kg) de 92 adultos do sexo masculino.
summary(pulso$peso)

## Min. 1st Qu. Median Mean 3rd Qu. Max.


## 47.07 61.94 71.85 71.92 77.05 106.53
O peso dos 92 adultos masculinos varia de 47,07 kg a 106,53 kg, com uma mediana de 71,85 kg. A média do
peso é de 71,92 kg. O primeiro quartil está em 61,94 kg e o terceiro quartil em 77,05 kg.
# Média , Desvio_padrão e coeficeiente_de_Variação do peso por pulsação
Tabela1<-pulsoBD %>% group_by(Pulsação) %>% summarise(Média=round(mean(Peso),4),Desvio_Padrão= round(sd(
Tabela1 <- rbind(Tabela1,c("Geral",round(mean(pulso$peso),4),round(sd(pulso$peso),4),round((sd(peso))/me
Tabela1

## # A tibble: 3 x 4
## Pulsação Média Desvio_Padrão CV
## <chr> <chr> <chr> <chr>
## 1 Pulsação Alta 68.3339 9.1722 0.1342
## 2 Pulsação Normal 73.0508 12.3077 0.1685
## 3 Geral 71.9228 11.7629 0.1635
Para o grupo de “Pulsação Alta”, a média é de aproximadamente 68,33, com um desvio padrão de 9,17 e
uma variação relativamente baixa em relação à média com um coeficiente de aproximadamente 13,42%. No
grupo de “Pulsação Normal”, a média é de cerca de 73,05, com um desvio padrão de 12,31 e uma variação
em torno da média um pouco maior com coeficiente de aproximadamente 16,85%, ainda sendo relativamente
baixo. Em geral, a média de pulsação é de aproximadamente 71,92, com um desvio padrão de 11,76 com
coeficiente de variação de aproximadamente 16,35%, indicando uma variação baixa em relação à média.
cong<-table(pulsoBD$Pulsação,pulsoBD$Fuma)
cong

##
## Não Sim
## Pulsação Alta 12 10
## Pulsação Normal 52 18
addmargins(cong)

##
## Não Sim Sum
## Pulsação Alta 12 10 22
## Pulsação Normal 52 18 70
## Sum 64 28 92
prop.table(cong, margin = 2)

##
## Não Sim
## Pulsação Alta 0.1875000 0.3571429
## Pulsação Normal 0.8125000 0.6428571

2
Para o grupo “Pulsação Alta”, a proporção de respostas “Não” é de 0,1875 e a proporção de respostas “Sim”
é de 0,3571. No grupo “Pulsação Normal”, a proporção de respostas “Não” é de 0,8125 e a proporção de
respostas “Sim” é de 0,6429. No grupo “Pulsação Alta”, há uma maior proporção de respostas “Sim” para o
habito de fumar em comparação com “Não”, enquanto no grupo “Pulsação Normal”, a proporção de respostas
“Não” é maior do que a proporção de respostas “Sim” mostrando indicios de que a presença do habito de
fumar aumenta as chances de pulsação alta.
# Gráfico de barras para Pulsação e Hábito de Fumar

ggplot(pulsoBD, aes(x = factor(Pulsação), fill = factor(Fuma))) +


geom_bar(position = "stack") +
labs(x = "Pulsação", y = "Contagem", fill = "Hábito de Fumar") + theme_minimal()+
ggtitle("Gráfico de Barras - Pulsação e Hábito de Fumar")

Gráfico de Barras − Pulsação e Hábito de Fumar

60
Contagem

40 Hábito de Fumar
Não
Sim

20

Pulsação Alta Pulsação Normal


Pulsação
O gráfico revela que, para o grupo de indivíduos com pulsação alta, há um número aproximadamente igual
de indivíduos que fumam e que não fumam. No entanto, para o grupo de indivíduos com pulsação normal,
a contagem de indivíduos que não fumam é significativamente maior do que a contagem de indivíduos que
fumam.

Modelo de regressão logístico


knitr::include_graphics("Modelo.jpeg")

3
pulso1<-scan('pulso.dat',what = list(pulsacao_em_repouso=0, habito_de_fumar=0, peso=0))

pulsobd1 <- data.frame(Pulsação=pulso1$pulsacao_em_repouso,


Fuma=pulso1$habito_de_fumar,
Peso=pulso1$peso)
# Ajuste do modelo logístico linear

pulsobd1$Pulsação[pulsobd1$Pulsação=="1"] <- "0"


pulsobd1$Pulsação[pulsobd1$Pulsação=="2"] <- "1"

pulsobd1$Pulsação <- factor(pulsobd1$Pulsação)


pulsobd1$Fuma <- factor(pulsobd1$Fuma)
modelo <- glm(Pulsação ~Fuma + Peso, data = pulsobd1, family = binomial )

# Resumo do modelo
summary(modelo)

##
## Call:
## glm(formula = Pulsação ~ Fuma + Peso, family = binomial, data = pulsobd1)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.18021 1.87138 1.699 0.0892 .
## Fuma2 -1.19298 0.55298 -2.157 0.0310 *
## Peso -0.05050 0.02473 -2.042 0.0412 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 101.21 on 91 degrees of freedom
## Residual deviance: 93.64 on 89 degrees of freedom
## AIC: 99.64
##
## Number of Fisher Scoring iterations: 4
#Nível Descritivo

1-pchisq(modelo$deviance,modelo$df.residual)

4
## [1] 0.347653
As variáveis “Fumar” e “Peso” são estatisticamente significativas, com um nível de significância de 5%. O
desvio do modelo é de 93,64 com 89 graus de liberdade, estão satusfatoriamente bem aproximados com um p
valor de aproximadamente 0,35.
fit.model<-modelo
source('envel_bino.txt')
2
Componente do Desvio

1
0
−1
−2

−2 −1 0 1 2

Percentil da N(0,1)
O gráfico de envelope exibe uma excelente agregação das variáveis, não apresentando indícios de nenhum
valor discrepante (outlier) e nenhuma inadequação a distribuição do modelo.
#X <- model.matrix(fit.model)
#n <- nrow(X)
#p <- ncol(X)
#w <- fit.model$weights
#W <- diag(w)
#H <- solve(t(X)%*%W%*%X)
#H <- sqrt(W)%*%X%*%H%*%t(X)%*%sqrt(W)
#h <- diag(H)
#ts <- resid(fit.model,type="pearson")/sqrt(1-h)
#td <- resid(fit.model,type="deviance")/sqrt(1-h)
#di <- (h/(1-h))*(tsˆ2)
#a <- max(td)
#b <- min(td)
#par(mfrow=c(2,2))
#plot(fitted(fit.model),h,xlab="Valor Ajustado",
#ylab="Medida h", pch=16)
#identify(fitted(fit.model), h, n=5, tolerance = 0.40)
##
#plot(di,xlab="Índice", ylab="Distância de Cook",pch=16)
#identify(di, n=5,tolerance = 0.40)
##
#plot(td,xlab="Índice", ylab="Resíduo Componente do Desvio",

5
#ylim=c(b-1,a+1), pch=16)
#abline(2,0,lty=2)
#abline(-2,0,lty=2)
#identify(td, n=5, tolerance = 0.40)
##
#plot(fitted(fit.model), td,xlab="Valor Ajustado",
#ylab="Resíduo Componente do Desvio", pch=16)
#identify(fitted(fit.model), td, n=5, tolerance = 0.40)
#par(mfrow=c(1,1))

knitr::include_graphics("Rplot01.png")

Dos gráficos de diagnóstico, apenas o gráfico das distâncias de Cook, os pontos 48 e 86 foram identificados
como possivelmente influentes.

Analisando o impacto dos outilers no modelo de regressão logístico


ao1<-glm(Pulsação ~Fuma + Peso, data = pulsobd1, family = binomial,subset = -48 )
summary(ao1)

##
## Call:
## glm(formula = Pulsação ~ Fuma + Peso, family = binomial, data = pulsobd1,
## subset = -48)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.64449 1.93896 1.880 0.0602 .
## Fuma2 -1.10955 0.56609 -1.960 0.0500 *
## Peso -0.05876 0.02598 -2.262 0.0237 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##

6
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 98.317 on 90 degrees of freedom
## Residual deviance: 90.309 on 88 degrees of freedom
## AIC: 96.309
##
## Number of Fisher Scoring iterations: 4
Considerando um nível de significância de 5%,a retirada da observação 48 não causa mudança inferencial.
ao2<-glm(Pulsação ~Fuma + Peso, data = pulsobd1, family = binomial,subset = -86 )
summary(ao2)

##
## Call:
## glm(formula = Pulsação ~ Fuma + Peso, family = binomial, data = pulsobd1,
## subset = -86)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.93944 2.00037 1.969 0.0489 *
## Fuma2 -1.37268 0.57647 -2.381 0.0173 *
## Peso -0.05924 0.02619 -2.262 0.0237 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 100.66 on 90 degrees of freedom
## Residual deviance: 91.54 on 88 degrees of freedom
## AIC: 97.54
##
## Number of Fisher Scoring iterations: 4
Considerando um nível de significância de 5%,a retirada da observação 86 não causa mudança inferencial.
ao3<-glm(Pulsação ~Fuma + Peso, data = pulsobd1, family = binomial,subset =-c(48,86) )
summary(ao3)

##
## Call:
## glm(formula = Pulsação ~ Fuma + Peso, family = binomial, data = pulsobd1,
## subset = -c(48, 86))
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.44576 2.07809 2.139 0.0324 *
## Fuma2 -1.29972 0.59012 -2.202 0.0276 *
## Peso -0.06804 0.02757 -2.468 0.0136 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 97.789 on 89 degrees of freedom
## Residual deviance: 88.172 on 87 degrees of freedom

7
## AIC: 94.172
##
## Number of Fisher Scoring iterations: 4
Considerando um nível de significância de 5%, os pontos identificados (48, 86) em conjunto também não
causam nenhuma mudança inferencial.

Impacto percentual
((ao1$coefficients-modelo$coefficients)/(modelo$coefficients))*100

## (Intercept) Fuma2 Peso


## 14.599285 -6.993213 16.346552
A remoção da observção 48 teve um impacto significativo nas estimativas dos coeficientes. Especificamente, a
variável “Fuma2”(Não fumantes) apresentou uma variação de aproximadamente -7%, enquanto o peso sofreu
alterações de cerca de 16,35%.
((ao2$coefficients-modelo$coefficients)/(modelo$coefficients))*100

## (Intercept) Fuma2 Peso


## 23.87377 15.06330 17.29982
A remoção da observção 86 teve um impacto significativo nas estimativas dos coeficientes. Especificamente, a
variável “Fuma2”(Não fumantes) apresentou uma variação de aproximadamente 15%, enquanto o peso sofreu
alterações de cerca de 17,3%.
((ao3$coefficients-modelo$coefficients)/(modelo$coefficients))*100

## (Intercept) Fuma2 Peso


## 39.794679 8.946934 34.723012
A remoção do par de observção 48 e 86 tiveram um impacto significativo nas estimativas dos coeficientes.
Especificamente, a variável “Fuma2”(Não fumantes) apresentou uma variação de aproximadamente 8,9%,
enquanto o peso sofreu alterações de cerca de 34,7%.

Curvas ajustadas para cada grupo de hábito de fumar


# Calcular os valores ajustados
pulsobd1$Valores_Ajustados <- predict(modelo, type = "response")

# Gerar o gráfico
ggplot(pulsobd1, aes(x = Peso, y = Valores_Ajustados, color = Fuma)) +
geom_point() +
labs(x = "Peso", y = "Valores Ajustados", color = "Fuma") +
scale_color_manual(values = c("red", "blue"), labels = c("Fumante", "Não Fumante")) +
theme_minimal()

8
0.6
Valores Ajustados

0.4
Fuma
Fumante
Não Fumante

0.2

60 80 100
Peso

Curvas ajustadas para cada grupo de hábito de fumar com as ban-


das de confiança de 95%
# Calcular os valores ajustados e os intervalos de confiança
pulsobd1$Valores_Ajustados <- predict(modelo, type = "response")
pulsobd1$Lower_CI <- predict(modelo, type = "link", se.fit = TRUE)$fit - 1.96 * predict(modelo, type = "
pulsobd1$Upper_CI <- predict(modelo, type = "link", se.fit = TRUE)$fit + 1.96 * predict(modelo, type = "

# Converter as escalas para a escala de probabilidade


pulsobd1$Lower_CI <- plogis(pulsobd1$Lower_CI)
pulsobd1$Upper_CI <- plogis(pulsobd1$Upper_CI)

# Gerar o gráfico com as bandas de confiança


ggplot(pulsobd1, aes(x = Peso, y = Valores_Ajustados, color = Fuma)) +
geom_point() +
geom_ribbon(aes(ymin = Lower_CI, ymax = Upper_CI, fill = Fuma), alpha = 0.2) +
labs(x = "Peso", y = "Probabilidade", color = "Fuma", fill = "Fuma") +
scale_color_manual(values = c("#FF0000", "#0000FF"), labels = c("Fumante", "Não Fumante")) +
scale_fill_manual(values = c("#FF0000", "#0000FF"), labels = c("Fumante", "Não Fumante")) +
theme_minimal()

9
0.8

0.6
Probabilidade

Fuma
Fumante
0.4
Não Fumante

0.2

0.0

60 80 100
Peso
Do gráfico acima observa-se que o modelo da probabilidades maiores de pulsação alta para aqueles individuos
que tem habito de fumar.

Interpretação do modelo
Por fim, temos que para cada aumento de 1 kilograma no peso a chance estimada de pulsação alta diminui
em 4,9% ([1-exp(-0,05050)].100%) e que um adulto que não tem o hábito de fumar tem uma chance estimada
de pulsação alta de aproximadamente 70% ([1-exp(-1,19298)].100%) menor do que um adulto com hábito de
fumar.

10

Você também pode gostar