class: center, middle, inverse, title-slide # 👨🏫 Introdução aos Modelos Lineares ##
🔗
Aula Modelos
### Steven Dutt Ross ### UNIRIO --- <style type="text/css"> body { background-color: #f7f68f; color: #1a5b78; } .huge-text { font-family: 'Montserrat', sans-serif; font-size: 600%; font-weight: bold; color: var(--monument); } .larger { font-size: 400% } .pull-left { float: left; width: 47%; } .pull-right { float: right; width: 47%; } .pull-right ~ * { clear: both; } </style> ### Como ajustar uma reta que a esses dados? ![](index_files/figure-html/unnamed-chunk-2-1.png)<!-- --> --- ### Como ajustar uma reta que a esses dados? ![](index_files/figure-html/unnamed-chunk-3-1.png)<!-- --> --- ## Introdução aos Modelos Lineares ### Representação matemática de um fenômeno ### É utilizado para descrever relações entre variáveis <br> ### Modelos Determinísticos ### Modelos Probabilísticos (Estatísticos) --- ## Introdução aos Modelos Lineares ### Modelo Estatístico Extração de sinal na presença de ruídos - a transmissão e recepção de informações pode ser decomposta em sinal e ruído <br> #### Sinal - componente determinístico, não aleatório <br> #### Ruído - componente aleatório --- ## Modelo Estatístico Resume as principais características de um conjunto de dados, substituindo seus valores individuais por funções matemáticas. <br> <br> Representa a informação através de um número restrito de quantidades/variáveis (parâmetros). --- ## Modelo Estatístico ### A interpretação/resumo das informações de um conjunto de dados demanda a formulação e identificação de padrões que possam representar as informações. ### Busca-se evidenciar suas principais características, utilizando um número restrito de variáveis/quantidades. --- ## Modelo Determinístico ### Representa relações exatas Exemplo: <br> – Relação entre força, massa e aceleração <br> – F = m·a <br> <br> <br> – Relação entre velocidade, distância e tempo <br> – V = d/t <br> --- ## Modelo Estatístico ### Considera dois componentes #### O componente determinístico #### O componente aleatório Exemplo: – O volume de vendas é, em geral, 10 vezes o que se gasta com propaganda...*exatamente?* – Y = 10X + Erro – O erro aleatório representa a variação nas vendas que não pode ser explicada pela propaganda --- ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](index_files/figure-html/unnamed-chunk-4-1.png)<!-- --> --- # Modelos de Regressão ### Qual é a relação entre as diferentes variáveis? O Km/l como uma função do HP. `$$Km/l_i = f(HP_i)+\epsilon$$` Em uma relação linear, temos: `$$Km/l_i = \beta_0+\beta_1*Km/l_i+\epsilon$$` --- # Modelos de Regressão ### Qual é a relação entre as diferentes variáveis? ### Variável reposta: uma variável numérica (aleatória), cujo comportamento (tendência) deseja-se analisar ou prever ### Variáveis explicativas ou independentes: uma ou mais variáveis numéricas ou categóricas não estocásticas que se supõe sejam relacionadas à variável resposta. `$$Y_i = \beta_0+\beta_1*X_i+\epsilon$$` --- ## Regressão linear: objetivos * Predizer observações futuras * Avaliar o efeito as relações da variável independente (x) sobre uma variável dependente (y) * Descrever a estrutura dos dados --- ## Modelo de Regressão Linear `\(Y = \beta_0 + \beta_1 x + \epsilon\)` Onde: Y = é o valor a ser predito `\(\beta_0\)` = é o intercepto (valor quando x = 0) `\(\beta_1\)` = é a inclinação da reta de regressão x = é o valor da variável preditora (preditor linear) `\(\epsilon\)` é o erro --- ## Como ajustar essa reta aos pontos? ![](index_files/figure-html/unnamed-chunk-5-1.png)<!-- --> --- ![](index_files/figure-html/unnamed-chunk-6-1.png)<!-- --> --- ![](index_files/figure-html/unnamed-chunk-7-1.png)<!-- --> --- ![](index_files/figure-html/unnamed-chunk-8-1.png)<!-- --> --- ![](index_files/figure-html/unnamed-chunk-9-1.png)<!-- --> --- class: center, middle, inverse # QUAL A MELHOR RETA? --- ## Como podemos ajustar a reta (distância mínima ao quadrado)? ![](index_files/figure-html/unnamed-chunk-10-1.png)<!-- --> --- ## Método dos Mínimos Quadrados ```r y<-c(10,12,13,15,16,18,19,20,21,22) x<-c(1,2,3,4,5,6,7,8,9,10) mod<-lm(y~x) mod ``` ``` ## ## Call: ## lm(formula = y ~ x) ## ## Coefficients: ## (Intercept) x ## 9.267 1.333 ``` ```r Yhat <- predict(mod) Erro <- c(y - Yhat) # equivalente a residuals(mod) ``` --- Para esse conjunto de dados, as estimativas do `\(\beta_0\)` e do `\(\beta_1\)` desse modelo linear simples são 9.27 e 1.33. Logo a equação fica: `\(\hat{Y}\)` = 9.27 + 1.33*Xi Por exemplo, para dado valor de X, é possível obter um valor para Y <br> X = 1 -> `\(\hat{Y}\)` = 9,27+1,33*(1) = 10,6 (como y = 10 o erro é -0,6) <br> <br> X = 5 -> `\(\hat{Y}\)` = 9,27+1,33*(5) = 15,932 (como y = 16 o erro é 0,068) --- ![](index_files/figure-html/unnamed-chunk-12-1.png)<!-- --> --- ## Tipos de relaciomentos ```r y<-c(10,11,12,13,14,15,16,17,18,19) x<-c(1,2,3,4,5,6,7,8,9,10) y2<-c(10,12,13,15,16,18,19,20,21,22) x2<-c(1,3,5,6,8,9,6,13,14,20) y3<-c(9,12,13,15,16,18,19,19,18,15) x3<-c(1,3,5,6,8,9,6,13,14,20) y4<-c(10,12,13,10,12,13,14,10,11,12) x4<-c(1,3,5,6,8,9,6,13,14,20) par(mfrow=c(2,2)) plot(x,y) abline(lm(y~x),col="red") plot(x2,y2) abline(lm(y2~x2),col="blue") plot(x3,y3) abline(lm(y3~x3),col="darkgreen") plot(x4,y4) abline(lm(y4~x4),col="gray") ``` --- ![](index_files/figure-html/unnamed-chunk-14-1.png)<!-- --> --- ## Métodos dos Mínimos Quadrados ```r anova(mod) ``` ``` ## Analysis of Variance Table ## ## Response: y ## Df Sum Sq Mean Sq F value Pr(>F) ## x 1 146.667 146.667 676.92 5.113e-09 *** ## Residuals 8 1.733 0.217 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` --- ## Métodos dos Mínimos Quadrados ```r summary(mod) ``` ``` ## ## Call: ## lm(formula = y ~ x) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.60000 -0.26667 0.06667 0.31667 0.73333 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 9.26667 0.31798 29.14 2.08e-09 *** ## x 1.33333 0.05125 26.02 5.11e-09 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.4655 on 8 degrees of freedom ## Multiple R-squared: 0.9883, Adjusted R-squared: 0.9869 ## F-statistic: 676.9 on 1 and 8 DF, p-value: 5.113e-09 ``` --- ```r fit <- lm(Kmporlitro ~ HP, data = CARROS) # Fit the model summary(fit) # Report the results ``` ``` ## ## Call: ## lm(formula = Kmporlitro ~ HP, data = CARROS) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.7121 -2.1122 -0.8854 1.5819 8.2360 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 30.09886 1.63392 18.421 < 2e-16 *** ## HP -0.06823 0.01012 -6.742 1.79e-07 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 3.863 on 30 degrees of freedom ## Multiple R-squared: 0.6024, Adjusted R-squared: 0.5892 ## F-statistic: 45.46 on 1 and 30 DF, p-value: 1.788e-07 ``` --- ```r CARROS$predicted <- predict(fit) # Save the predicted values CARROS$residuals <- residuals(fit) # Save the residual values CARROS %>% select(Kmporlitro, predicted, residuals) %>% head() ``` ``` ## Kmporlitro predicted residuals ## Mazda RX4 21.0 22.59375 -1.5937500 ## Mazda RX4 Wag 21.0 22.59375 -1.5937500 ## Datsun 710 22.8 23.75363 -0.9536307 ## Hornet 4 Drive 21.4 22.59375 -1.1937500 ## Hornet Sportabout 18.7 18.15891 0.5410881 ## Valiant 18.1 22.93489 -4.8348913 ``` --- ```r confint(fit, level=0.95) # intervalo de confianca dos parametros do modelo ``` ``` ## 2.5 % 97.5 % ## (Intercept) 26.76194879 33.4357723 ## HP -0.08889465 -0.0475619 ``` ```r fitted(fit) # valores ajustados ``` ``` ## Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive ## 22.593750 22.593750 23.753631 22.593750 ## Hornet Sportabout Valiant Duster 360 Merc 240D ## 18.158912 22.934891 13.382932 25.868707 ## Merc 230 Merc 280 Merc 280C Merc 450SE ## 23.617174 21.706782 21.706782 17.817770 ## Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental ## 17.817770 17.817770 16.112064 15.429781 ## Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla ## 14.406357 25.595794 26.550990 25.664022 ## Toyota Corona Dodge Challenger AMC Javelin Camaro Z28 ## 23.480718 19.864619 19.864619 13.382932 ## Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa ## 18.158912 25.595794 23.890087 22.389065 ## Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E ## 12.086595 18.158912 7.242387 22.661978 ``` --- ## Modelo de regressão: exemplo 1 ```r y = c(110, 120, 90, 70, 50, 80, 40, 40, 50, 30) xx = 1:10 modelo = lm(y ~ xx) modelo ``` ``` ## ## Call: ## lm(formula = y ~ xx) ## ## Coefficients: ## (Intercept) xx ## 118.667 -9.212 ``` --- ## Modelo de regressão: exemplo 1 ```r plot(y ~ xx) abline(modelo, col=2, lty=2, lwd=2) legend("top", legend=c("valores observados", "valores ajustados"), lty=c(NA,2), col=c(1,2), lwd=1:2, bty="n", pch=c(1,NA)) ``` ![](index_files/figure-html/Reg0-1.png)<!-- --> --- ## Modelo de regressão: exemplo 2 ```r renda = c(1750, 1680, 1700, 1710, 1690, 1650, 1650, 1600, 1800, 1860) anosdeestudo = c(8, 7, 6, 6, 6, 5, 5, 5, 8, 9) modelo2 = lm(renda ~ anosdeestudo) ``` --- ```r plot(renda ~ anosdeestudo) abline(modelo2, col=2, lty=2, lwd=2) legend("topleft", legend=c("valores observados", "valores ajustados"), lty=c(NA,2), col=c(1,2), lwd=1:2, bty="n", pch=c(1,NA)) ``` ![](index_files/figure-html/Reg21-1.png)<!-- --> ```r modelo2 ``` ``` ## ## Call: ## lm(formula = renda ~ anosdeestudo) ## ## Coefficients: ## (Intercept) anosdeestudo ## 1387.51 49.46 ``` --- ## Modelo de regressão: exemplo 3 ```r data("mtcars") modelo3 = lm(mpg ~ wt, data=mtcars) modelo3 ``` ``` ## ## Call: ## lm(formula = mpg ~ wt, data = mtcars) ## ## Coefficients: ## (Intercept) wt ## 37.285 -5.344 ``` --- ```r plot(mtcars$mpg ~ mtcars$wt) abline(modelo3, col=2, lty=2, lwd=2) legend("topright", legend=c("valores observados", "valores ajustados"), lty=c(NA,2), col=c(1,2), lwd=1:2, bty="n", pch=c(1,NA)) ``` ![](index_files/figure-html/Reg31-1.png)<!-- --> --- ## Modelo de regressão: exemplo 4 ```r modelo4 = lm(mpg ~ wt+cyl+disp+hp, data=mtcars) modelo4 ``` ``` ## ## Call: ## lm(formula = mpg ~ wt + cyl + disp + hp, data = mtcars) ## ## Coefficients: ## (Intercept) wt cyl disp hp ## 40.82854 -3.85390 -1.29332 0.01160 -0.02054 ``` --- ```r par(mfrow = c(2, 2)) plot(mtcars$mpg ~ mtcars$wt) plot(mtcars$mpg ~ mtcars$cyl) plot(mtcars$mpg ~ mtcars$disp) plot(mtcars$mpg ~ mtcars$hp) ``` ![](index_files/figure-html/Reg5-1.png)<!-- --> --- class: middle .pull-left[ .huge-text[check point] ] .pull-right[ .larger[ até aqui, tudo ok? ] ] --- class: inverse, center, middle #Visualizando o Modelo --- ```r ggplot(CARROS, aes(x = HP, y = Kmporlitro)) + geom_point() + geom_smooth(method = "lm", se = FALSE, color = "red") + # Plot regression slope theme_bw() # Add theme for cleaner look ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](index_files/figure-html/unnamed-chunk-21-1.png)<!-- --> --- ```r ggplot(CARROS, aes(x = HP, y = Kmporlitro)) + geom_smooth(method = "lm", se = FALSE, color = "red") + # Plot regression slope geom_segment(aes(xend = HP, yend = predicted), alpha = .2) + # alpha to fade lines geom_point() + geom_point(aes(y = predicted), shape = 1) + theme_bw() # Add theme for cleaner look ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](index_files/figure-html/unnamed-chunk-22-1.png)<!-- --> --- ```r ggplot(CARROS, aes(x = HP, y = Kmporlitro)) + geom_smooth(method = "lm", se = FALSE, color = "lightgrey") + geom_segment(aes(xend = HP, yend = predicted), alpha = .2) + geom_point(aes(color = abs(residuals), size = abs(residuals))) + # size also mapped scale_color_continuous(low = "black", high = "red") + guides(color = FALSE, size = FALSE) + # Size legend also removed geom_point(aes(y = predicted), shape = 1) + theme_bw() ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](index_files/figure-html/unnamed-chunk-23-1.png)<!-- --> --- class: inverse, center, middle # Regressão Múltipla --- # Regressão Múltipla Queremos ajustar o modelo de minimos quadrados (MQO) com mais de uma variável explicativa. Por exemplo: `$$KmporLitro = \beta_0+\beta_1*HP+\beta_2*Peso+\epsilon$$` `$$KmporLitro = \beta_0+\beta_1*HP+\beta_2*Peso+\beta_3*TipodeMarcha +\beta_4 Tipodecombustivel+\epsilon$$` O modelo 1 tem duas variáveis explicativas. O modelo 2 tem quatro variáveis explicativas. Três perguntas: 1) como fazer esses modelos? 2) qual deles tem o melhor ajuste? 3) como interpretar o coeficiente beta? --- ```r ### Regressao linear Multipla modelo1 = lm(Kmporlitro ~ HP + Peso , data=CARROS) modelo2 = lm(Kmporlitro ~ HP + Peso + TipodeMarcha, data=CARROS) modelo_geral = lm(Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel, data=CARROS) summary(modelo1) summary(modelo2) summary(modelo_geral) ``` --- ```r ### Regressao linear Multipla modelo1 = lm(Kmporlitro ~ HP + Peso , data=CARROS) modelo2 = lm(Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel, data=CARROS) modelo_geral = lm(Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel + NumdeValvulas + NumdeMarchas + RPM + Cilindros, data=CARROS) summary(modelo1) ``` ``` ## ## Call: ## lm(formula = Kmporlitro ~ HP + Peso, data = CARROS) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.941 -1.600 -0.182 1.050 5.854 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 37.22727 1.59879 23.285 < 2e-16 *** ## HP -0.03177 0.00903 -3.519 0.00145 ** ## Peso -3.87783 0.63273 -6.129 1.12e-06 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.593 on 29 degrees of freedom ## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8148 ## F-statistic: 69.21 on 2 and 29 DF, p-value: 9.109e-12 ``` ```r #summary(modelo2) #summary(modelo_geral) ``` --- # R2 e R2 ajustado ```r summary(modelo1)$r.squared ``` ``` ## [1] 0.8267855 ``` ```r summary(modelo2)$r.squared ``` ``` ## [1] 0.8499499 ``` ```r summary(modelo_geral)$r.squared ``` ``` ## [1] 0.8634989 ``` ```r summary(modelo1)$adj.r.squared ``` ``` ## [1] 0.8148396 ``` ```r summary(modelo2)$adj.r.squared ``` ``` ## [1] 0.8277202 ``` ```r summary(modelo_geral)$adj.r.squared ``` ``` ## [1] 0.8160203 ``` --- # R2 e Akaike information criterion (AIC) ```r summary(modelo1)$adj.r.squared ``` ``` ## [1] 0.8148396 ``` ```r summary(modelo2)$adj.r.squared ``` ``` ## [1] 0.8277202 ``` ```r summary(modelo_geral)$adj.r.squared ``` ``` ## [1] 0.8160203 ``` ```r AIC(modelo1) ``` ``` ## [1] 156.6523 ``` ```r AIC(modelo2) ``` ``` ## [1] 156.0584 ``` ```r AIC(modelo_geral) ``` ``` ## [1] 161.03 ``` --- ### Seleção de modelo (variáveis) via STEPWISE ```r library(MASS) step <- stepAIC(modelo_geral, direction="both") # quanto menor o AIC mais parcimonioso o modelo ``` ``` ## Start: AIC=68.22 ## Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel + NumdeValvulas + ## NumdeMarchas + RPM + Cilindros ## ## Df Sum of Sq RSS AIC ## - Cilindros 1 0.019 153.73 66.222 ## - Tipodecombustivel 1 0.053 153.76 66.229 ## - NumdeMarchas 1 2.122 155.83 66.657 ## - HP 1 3.610 157.32 66.961 ## - RPM 1 5.822 159.53 67.408 ## - NumdeValvulas 1 5.976 159.68 67.439 ## <none> 153.71 68.218 ## - TipodeMarcha 1 12.047 165.75 68.633 ## - Peso 1 35.865 189.57 72.929 ## ## Step: AIC=66.22 ## Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel + NumdeValvulas + ## NumdeMarchas + RPM ## ## Df Sum of Sq RSS AIC ## - Tipodecombustivel 1 0.094 153.82 64.241 ## - NumdeMarchas 1 2.665 156.39 64.772 ## - HP 1 4.636 158.36 65.173 ## - NumdeValvulas 1 5.997 159.72 65.447 ## - RPM 1 7.065 160.79 65.660 ## <none> 153.73 66.222 ## - TipodeMarcha 1 13.907 167.63 66.993 ## + Cilindros 1 0.019 153.71 68.218 ## - Peso 1 37.519 191.25 71.210 ## ## Step: AIC=64.24 ## Kmporlitro ~ HP + Peso + TipodeMarcha + NumdeValvulas + NumdeMarchas + ## RPM ## ## Df Sum of Sq RSS AIC ## - NumdeMarchas 1 3.019 156.84 62.864 ## - HP 1 4.544 158.36 63.173 ## - NumdeValvulas 1 6.075 159.90 63.481 ## <none> 153.82 64.241 ## - TipodeMarcha 1 13.815 167.63 64.994 ## - RPM 1 14.025 167.84 65.034 ## + Tipodecombustivel 1 0.094 153.73 66.222 ## + Cilindros 1 0.060 153.76 66.229 ## - Peso 1 44.840 198.66 70.428 ## ## Step: AIC=62.86 ## Kmporlitro ~ HP + Peso + TipodeMarcha + NumdeValvulas + RPM ## ## Df Sum of Sq RSS AIC ## - NumdeValvulas 1 3.227 160.07 61.515 ## - HP 1 4.411 161.25 61.751 ## <none> 156.84 62.864 ## + NumdeMarchas 1 3.019 153.82 64.241 ## - RPM 1 18.086 174.93 64.356 ## + Cilindros 1 0.929 155.91 64.673 ## + Tipodecombustivel 1 0.448 156.39 64.772 ## - TipodeMarcha 1 29.194 186.03 66.326 ## - Peso 1 66.734 223.57 72.208 ## ## Step: AIC=61.52 ## Kmporlitro ~ HP + Peso + TipodeMarcha + RPM ## ## Df Sum of Sq RSS AIC ## - HP 1 9.219 169.29 61.307 ## <none> 160.07 61.515 ## + NumdeValvulas 1 3.227 156.84 62.864 ## - RPM 1 20.225 180.29 63.323 ## + Cilindros 1 0.249 159.82 63.465 ## + Tipodecombustivel 1 0.249 159.82 63.466 ## + NumdeMarchas 1 0.171 159.90 63.481 ## - TipodeMarcha 1 25.993 186.06 64.331 ## - Peso 1 78.494 238.56 72.284 ## ## Step: AIC=61.31 ## Kmporlitro ~ Peso + TipodeMarcha + RPM ## ## Df Sum of Sq RSS AIC ## <none> 169.29 61.307 ## + HP 1 9.219 160.07 61.515 ## + NumdeValvulas 1 8.036 161.25 61.751 ## + Cilindros 1 1.501 167.78 63.022 ## + NumdeMarchas 1 0.123 169.16 63.284 ## + Tipodecombustivel 1 0.000 169.29 63.307 ## - TipodeMarcha 1 26.178 195.46 63.908 ## - RPM 1 109.034 278.32 75.217 ## - Peso 1 183.347 352.63 82.790 ``` ```r step$anova # display results ``` ``` ## Stepwise Model Path ## Analysis of Deviance Table ## ## Initial Model: ## Kmporlitro ~ HP + Peso + TipodeMarcha + Tipodecombustivel + NumdeValvulas + ## NumdeMarchas + RPM + Cilindros ## ## Final Model: ## Kmporlitro ~ Peso + TipodeMarcha + RPM ## ## ## Step Df Deviance Resid. Df Resid. Dev AIC ## 1 23 153.7067 68.21792 ## 2 - Cilindros 1 0.01928577 24 153.7259 66.22194 ## 3 - Tipodecombustivel 1 0.09391889 25 153.8199 64.24148 ## 4 - NumdeMarchas 1 3.01940929 26 156.8393 62.86354 ## 5 - NumdeValvulas 1 3.22719028 27 160.0665 61.51530 ## 6 - HP 1 9.21946935 28 169.2859 61.30730 ``` --- # ANOVA ```r m1 <- aov(CARROS$Kmporlitro ~ as.factor(CARROS$NumdeValvulas)) summary(m1) layout(matrix(c(1,2,3,4),2,2)) # optional layout plot(m1) # diagnostic plots TukeyHSD(m1) plot(TukeyHSD(m1)) # where fit comes from aov() ``` --- # ANOVA ```r m1 <- aov(CARROS$Kmporlitro ~ as.factor(CARROS$Cilindros) + CARROS$TipodeMarcha) summary(m1) layout(matrix(c(1,2,3,4),2,2)) # optional layout plot(m1) # diagnostic plots TukeyHSD(m1) plot(TukeyHSD(m1)) # where fit comes from aov() ``` --- class: center, middle [Continuação](https://dataunirio.github.io/Regressao_Diagnostico/#1) <!-- background-position: 50% 50% class: center, top, inverse class: center, middle, inverse class: center, bottom, inverse -->