In [1]:
# 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)
In [2]:
#==============================================================================
# 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' ===="
842,318181818182
[1] "==== Correlação entre 'x' e 'y' ===="
0,676117254392485
In [3]:
#==============================================================================
# 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
In [4]:
#==============================================================================
# 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")
In [5]:
#==============================================================================
# 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
In [6]:
#==============================================================================
# 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")
In [7]:
#==============================================================================
# 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
In [8]:
#==============================================================================
# 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