Aula 4.29

Regressão Linear - Teste de variáveis Quantitativas. Tanto as variáveis explicativas quanto as variáveis resposta são quantitativas

Objetivo: Realizar teste de Regressão linear para verificar a associação de um conjunto de dados em que as variáveis explicativas e resposta são quantitativas.

Este material está disponível em: http://rpubs.com/leonardoreffatti.

#Carregar o conjunto de Dados.
setwd("C:/R/Curso do R/MODULO_4.3")
dados<-read.table("pratica1.txt", header = TRUE)
attach(dados)
summary(dados)
##        UA              Ambiente       Área          Riqueza     
##  Min.   : 1.00   primário  :22   Min.   : 40.0   Min.   :14.00  
##  1st Qu.:13.25   secundário:28   1st Qu.: 79.5   1st Qu.:23.00  
##  Median :25.50                   Median :102.5   Median :29.50  
##  Mean   :25.50                   Mean   :102.5   Mean   :29.22  
##  3rd Qu.:37.75                   3rd Qu.:127.8   3rd Qu.:35.00  
##  Max.   :50.00                   Max.   :167.0   Max.   :48.00  
##    Abund_sp1   
##  Min.   :0.00  
##  1st Qu.:1.00  
##  Median :2.00  
##  Mean   :2.16  
##  3rd Qu.:3.00  
##  Max.   :8.00
str(dados)
## 'data.frame':    50 obs. of  5 variables:
##  $ UA       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Ambiente : Factor w/ 2 levels "primário","secundário": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Área     : int  101 115 143 92 51 89 128 149 127 108 ...
##  $ Riqueza  : int  35 31 39 25 22 35 43 48 35 38 ...
##  $ Abund_sp1: int  3 3 1 6 1 0 3 5 0 2 ...
#verificar se existre um padrão de relação entre área e riqueza
plot(Riqueza~Área, pch=16)

#lm(), linear model
resultado<-lm(Riqueza~Área)

#Verificar Pressupostos
#1 - Pressuposto de Normalidade dos resíduos
qqnorm(resultado$residuals)
qqline(resultado$residuals, lty=2, col="red")

#2 - Pressuposto da Homocedasticidade, esperando que os resíduos variem em torno da reta da regressão de maneira homogenea
#inspeção visual dos resíduos
plot(resultado$fitted.values, resultado$residuals)
#fitted.values, valores ajustados na reta
abline(h=0, lty=2)

#Verificar o Resultado
summary(resultado)
## 
## Call:
## lm(formula = Riqueza ~ Área)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.5419  -3.6136  -0.0566   3.9721  12.3206 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.99044    2.63204   5.695 7.30e-07 ***
## Área         0.13885    0.02419   5.739 6.25e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.249 on 48 degrees of freedom
## Multiple R-squared:  0.407,  Adjusted R-squared:  0.3946 
## F-statistic: 32.94 on 1 and 48 DF,  p-value: 6.253e-07
#Riqueza = 14.99 + 0.13885*Área

#Tanto o Intercepto quanto a Área tiveram efeitos significativos.

#Intercepto = A riqueza que eu vou encontrar quando a Área for 0 -> 14.99 espécies.

#Parâmetro B1 (Área) = Esse define a inclinação da reta, 0.13, no exemplo, a cada km2 a mais de área a riqueza em média aumenta em 0.138 espécies.

#Parâmetro R2 (coef. de determinação) = Adjusted R-squared:  0.3946
#R2 = Proporção da variação na variável resposta que foi explicada pela variável explicativa.
#No exemplo, o quanto da variação de riqueza pode ser explicado pela área dos fragmentos.
#R2 = 1, quando todos os pontos caem em cima da reta de regressão
#39% da variação da riqueza de espécies foi explicada pela área dos fragmentos.

#Ainda temos a ANOVA da Regressão
#F-statistic: 32.94 on 1 and 48 DF,  p-value: 6.253e-07
#Testa a validade de toda a equação

#Finalizando, com gráfico
plot(Riqueza~Área, pch=16)
abline(resultado, lty=2, col="red")

#abline com a linha do objeto resultado criado, a linha representa a equação

resultado.p<-lm(Riqueza[Ambiente=="primário"]~Área[Ambiente=="primário"])
resultado.s<-lm(Riqueza[Ambiente=="secundário"]~Área[Ambiente=="secundário"])

#Verificar Pressupostos, mata primária
#1 - Pressuposto de Normalidade dos resíduos
qqnorm(resultado.p$residuals)
qqline(resultado.p$residuals, lty=2)

#2 - Pressuposto da Homocedasticidade, esperando que os resíduos variem em torno da reta da regressão de maneira homogenea
#através de inspeção visual dos resíduos
plot(resultado.p$fitted.values, resultado.p$residuals)
#fitted.values, valores ajustados na reta
abline(h=0, lty=2)

#Verificar Pressupostos, mata secundária
#1 - Pressuposto de Normalidade dos resíduos
qqnorm(resultado.s$residuals)
qqline(resultado.s$residuals, lty=2)

#2 - Pressuposto da Homocedasticidade, esperando que os resíduos variem em torno da reta da regressão de maneira homogenea
#através de inspeção visual dos resíduos
plot(resultado.s$fitted.values, resultado.s$residuals)
#fitted.values, valores ajustados na reta
abline(h=0, lty=2)

summary(resultado.p)
## 
## Call:
## lm(formula = Riqueza[Ambiente == "primário"] ~ Área[Ambiente == 
##     "primário"])
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -6.640 -3.639 -1.092  3.974 11.617 
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  11.61574    3.47606   3.342  0.00325 ** 
## Área[Ambiente == "primário"]  0.19612    0.03219   6.092 5.92e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.108 on 20 degrees of freedom
## Multiple R-squared:  0.6498, Adjusted R-squared:  0.6323 
## F-statistic: 37.12 on 1 and 20 DF,  p-value: 5.916e-06
summary(resultado.s)
## 
## Call:
## lm(formula = Riqueza[Ambiente == "secundário"] ~ Área[Ambiente == 
##     "secundário"])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -14.2452  -5.0998   0.7625   4.1806  11.4737 
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                    16.59948    3.28663   5.051 2.94e-05 ***
## Área[Ambiente == "secundário"]  0.10398    0.03003   3.462  0.00187 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.121 on 26 degrees of freedom
## Multiple R-squared:  0.3155, Adjusted R-squared:  0.2892 
## F-statistic: 11.99 on 1 and 26 DF,  p-value: 0.001867
plot(Riqueza~Área, las=1, pch=16, col=c("green4", "red")[Ambiente])
abline(resultado.p, lty=2, col="green4")
abline(resultado.s, lty=2, col="red")

legend("topleft", pch=16, col=c("green4", "red"), legend=levels(Ambiente))

#Anotações e Fórmulas nos Gráficos
#função text(), para escrever dentro do gráfico
#a função text utiliza as coordenadas x e y
text(85, 47, "y=11.6+0.19x", col="green4")
text(85, 43, "y=16.6+0.10x", col="red")

#se quiser notações mais complexas, utilizar função expression()
#veja as regras em ?plotmath()
#exemplo
plot(Riqueza~Área, las=1, pch=16, col=c("green4", "red")[Ambiente])
text(85, 45, expression(X^2))
text(85, 42, expression(X[b]))

#Para escrever nas margens
mtext(expression(X^2), side=3)