# rm(list=ls())
options(OutDec = ",")
#==============================================================================
# Exemplo: consumo e renda agregados dos EUA entre 1940 e 1950
# Modelo:
# Consumo(y) = beta0 + beta1*Renda(x) + epsilon
#==============================================================================
dataxy <- read.table("../dados/d03_consumo_renda.txt",header=T)
x <- dataxy[,2]
y <- dataxy[,3]
n <- length(x)
#==============================================================================
# Algumas estatisticas descritivas
#==============================================================================
print("==== Médias de 'x' e de 'y' ====")
print(c(mean(x),mean(y)))
print("==== Somas de quadrados de 'x', de 'y' e cruzada de 'x e y' ====")
print(c(var(x), var(y), cov(x,y))*(n-1))
print("==== Variâncias de 'x' e de 'y' ====")
print(c(var(x),var(y)))
print("==== Covariância entre 'x' e 'y' ====")
cov(x,y)
print("==== Correlação entre 'x' e 'y' ====")
cor(x,y)
[1] "==== Médias de 'x' e de 'y' ====" [1] 323,2727 273,2727 [1] "==== Somas de quadrados de 'x', de 'y' e cruzada de 'x e y' ====" [1] 12300,182 12618,182 8423,182 [1] "==== Variâncias de 'x' e de 'y' ====" [1] 1230,018 1261,818 [1] "==== Covariância entre 'x' e 'y' ===="
[1] "==== Correlação entre 'x' e 'y' ===="
#==============================================================================
# Ajuste por minimos quadrados
#==============================================================================
yfit <- lm(y ~ x)
print("==== Resumo do Ajuste ====")
print(summary(yfit))
print("==== ANOVA ====")
print(anova(yfit))
[1] "==== Resumo do Ajuste ===="
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-35,347 -26,440 9,068 20,000 31,642
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51,8951 80,8440 0,642 0,5369
x 0,6848 0,2488 2,753 0,0224 *
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 27,59 on 9 degrees of freedom
Multiple R-squared: 0,4571, Adjusted R-squared: 0,3968
F-statistic: 7,579 on 1 and 9 DF, p-value: 0,02237
[1] "==== ANOVA ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 5768,2 5768,2 7,5787 0,02237 *
Residuals 9 6850,0 761,1
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
#==============================================================================
# Grafico dos valores observados e reta ajustada
#==============================================================================
par(mfrow=c(1,1),lwd=2.0,cex.lab=1.5,cex.axis=1.5,lab=c(10,5,5),
mar=c(5,5,1,2.5),xpd=T,cex.main=2.0)
plot(x,y,pch=15,xlab="Renda (X)",ylab="Consumo (Y)",xlim=c(235,370),
ylim=c(212,332))
points(x[3:6],y[3:6],pch=15,col="blue")
lines(x,yfit$fitted.values)
legend(230,330,legend="Anos da Guerra",pch=15,col="blue",bty="n")
legend(230,325,legend="Ajuste 'Com Guerra'",lty=1,col=1,bty="n")
#==============================================================================
# Exemplo: consumo e renda agregados dos EUA entre 1940 e 1950
# Modelo:
# Consumo(y) = beta0 + beta1*Renda(x) + epsilon
# EXCLUINDO as observacoes para 1942 a 1945
#==============================================================================
zx <- dataxy[c(1:2,7:11),2]
zy <- dataxy[c(1:2,7:11),3]
zyfit <- lm(zy ~ zx)
print("==== Resumo do Ajuste ====")
print(summary(zyfit))
print("==== ANOVA ====")
print(anova(zyfit))
[1] "==== Resumo do Ajuste ===="
Call:
lm(formula = zy ~ zx)
Residuals:
1 2 3 4 5 6 7
4,50494 -14,76444 -4,12361 11,11312 -0,09504 10,75802 -7,39299
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15,90735 31,64252 0,503 0,636516
zx 0,85306 0,09894 8,622 0,000347 ***
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 10,48 on 5 degrees of freedom
Multiple R-squared: 0,937, Adjusted R-squared: 0,9244
F-statistic: 74,33 on 1 and 5 DF, p-value: 0,0003465
[1] "==== ANOVA ===="
Analysis of Variance Table
Response: zy
Df Sum Sq Mean Sq F value Pr(>F)
zx 1 8164,5 8164,5 74,332 0,0003465 ***
Residuals 5 549,2 109,8
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
#==============================================================================
# Grafico dos valores observados e reta ajustada
#==============================================================================
par(mfrow=c(1,1),lwd=2.0,cex.lab=1.5,cex.axis=1.5,lab=c(10,5,5),
mar=c(5,5,1,2.5),xpd=T,cex.main=2.0)
plot(x,y,pch=15,xlab="Renda (X)",ylab="Consumo (Y)",xlim=c(235,370),
ylim=c(212,332))
points(x[3:6],y[3:6],pch=15,col="blue")
lines(x,yfit$fitted.values)
lines(zx,zyfit$fitted.values,col="red")
legend(230,330,legend="Anos da Guerra",pch=15,col="blue",bty="n")
legend(230,325,legend="Ajuste 'Com Guerra'",lty=1,col="black",bty="n")
legend(230,320,legend="Ajuste 'Sem Guerra'",lty=1,col="red",bty="n")
#==============================================================================
# Exemplo: consumo e renda agregados dos EUA entre 1940 e 1950
# Modelo:
# Consumo(y) = beta0 + beta1 Renda(x) + beta2 W + epsilon
# Analise incluindo a variavel dicotomica dos anos de guerra (W)
#
# Lembre-se que pelos resultados o R^2 deve ser igual ou maior que do
# primeiro ajuste.
#==============================================================================
x <- dataxy[,2]
y <- dataxy[,3]
w <- dataxy[,4]
ywfit <- lm(y ~ x + w)
print("==== Resumo do Ajuste ====")
print(summary(ywfit))
print("==== ANOVA 2.1 ====")
print(anova(ywfit))
#==============================================================================
# Refazendo o ajuste de outra forma para aparecer na ANOVA
#==============================================================================
xw <- cbind(x,w)
ywfit2 <- lm(y ~ xw)
print("==== ANOVA 2.2 ====")
print(anova(ywfit2))
[1] "==== Resumo do Ajuste ===="
Call:
lm(formula = y ~ x + w)
Residuals:
Min 1Q Median 3Q Max
-14,598 -4,418 -2,352 7,242 11,101
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 14,49540 27,29948 0,531 0,61
x 0,85751 0,08534 10,048 8,19e-06 ***
w -50,68974 5,93237 -8,545 2,71e-05 ***
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 9,195 on 8 degrees of freedom
Multiple R-squared: 0,9464, Adjusted R-squared: 0,933
F-statistic: 70,61 on 2 and 8 DF, p-value: 8,26e-06
[1] "==== ANOVA 2.1 ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 5768,2 5768,2 68,217 3,468e-05 ***
w 1 6173,5 6173,5 73,010 2,710e-05 ***
Residuals 8 676,5 84,6
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
[1] "==== ANOVA 2.2 ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
xw 2 11941,7 5970,9 70,614 8,26e-06 ***
Residuals 8 676,5 84,6
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
#==============================================================================
# Para comparacao
#==============================================================================
print("==== Resumo do Ajuste 1 ====")
print(summary(yfit))
print("==== Resumo do Ajuste 2.1 ====")
print(summary(ywfit))
print("==== Resumo do Ajuste 2.2 ====")
print(summary(ywfit2))
print("==== ==== ==== ==== ==== ====")
print("==== ANOVA 1 ====")
print(anova(yfit))
print("==== ANOVA 2.1 ====")
print(anova(ywfit))
print("==== ANOVA 2.2 ====")
print(anova(ywfit2))
[1] "==== Resumo do Ajuste 1 ===="
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-35,347 -26,440 9,068 20,000 31,642
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51,8951 80,8440 0,642 0,5369
x 0,6848 0,2488 2,753 0,0224 *
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 27,59 on 9 degrees of freedom
Multiple R-squared: 0,4571, Adjusted R-squared: 0,3968
F-statistic: 7,579 on 1 and 9 DF, p-value: 0,02237
[1] "==== Resumo do Ajuste 2.1 ===="
Call:
lm(formula = y ~ x + w)
Residuals:
Min 1Q Median 3Q Max
-14,598 -4,418 -2,352 7,242 11,101
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 14,49540 27,29948 0,531 0,61
x 0,85751 0,08534 10,048 8,19e-06 ***
w -50,68974 5,93237 -8,545 2,71e-05 ***
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 9,195 on 8 degrees of freedom
Multiple R-squared: 0,9464, Adjusted R-squared: 0,933
F-statistic: 70,61 on 2 and 8 DF, p-value: 8,26e-06
[1] "==== Resumo do Ajuste 2.2 ===="
Call:
lm(formula = y ~ xw)
Residuals:
Min 1Q Median 3Q Max
-14,598 -4,418 -2,352 7,242 11,101
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 14,49540 27,29948 0,531 0,61
xwx 0,85751 0,08534 10,048 8,19e-06 ***
xww -50,68974 5,93237 -8,545 2,71e-05 ***
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
Residual standard error: 9,195 on 8 degrees of freedom
Multiple R-squared: 0,9464, Adjusted R-squared: 0,933
F-statistic: 70,61 on 2 and 8 DF, p-value: 8,26e-06
[1] "==== ==== ==== ==== ==== ===="
[1] "==== ANOVA 1 ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 5768,2 5768,2 7,5787 0,02237 *
Residuals 9 6850,0 761,1
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
[1] "==== ANOVA 2.1 ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 5768,2 5768,2 68,217 3,468e-05 ***
w 1 6173,5 6173,5 73,010 2,710e-05 ***
Residuals 8 676,5 84,6
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
[1] "==== ANOVA 2.2 ===="
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
xw 2 11941,7 5970,9 70,614 8,26e-06 ***
Residuals 8 676,5 84,6
---
Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1