Escolar Documentos
Profissional Documentos
Cultura Documentos
REGRESSÃO
17 de julho de 2023
1. Regressão Linear Simples
1.1 Introdução
n
X
SXX = (Xi − X̄ )2
i=1
Xn
= (Xi2 − 2Xi X̄ + X̄ 2)
i=1
Xn
= Xi2 − 2nX̄ 2 + nX̄ 2
i=1
Xn
= Xi2 − nX̄ 2
i=1
n
X
SXY = (Xi − X̄ )(Yi − Ȳ )
i=1
Xn
= (Xi Yi − Xi Ȳ − X̄ Yi + X̄ Ȳ )
i=1
Xn
= Xi Yi − nX̄ Ȳ − nX̄ Ȳ + nX̄ Ȳ
i=1
Xn
= Xi Yi − nX̄ Ȳ
i=1
n
X
SYY = (Yi − Ȳ )2
i=1
Xn
= (Yi2 − 2Yi Ȳ + Ȳ 2)
i=1
Xn
= Yi2 − 2nȲ 2 + nȲ 2
i=1
Xn
= Yi2 − nȲ 2
i=1
X Y X Y
1 29 4 21
1 31 4 22
2 26 5 14
2 25 5 24
3 21 6 23
3 24 6 15
3 26 7 18
3 28 8 13
São dados, a seguir, os resultados da alguns
cálculos intermediários para obtenção das
estimativas β̂0 e β̂1.
β̂0 = Ȳ − β̂1X̄ = 22, 5 − (−2, 1328) × 3, 9375
⇒ β̂0 = 30, 9
Pn
i=1 Xi Yi −nX̄ Ȳ 1.279−16×3,9375×22,5
β̂ = 2 =
1 P n 2 313−16×(3,9375)2
i=1 Xi −nX̄
⇒ β̂ = −2, 1328
1
H0 : β1 = 0,
ao nı́vel de significância adotado, podemos
utilizar a estatı́stica F.
Q.M.Regress~ao
Fcalculado =
Q.M.Resı́duo
em que:
G.L: Graus de Liberdade
S.Q: Soma de Quadrados
Q.M: Quadrados Médios
A estatı́stica F obtida na Tabela 2 serve para
testar a significância da regressão, ou seja, testar
H0 : β1 = 0 versus Ha : β1 ̸= 0.
Regra de decisão: se Fcalculado ≥ F(α,1,n−2) ⇒
rejeita-se H0. Ou se,
Pr (F(1,n−2) > Fcalculado) < α.
1.5 Coeficiente de determinação (r2)
O coeficiente de determinação, definido por
2 S.Q.Reg
r = ,
S.Q.Total
indica a proporção da variação de Y que é “
explicada”pela regressão. Note que 0 ≤ r 2 ≤ 1.
Se estamos interressados em estimar valores de
Y a partir de valores de X, a regressão será tanto
mais útil quanto mais próximo de um estiver o
valor de r 2.
EXEMPLO 2: verificar a significância da
regressão ajustada no Exemplo 1 ( use
α = 0, 05) e apresente a hipótese a ser testada
pela ANOVA.
H0 : β1 = 0
Ha : β1 ̸= 0
n
X
S.Q.Total = (Yi − Ȳ )2
i=1
= 424
n
2X
ao = βˆ1
S.Q.Regress~ (Xi − X̄ )2
i=1
= (2, 1328)2 × 64, 9375
= 295, 39
S.Q.Resı́duo = S.Q.Total − S.Q.Regress~ao
= 424 − 295, 39 = 128, 61
De posse destes resultados, podemos conduzir a
análise de variância da regressão linear simples,
conforme o esquema seguinte
. . . ... .
. . . ... .
x ⇒ Y
m m1 Ym2 ... Ymnm
Para facilitar o entendimento, será mostrado
como é feita a análise de variância da regressão
com o teste para falta de ajustamento,
considerando os dados do Exemplo 1.
Tabela: Valores de Xi e Yi para uma amostra de 16 observações, agrupadas conforme
valores distintos de Xi
n
2X
ao = βˆ1
S.Q.Regress~ (Xi − X̄ )2
i=1
n
!2
X
M
Yi
X Tm2 i=1
S.Q.Trat. = − (3)
m=1
nm n
H0 : E (Y )=β0 + β1 xi , modelo linear é adequado
Ha : E (Y ) ̸= β0 + β1 xi , modelo linear n~
ao é adequado
(4)
Se H0 é verdadeira, obtemos
F0 ∼ F(m−p−1,n−m). Com isso rejeitamos H0 se
F0 > F(α,m−p−1,n−m). O valor-p é dado por:
valor-p = P[F(α,m−p−1,n−m) > F0].
No caso do exemplo numérico que estamos
desenvolvendo (EXEMPLO 1) temos que:
S.Q.Total = 424;
7
6
5
4
3
16 18 20 22 24
Dilatação
O diagrama sugere uma tendência linear dos dados. Montaremos, portanto, um
modelo de regressão linear simples (simples, pois existe apenas uma variável
independente temp relacionada à variação da variável dependente dilat)
Montando o modelo:
> Modelo<-lm(dilat ~ temp)
> Modelo
Call:
lm(formula = dilat ~ temp)
Coefficients:
(Intercept) temp
-8.1710 0.7323
Com base neste modelo ajustado, temos duas informações: o valor do intercepto
(valor em que a reta de regressão intercepta o eixo das ordenadas) e o valor que
representa o coeficiente de inclinação da reta, ou seja, a relação entre dilatação e
a temperatura ( o quanto à dilatação varia para cada variação unitária da
temperatura). Esses valores são comumente representados pelos estatı́sticos
como β0 e β1 , respectivamente.
Logo, podemos concluir que o modelo de regressão ajustado seria:
Ŷ = βˆ0 + βˆ1 .X
ˆ = −8, 1710 + 0, 7323.temp
dilat
em que a temperatura é dada em 0 C e a dilatação linear é dada em mm.
Com o comando predict() podemos obter os valores calculados de dilat, de
acordo com o modelo ajustado, para os valores observados de temp.
> predict(Modelo)
1 2 3 4 5 6 7
5.009677 3.545161 10.135484 7.938710 6.474194 7.206452 8.670968
9
4.277419
O primeiro valor apresentado, ou seja, 5,009677, representa o que foi calculado
para dilatação quando a temperatura é 18 0 C (o primeiro do objeto temp), e
assim sucessivamente até o último valor de temp, gerando os nove valores
apresentados.
Podemos também obter os resı́duos associados a cada observação. Esses resı́duos
seriam simplesmente a diferença entre os valores observados e calculados
correspondente a cada observação.
> resid(Modelo)
1 2 3 4 5
-0.009677419 -0.545161290 -0.135483871 0.061290323 -0.474193548 -0.2
7 8 9
0.329032258 0.258064516 0.722580645
A seguinte apresentação tabular poderia ser usada, resumindo essas informações.
> preditos<-predict(Modelo)
> residuos<-resid(Modelo)
> result<-data.frame( #criando um data.frame
+ dilat, #variável dependente
+ temp, #variável independente
+ calculado = predict(Modelo), #valores calculados
+ residuos = resid(Modelo)) #residuos
A seguinte apresentação tabular poderia ser usada, resumindo essas informações.
> result #exibindo result
dilat temp calculado residuos
1 5 18 5.009677 -0.009677419
2 3 16 3.545161 -0.545161290
3 10 25 10.135484 -0.135483871
4 8 22 7.938710 0.061290323
5 6 20 6.474194 -0.474193548
6 7 21 7.206452 -0.206451613
7 9 23 8.670968 0.329032258
8 6 19 5.741935 0.258064516
9 5 17 4.277419 0.722580645
Agora vamos plotar novamente os dados e acrescentar ao gráfico, além da reta
de regressão ajustada, segmentos de reta representando os resı́duos, ou seja,
segmentos de reta que vão dos valores observados (pontos) aos calculados (reta).
> plot(temp,dilat,xlab="Temperatura",ylab="Dilataç~
ao")
> abline(Modelo, col = 2) #reta de regress~
ao ajusta e a cor.
> segments( #desenha segmentos de reta
+ result$temp,result$dilat,result$temp,result$calculado,
+ col =4)
10
9
8
Dilatação
7
6
5
4
3
16 18 20 22 24
Temperatura
Podemos também realizar uma análise de variância da regressão da seguinte
forma:
> anova(Modelo) # ANOVA da regress~ ao
Analysis of Variance Table
Response: dilat
Df Sum Sq Mean Sq F value Pr(>F)
temp 1 36.938 36.938 201.4 2.048e-06 ***
Residuals 7 1.284 0.183
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Por meio dessa análise podemos verificar que o coeficiente β1 é significativo
(p-value encontrado foi de ordem de 10−6 ), ou seja, a temperatura influencia
significativamente a dilatação. com o comando summary() podemos obter
muitas outras informações:
> shapiro.test(residuos)
Shapiro-Wilk normality test
data: residuos
W = 0.97271, p-value = 0.9169
> summary(Modelo)
Call:
lm(formula = dilat ~ temp)
Residuals:
Min 1Q Median 3Q Max
-0.54516 -0.20645 -0.00968 0.25806 0.72258
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -8.1710 1.0475 -7.801 0.000107 ***
temp 0.7323 0.0516 14.191 2.05e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data: residuos
W = 0.96874, p-value = 0.5472
> anova(modelo)
Analysis of Variance Table
Response: peso
Df Sum Sq Mean Sq F value Pr(>F)
trat 6 1941.83 323.64 7.668 0.0001876 ***
Residuals 21 886.34 42.21
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Observando os resultados do experimento, verificamos que há uma tendência de
resposta crescente até certo ponto, para depois diminuir. Em um caso como
este, em que os tratamentos são quantitativos e em mais de dois nı́veis, uma
análise completa deve levar em conta a regressão, subdividindo-se em 6 graus de
liberdade de tratamento da seguinte maneira.
CAUSA DE VARIAÇÃO G.L.
Regressão linear (ou de 1 grau) 1
Regressão quadrática (ou de 2 grau) 1
Regressão cúbica (ou de 3 grau) 1
Regressão de 4 grau 1
Regressão de 5 grau 1
Regressão de 6 grau 1
(Tratamento) 6
No entanto, regressão maior que 3 grau não tem interesse prático, de modo que,
na análise de variância, podemos considerar as regressões maiores que 3 grau
como uma única causa de variação, que denominamos desvios de regressão,
ficando para o nosso exemplo, o desdobramento seguinte:
CAUSA DE VARIAÇÃO G.L.
Regressão linear (ou de 1 grau) 1
Regressão quadrática (ou de 2 grau) 1
Regressão cúbica (ou de 3 grau) 1
Desvios de regressão 3
(Tratamento) 6
> #####Analisando os dados no pacote ExpDes.pt
> rm(list=ls(all=TRUE))
> library(ExpDes.pt)
> peso<-c(134.8,139.7,147.6,132.3,161.7,157.7,150.3,
+ 144.7,160.7,172.7,163.4,161.3,169.8,168.2,160.7,
+ 161.0,165.7,160.0,158.2,151.0,171.8,157.3,150.4,
+ 160.4,154.5,160.4,148.8,154)
> trat<-c(rep(0,4),rep(50,4),rep(100,4),
+ rep(150,4),rep(200,4),rep(250,4),rep(300,4))
> dados<-data.frame(trat,peso=peso)
> dados
trat peso
1 0 134.8
2 0 139.7
3 0 147.6
4 0 132.3
5 50 161.7
6 50 157.7
7 50 150.3
8 50 144.7
9 100 160.7
10 100 172.7
11 100 163.4
12 100 161.3
13 150 169.8
14 150 168.2
15 150 160.7
16 150 161.0
17 200 165.7
18 200 160.0
19 200 158.2
20 200 151.0
21 250 171.8
22 250 157.3
23 250 150.4
24 250 160.4
25 300 154.5
26 300 160.4
27 300 148.8
28 300 154.0
> reg.poly(peso,trat,glres=21,SQres=886.34,gltrat=6,SQtrat=1941.83)
Ajuste de modelos polinomiais de regressao
---------------------------------------------------------------------
Modelo Linear
=========================================
Estimativa Erro.padrao tc valor.p
-----------------------------------------
b0 150.5652 2.2134 68.0254 0
b1 0.0389 0.0123 3.1664 0.0046
-----------------------------------------
R2 do modelo linear
--------
0.217915
--------
R2 do modelo quadratico
--------
0.880096
--------
R2 do modelo cubico
--------
0.959939
--------
150
140
130
Doses
> #Informaç~
oes úteis para o gráfico da curva ajustada e
> #média dos valores observados de acordo com cada dose
> dosex<-c(0,50,100,150,200,250,300)
> tapply(peso,trat, mean)
0 50 100 150 200 250 300
138.600 153.600 164.525 164.925 158.725 159.975 154.425
> Media <-c(138.600,153.600,164.525,164.925,158.725,159.975,154.425)
> Media
[1] 138.600 153.600 164.525 164.925 158.725 159.975 154.425
> ####Aqui voc^e precisa colocar a média do tratamento Media
> modelo_ajustado<- 140.7839 + 0.2736*x -0.000783*x^2
> plot(x,modelo_ajustado,ylim=c(130,180),xlab="Dose", ylab="Peso",
+ main="Curva ajustada e Valores médios",type="l",col="Red")
> points(dosex,Media,col="blue")
> legend("bottomright",bty="n",
+ legend=expression(Y[est]=='140.7839'~+~'0.2736x'
+ ~-~'0.000783x'^2~~~~R^2=='0.8801'),
+ col =c("blue","red","green"), pch=rep(20,2),
+ cex = 0.8)
Curva ajustada e Valores médios
180
170
160
Peso
150
140
130
Dose