Imagem por @siora18.

Atenção, a validade dos resultados analisados nesse documento pode não ser precisa. Por não nos preocuparmos no momento com a validade do nosso modelo, ou com hipoteses importantes do modelo clássico, utilizar essas informações pode não ser confiável. Esse documento foi feito para auxiliar a interpretação de resultados de um modelo de regressão para iniciantes da área.

Interprete o resultado dos modelos apresentados abaixo.

Dicas:

  1. Interprete a significância estatístisca dos parâmetros estimados.
  2. Interprete o R2 do modelo.

Com base nos dois itens, o modelo aparenta representar a realidade?

  1. Qual a forma funcional do modelo? (Escreva! É interessante entender a “cara” do modelo)
  2. O que o modelo nos informa sobre o fenômeno estudado?

Primeiro modelo: O preço de diamantes em função de quantos quilates ele possui.

Um joalheiro quer obter informações de como precificar seus diamantes. Para isso, ele coletou informações relativas a 53940 diamantes que já foram previamente vendidos. Visualizando graficamente podemos ver a seguinte relação entre preço e quilate.

dataset <- diamonds

ggplot(dataset, aes(carat, price)) +
  geom_point(color = "steelblue", size = 0.3) +
  geom_jitter(color = "steelblue", size = 0.3) +
  theme_classic() +
  labs(x = "Quilates", y = "Preço")

Uma regressão simples foi estimada, com os seguintes resultados:

summary(lm(price ~ carat, dataset))
## 
## Call:
## lm(formula = price ~ carat, data = dataset)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -18585.3   -804.8    -18.9    537.4  12731.7 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2256.36      13.06  -172.8   <2e-16 ***
## carat        7756.43      14.07   551.4   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1549 on 53938 degrees of freedom
## Multiple R-squared:  0.8493, Adjusted R-squared:  0.8493 
## F-statistic: 3.041e+05 on 1 and 53938 DF,  p-value: < 2.2e-16
Resposta:

O parâmetro de intercepto e de inclinação para a variável quilate são estatisticamente significativos a um nível de 1% de significância, visto que o pvalor associado a estatística de teste é muito próximo a zero. O R2 do modelo, indicado por “Multiple R-squared” é de 84.9%, o que indica que as variações da variável quilate explicam em até 84.9% as variações da variável preço, indicando um bom ajustamento do modelo.

A forma funcional do modelo aparenta ser linear, com base na descrição do modelo acima. Assim o modelo tem a forma: \(\hat{preço} = -2256.36 + 7756.43 \cdot quilate + \mu_i\)

Em termos práticos, podemos dizer que para cada incremento em uma unidade na variável quilate, o preço aumenta em 7756.43 unidades. Isso vai de encontro com a lógica, visto que quanto mais quilates possuirem um diamante, mais caro ele será.

Segundo modelo: expectativa de vida e pibpercapita

Um economista decide verificar a relação de expectativa de vida com um indicador de riqueza de uma nação, o pibpercapita. Após uma pesquisa incessante por dados em diversos países, ele consegue reunir 1704 observações de diversos países.

dataset <- gapminder::gapminder

setnames(dataset, "gdpPercap", "pibpercapita")
setnames(dataset, "lifeExp", "expectativadevida")

ggplot(dataset, aes(pibpercapita, expectativadevida)) +
  geom_point(color = "indianred1", size = 0.7) +
  theme_classic()

Uma regressão simples foi estimada, com os seguintes resultados:

summary(lm(expectativadevida ~ pibpercapita, dataset))
## 
## Call:
## lm(formula = expectativadevida ~ pibpercapita, data = dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -82.754  -7.758   2.176   8.225  18.426 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.396e+01  3.150e-01  171.29   <2e-16 ***
## pibpercapita 7.649e-04  2.579e-05   29.66   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.49 on 1702 degrees of freedom
## Multiple R-squared:  0.3407, Adjusted R-squared:  0.3403 
## F-statistic: 879.6 on 1 and 1702 DF,  p-value: < 2.2e-16
Resposta:

O parâmetro de intercepto e de inclinação para a variável quilate são estatisticamente significativos a um nível de 1% de significância, visto que o pvalor associado a estatística de teste é muito próximo a zero. O R2 do modelo, indicado por “Multiple R-squared” é de 34.07%, o que indica que as variações da variável pibpercapita explicam em até 34.07% as variações da variável preço. Como esperado, a expectativa de vida depende de mais informações que simplesmente a renda per capita de um país, mas esse aparenta ser um bom preditor até certo nível.

A forma funcional do modelo aparenta ser linear, com base na descrição do modelo acima. Assim o modelo tem a forma: \(\hat{preço} = 53.96 + 0.0007649 \cdot pibpercapita + \mu_i\)

Em termos práticos, podemos dizer que a expectativa de vida média no mundo, independente da rendapercapita é de aproximadamente 54 anos, e, o incremento em uma unidade de renda percapita aumenta a expectativa de vida em 0.0007649.

E se o resultado do modelo fosse o seguinte?

summary(lm(log(expectativadevida) ~ log(pibpercapita), dataset))
## 
## Call:
## lm(formula = log(expectativadevida) ~ log(pibpercapita), data = dataset)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.67059 -0.06453  0.01978  0.09086  0.36156 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       2.864177   0.023283  123.02   <2e-16 ***
## log(pibpercapita) 0.146549   0.002821   51.95   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1445 on 1702 degrees of freedom
## Multiple R-squared:  0.6132, Adjusted R-squared:  0.613 
## F-statistic:  2698 on 1 and 1702 DF,  p-value: < 2.2e-16
Resposta:

O que muda será a forma funcional do modelo, como podemos ver logo na primeira linha dessa descrição acima. O modelo agora tem a forma log-log, assim o modelo tem a forma: \(\hat{log(preço)} = 2.864177 + 0.14654 \cdot log(pibpercapita) + \mu_i\)

O que muda é a interpretação. Agora o coeficiente estimado para o pibpercapita é a elasticidade, ao invés de efeito marginal. Ou seja, um aumento em 1% na rendapercapita aumenta a expectativa de vida em 0.146%!

Terceiro modelo: A relação entre o tamanho do pé e o salário de uma pessoa.

Uma pessoa curiosa, por algum motivo, decidiu perguntar para 20 pessoas o tamanho do pé delas e o salário que elas recebiam. Os dados podem ser expressos como segue:

set.seed(42)
dataset <- data.frame(tamanho_pe = rnorm(20, 39, 2), salario = rnorm(20, 2000, 500))

ggplot(dataset, aes(tamanho_pe, salario)) +
  geom_point(color = "steelblue") + 
  theme_classic()

Uma regressão simples foi estimada, com os seguintes resultados:

summary(lm(salario ~ tamanho_pe, dataset))
## 
## Call:
## lm(formula = salario ~ tamanho_pe, data = dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -805.02 -235.90  -39.75  177.28 1043.87 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -1772.43    1768.38  -1.002   0.3295  
## tamanho_pe     92.35      44.81   2.061   0.0541 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 512.7 on 18 degrees of freedom
## Multiple R-squared:  0.1909, Adjusted R-squared:  0.146 
## F-statistic: 4.248 on 1 and 18 DF,  p-value: 0.05406

O que pode ser dito sobre esse modelo? Nesse caso, a FRA representa remotamente o que poderia ser a FRP? O que aconteceu então?

Caso essa pessoa curiosa decidisse perguntar e coletar dados de mais pessoas, o que você acha que aconteceria?

Ao invés de imaginar, essa mesma pessoa perguntou para 50.000 pessoas o tamanho do pé e o salário delas, resultado nesses dados:

set.seed(42)
dataset <- data.frame(tamanho_pe = rnorm(50000, 39, 2), salario = rnorm(5000, 2000, 500))

ggplot(dataset, aes(tamanho_pe, salario)) +
  geom_point(color = "steelblue", size = 0.1) + 
  theme_classic()

Uma regressão simples foi estimada, com os seguintes resultados:

summary(lm(salario ~ tamanho_pe, dataset))
## 
## Call:
## lm(formula = salario ~ tamanho_pe, data = dataset)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1952.82  -338.65     0.58   327.38  1604.18 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1947.270     43.126   45.15   <2e-16 ***
## tamanho_pe     1.325      1.104    1.20     0.23    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 496.5 on 49998 degrees of freedom
## Multiple R-squared:  2.879e-05,  Adjusted R-squared:  8.79e-06 
## F-statistic:  1.44 on 1 and 49998 DF,  p-value: 0.2302

Para clarificar mais ainda, veja a regressão ajustada nos dados:

ggplot(dataset, aes(tamanho_pe, salario)) +
  geom_point(color = "steelblue", size = 0.1) + 
  geom_smooth(method = "lm", se = F) +
  theme_classic()
## `geom_smooth()` using formula 'y ~ x'

Essa linha reta nos indica o que? O tamanho do pé tem algum efeito no salário de uma pessoa?

Quarto modelo: Relação entre PIB e tamanho da população

Um pesquisador de economia do desenvolvimento formulou uma teoria sobre a relação da produção de riquezas de um país e o tamanho da população. Ele deseja estimar se seu modelo é condizente e verificar se a população realmente tem impacto sob o PIB. Após uma coleta de dados, ele pode representar suas descobertas da seguinte forma:

dataset <- longley

setnames(dataset, "Population", "populacao")
setnames(dataset, "GNP", "PIB")


ggplot(dataset, aes(populacao, PIB)) +
  geom_point(color = "steelblue") +
  theme_classic()

Uma regressão simples foi estimada, com os seguintes resultados:

summary(lm(PIB ~ populacao, dataset))
## 
## Call:
## lm(formula = PIB ~ populacao, data = dataset)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -21.2942 -11.3519  -0.6804  11.2152  18.1277 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1275.2100    59.8256  -21.32 4.53e-12 ***
## populacao      14.1616     0.5086   27.84 1.17e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.7 on 14 degrees of freedom
## Multiple R-squared:  0.9823, Adjusted R-squared:  0.981 
## F-statistic: 775.2 on 1 and 14 DF,  p-value: 1.168e-13