## Exercício Galileo install.packages("UsingR") library(UsingR) data(galileo) galileo #Primeiro modelo: y=a+bx m1 <- lm(h.d~init.h,data=galileo) anova(m1)#O primeiro modelo é mais significativo do que o modelo nulo. summary(m1)#O r^2=0.9264 é super representativo. #Apesar disto, verifica-se como o modelo se ajusta a uma parábola. y=a+bx+cx^2 m2 <- update(m1,.~.+I(init.h^2)) anova(m2)#O acréscimo do termo quadrático é significativo e traz mais explicações ao modelo. anova(m1,m2)#São modelos diferentes e o melhor modelo é o segundo, pois tem menos resíduos (os pontos se afasta menos da parábola) summary(m2)#O r^2=0.9903 é mais representativo do que o modelo1. #Por fim, verifica-se um modelo com um termo cúbico. y=a+bx+cx^2+dx^3 m3 <- update(m2,.~.+I(init.h^3)) anova(m3)#O acréscimo do termo cúbico é significativo e traz mais explicações ao modelo. anova(m2,m3)#São modelos diferentes e o melhor modelo é o terceiro, pois tem menos resíduos (os pontos se afastam menos do modelo). summary(m3)#O r^2=0.9994 é quase perfeito, portanto é mais representativo do que o modelo2. #Galileo estava certo. O melhor modelo neste caso é um que contenha um termo quadrático e também um termo cúbico. ### Exercício Massa de Recém-Nascidos babies <- read.table("babies.txt",header=T,sep="") babies head(babies) tail(babies) str(babies) #Encontrando dados faltantes: sum(babies$bwt=="999") sum(babies$gestation=="999") babies$gestation[babies$gestation==999] <- NA sum(babies$parity=="9") sum(babies$age=="99") babies$age[babies$age==99] <- NA sum(babies$height=="99") babies$height[babies$height==99] <- NA sum(babies$weight=="999") babies$weight[babies$weight==999] <- NA sum(babies$smoke=="9") babies$smoke[babies$smoke==9] <- NA babies$smoke <- as.logical(babies$smoke) babies$parity <- as.factor(babies$parity) #Eliminando linhas com os dados faltantes: babies <- babies[apply(is.na(babies),1,sum)==0,] summary(babies) #Diagnóstico através de gráficos. plot(bwt~gestation,data=babies) plot(bwt~parity,data=babies) plot(bwt~age,data=babies) plot(bwt~height,data=babies) plot(bwt~weight,data=babies) plot(bwt~smoke,data=babies) #Verificando colinearidade entre as variáveis preditoras: summary(lm(gestation~parity,data=babies)) summary(lm(gestation~age,data=babies)) summary(lm(gestation~height,data=babies)) summary(lm(gestation~weight,data=babies)) summary(lm(gestation~smoke,data=babies)) summary(lm(age~parity,data=babies)) summary(lm(age~height,data=babies)) summary(lm(age~weight,data=babies)) summary(lm(age~smoke,data=babies)) summary(lm(height~parity,data=babies)) summary(lm(height~weight,data=babies)) summary(lm(height~smoke,data=babies)) summary(lm(weight~smoke,data=babies)) summary(lm(weight~parity,data=babies)) #Não há colinearidade entre as variáveis preditoras. Vou testar todas elas nos modelos. #Testando os modelos: #O critério de escolha dos modelos foi através da avaliação do p de cada parâmetro(variável preditora). Sendo considerado #significativo p>=0.05 head(babies) lm1 <- lm(bwt~gestation,data=babies) anova(lm1) #A variável gestation é significativa para o modelo. summary(lm1) #r^2=0.1661 lm2 <- lm(bwt~gestation+parity,data=babies) anova(lm2) #A variável parity é significativa para o modelo. anova(lm1,lm2) #Os modelos são diferentes e o segundo tem menos resíduos. Portanto escolhi o segundo. summary(lm2) #o r^2=0.172 lm3 <- lm(bwt~gestation+parity+age,data=babies) anova(lm3) #A variável age não é significativa para o modelo. anova(lm2,lm3) #Os modelos são iguais. Portanto, escolhi o mais simples(lm2). lm4 <- lm(bwt~gestation+parity+height,data=babies) anova(lm4) #A variavél height é significativa para o modelo. anova(lm2,lm4)#Os modelos são diferentes e o quarto tem menos resíduos. Portanto escolhi o quarto. summary(lm4) #O r^2=0.2039 lm5 <- lm(bwt~gestation+parity+height+weight,data=babies) anova(lm5) #A variável weight é significativa para o modelo. anova(lm4,lm5) #Os modelos são diferentes e o quinto tem menos resíduos. Portanto escolhi o quinto. summary(lm5) #O r^2=0.2085 lm6 <- lm(bwt~gestation+parity+height+weight+smoke,data=babies) anova(lm6) #A variável smoke é significativa para o modelo. anova(lm5,lm6) #Os modelos são diferentes e o sexto tem menos resíduos. Portanto escolhi o sexto. summary(lm6) #O r^2=0.2579 #Vou começar a testar as interações: lm7 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:parity,data=babies) anova(lm7) #A interação gestation:parity não é significativa para o modelo. anova(lm6,lm7) #Os modelos são iguais. Portanto escolhi o mais simples(lm6). lm8 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:age,data=babies) anova(lm8) #A interação gestation:age não é significativa para o modelo. anova(lm6,lm8) #Os modelos são iguais. Portanto escolhi o mais simples(lm6). lm9 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:height,data=babies) anova(lm9) #A interação gestation:height não é significativa para o modelo. anova(lm6,lm9) #Os modelos são iguais. Portanto escolhi o mais simples(lm6). lm10 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:weight,data=babies) anova(lm10) #A interação gestation:weight não é significativa (p=0.09) para o modelo. anova(lm6,lm10) #Os modelos são iguais. Portanto escolhi o mais simples (lm6). lm11 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke,data=babies) anova(lm11) #A interação gestation:smoke é significativa para o modelo. anova(lm6,lm11) #Os modelos são diferentes e o 11 tem menos resíduos. Portanto escolhi o 11. summary(lm11) #O r^2=0.2656 lm12 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+parity:age,data=babies) anova(lm12) #A interação parity:age não é significativa para o modelo. anova(lm11,lm12) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm13 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+parity:height,data=babies) anova(lm13) #A interação parity:height não é significativa(p=0.06) para o modelo. anova(lm11,lm13) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm14 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+parity:weight,data=babies) anova(lm14) #A interação parity:weight não é significativa para o modelo. anova(lm11,lm14) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm15 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+parity:smoke,data=babies) anova(lm15) #A interação parity:smoke não é significativa para o modelo. anova(lm11,lm15) #Os modelos são iguais. Portanto escolhi o mais simples(lm11). lm16 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+age:height,data=babies) anova(lm16) #A interação age:height não é significativa para o modelo. anova(lm11,lm16) #Os modelos são iguais. portanto escolhi o mais simples (lm11). lm17 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+age:weight,data=babies) anova(lm17) #A interação age:weight não é significativa para o modelo. anova(lm11,lm17) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm18 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+age:smoke,data=babies) anova(lm18) #A interação age:smoke não é significativa para o modelo. anova(lm11,lm18) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm19 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+height:weight,data=babies) anova(lm19) #A interação height:weight não é significativa para o modelo. anova(lm11,lm19) #os modelos são iguais. Portanto escolhi o mais simples (lm11). lm20 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+height:smoke,data=babies) anova(lm20) #A interação height:smoke não é significativa para o modelo. anova(lm11,lm20) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). lm21 <- lm(bwt~gestation+parity+height+weight+smoke+gestation:smoke+weight:smoke,data=babies) anova(lm21) #A interação weight:smoke não é significativa para o modelo. anova(lm11,lm21) #Os modelos são iguais. Portanto escolhi o mais simples (lm11). #Fiquei um pouco em dúvida sobre usar a variável weight, pois o anova foi significativo mas o summary não . Vou testar este modelo com outro sem ele: lm23 <- lm(bwt~gestation+parity+height+smoke+gestation:smoke,data=babies) anova(lm23) #Todos os parâmetros são significativos anova(lm11,lm23) #Vou considerar que não foi significativo (p=0.06), então os modelos são iguais e vou usar o modelo mais simples (lm23), sem a variável weight. #Portanto, o modelo que mais explica os dados foi: lm23 <- lm(bwt~gestation+parity+height+smoke+gestation:smoke,data=babies)