Estou fornecendo códigos em R apenas um exemplo, você pode ver respostas apenas se não tiver experiência com R. Só quero fazer alguns casos com exemplos.
correlação vs regressão
Correlação e regressão linear simples com um Y e um X:
O modelo:
y = a + betaX + error (residual)
Digamos que temos apenas duas variáveis:
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
plot(X,Y, pch = 19)
Em um diagrama de dispersão, quanto mais próximos os pontos estiverem de uma linha reta, mais forte será a relação linear entre duas variáveis.
Vamos ver a correlação linear.
cor(X,Y)
0.7828747
Agora regressão linear e valores de R extraídos ao quadrado .
reg1 <- lm(Y~X)
summary(reg1)$r.squared
0.6128929
Assim, os coeficientes do modelo são:
reg1$coefficients
(Intercept) X
2.2535971 0.7877698
A beta para X é 0,7877698. Assim, nosso modelo será:
Y = 2.2535971 + 0.7877698 * X
A raiz quadrada do valor do quadrado R na regressão é igual r
à regressão linear.
sqrt(summary(reg1)$r.squared)
[1] 0.7828747
Vamos ver o efeito de escala na inclinação e na correlação de regressão usando o mesmo exemplo acima e multiplicar X
com uma palavra constante 12
.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X12 <- X*12
cor(X12,Y)
[1] 0.7828747
A correlação permanece inalterada, assim como R ao quadrado .
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
Você pode ver os coeficientes de regressão alterados, mas não o quadrado R. Agora, outro experimento permite adicionar uma constante X
e ver o que isso terá efeito.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X5 <- X+5
cor(X5,Y)
[1] 0.7828747
A correlação ainda não é alterada após a adição 5
. Vamos ver como isso terá efeito nos coeficientes de regressão.
reg5 <- lm(Y~X5)
summary(reg5)$r.squared
[1] 0.6128929
reg5$coefficients
(Intercept) X5
-4.1428571 0.9357143
O quadrado R e a correlação não têm efeito de escala, mas interceptação e inclinação. Portanto, a inclinação não é igual ao coeficiente de correlação (a menos que as variáveis sejam padronizadas com média 0 e variância 1).
o que é ANOVA e por que fazemos ANOVA?
ANOVA é uma técnica em que comparamos variações para tomar decisões. A variável de resposta (chamada Y
) é variável quantitativa, enquanto X
pode ser quantitativa ou qualitativa (fator com diferentes níveis). Ambos X
e Y
podem ser um ou mais em número. Normalmente dizemos ANOVA para variáveis qualitativas, ANOVA em contexto de regressão é menos discutida. Pode ser que isso seja causa de sua confusão. A hipótese nula na variável qualitativa (fatores, por exemplo, grupos) é que a média dos grupos não é diferente / igual, enquanto na análise de regressão testamos se a inclinação da linha é significativamente diferente de 0.
Vamos ver um exemplo em que podemos fazer análise de regressão e ANOVA de fator qualitativo, pois X e Y são quantitativos, mas podemos tratar X como fator.
X1 <- rep(1:5, each = 5)
Y1 <- c(12,14,18,12,14, 21,22,23,24,18, 25,23,20,25,26, 29,29,28,30,25, 29,30,32,28,27)
myd <- data.frame (X1,Y1)
Os dados são os seguintes.
X1 Y1
1 1 12
2 1 14
3 1 18
4 1 12
5 1 14
6 2 21
7 2 22
8 2 23
9 2 24
10 2 18
11 3 25
12 3 23
13 3 20
14 3 25
15 3 26
16 4 29
17 4 29
18 4 28
19 4 30
20 4 25
21 5 29
22 5 30
23 5 32
24 5 28
25 5 27
Agora fazemos regressão e ANOVA. Primeira regressão:
reg <- lm(Y1~X1, data=myd)
anova(reg)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 684.50 684.50 101.4 6.703e-10 ***
Residuals 23 155.26 6.75
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
reg$coefficients
(Intercept) X1
12.26 3.70
Agora ANOVA convencional (ANOVA média para fator / variável qualitativa) convertendo X1 em fator.
myd$X1f <- as.factor (myd$X1)
regf <- lm(Y1~X1f, data=myd)
anova(regf)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1f 4 742.16 185.54 38.02 4.424e-09 ***
Residuals 20 97.60 4.88
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Você pode ver o X1f Df alterado, que é 4 em vez de 1 no caso acima.
Em contraste com a ANOVA para variáveis qualitativas, no contexto de variáveis quantitativas onde fazemos análise de regressão - a Análise de Variância (ANOVA) consiste em cálculos que fornecem informações sobre níveis de variabilidade dentro de um modelo de regressão e formam uma base para testes de significância.
Basicamente, a ANOVA testa a hipótese nula beta = 0 (com a hipótese alternativa beta não é igual a 0). Aqui, testamos F qual a razão de variabilidade explicada pelo modelo vs erro (variação residual). A variação do modelo vem do valor explicado pela linha que você ajustou, enquanto o residual vem do valor que não é explicado pelo modelo. Um F significativo significa que o valor beta não é igual a zero, significa que existe uma relação significativa entre duas variáveis.
> anova(reg1)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 81.719 81.719 6.3331 0.0656 .
Residuals 4 51.614 12.904
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Aqui podemos ver alta correlação ou resultado do quadrado R, mas ainda não significativo. Às vezes, você pode obter um resultado em que baixa correlação ainda é significativa. A razão da relação não significativa nesse caso é que não temos dados suficientes (n = 6, df residual = 4), portanto, F deve ser visto na distribuição F com o numerador 1 df vs 4 denomerador df. Portanto, neste caso, não poderíamos descartar a inclinação não é igual a 0.
Vamos ver outro exemplo:
X = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg3 <- lm(Y~X)
anova(reg3)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 69.009 69.009 7.414 0.01396 *
Residuals 18 167.541 9.308
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Valor R-quadrado para esses novos dados:
summary(reg3)$r.squared
[1] 0.2917296
cor(X,Y)
[1] 0.54012
Embora a correlação seja menor que no caso anterior, obtivemos uma inclinação significativa. Mais dados aumentam df e fornecem informações suficientes para que possamos descartar a hipótese nula de que a inclinação não é igual a zero.
Vamos dar outro exemplo em que há correlação negativa:
X1 = c(4,5,8,6,12,15)
Y1 = c(18,16,2,4,2, 8)
# correlation
cor(X1,Y1)
-0.5266847
# r-square using regression
reg2 <- lm(Y1~X1)
summary(reg2)$r.squared
0.2773967
sqrt(summary(reg2)$r.squared)
[1] 0.5266847
Como os valores foram elevados ao quadrado, a raiz quadrada não fornecerá informações sobre relacionamento positivo ou negativo aqui. Mas a magnitude é a mesma.
Caso de regressão múltipla:
A regressão linear múltipla tenta modelar a relação entre duas ou mais variáveis explicativas e uma variável de resposta, ajustando uma equação linear aos dados observados. A discussão acima pode ser estendida para vários casos de regressão. Nesse caso, temos vários beta no termo:
y = a + beta1X1 + beta2X2 + beta2X3 + ................+ betapXp + error
Example:
X1 = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
X2 = c(14,15,8,16,2, 15,3,2,4,7, 9,12,5,6,3, 12,19,13,15,20)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg4 <- lm(Y~X1+X2)
Vamos ver os coeficientes do modelo:
reg4$coefficients
(Intercept) X1 X2
2.04055116 0.72169350 0.05566427
Assim, seu modelo de regressão linear múltipla seria:
Y = 2.04055116 + 0.72169350 * X1 + 0.05566427* X2
Agora vamos testar se o beta para X1 e X2 é maior que 0.
anova(reg4)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 69.009 69.009 7.0655 0.01656 *
X2 1 1.504 1.504 0.1540 0.69965
Residuals 17 166.038 9.767
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Aqui dizemos que a inclinação de X1 é maior que 0, enquanto não podemos determinar que a inclinação de X2 seja maior que 0.
Observe que a inclinação não é correlação entre X1 e Y ou X2 e Y.
> cor(Y, X1)
[1] 0.54012
> cor(Y,X2)
[1] 0.3361571
Em situações de múltiplas variáveis (onde as variáveis são maiores que duas, a correlação parcial entra em cena. A correlação parcial é a correlação de duas variáveis enquanto se controla uma terceira ou mais outras variáveis.
source("http://www.yilab.gatech.edu/pcor.R")
pcor.test(X1, Y,X2)
estimate p.value statistic n gn Method Use
1 0.4567979 0.03424027 2.117231 20 1 Pearson Var-Cov matrix
pcor.test(X2, Y,X1)
estimate p.value statistic n gn Method Use
1 0.09473812 0.6947774 0.3923801 20 1 Pearson Var-Cov matrix