Criando modelos no R

Neste post mostraremos como construir modelos de regressão linear de maneira aplicada. Se você já se perguntou em como replicar no R aqueles modelos introdutórios, comuns em disciplinas de estatística e econometria, este post é pra você!

Dessa forma, usaremos a econometria - que é um conjunto de métodos estatísticos utilizados para estimar relações econômicas, testar teorias e avaliar políticas públicas ou de negócios - para explorar um problema aplicado ao mercado de trabalho.

Portanto, assumimos que você já possui algum conhecimento teórico sobre modelos de regressão linear, pois daremos ênfase no aspecto prático de como implementar este tipo de modelo usando o R. Caso necessário, sugerimos como referência para revisão teórica o livro-texto do Wooldridge (2020), que é muito utilizado em disciplinas de econometria de cursos de graduação e será nossa base aqui.

Pacotes

Para reproduzir os códigos deste exercício, você precisará dos seguintes pacotes de R:

O problema e os dados

Para exemplificar a estimação de um modelo linear vamos recorrer a um conjunto de dados clássico do Wooldridge, que traz informações de uma pesquisa populacional. Mais especificamente, iremos investigar um problema de economia do mercado de trabalho: suponha que você seja contratado para determinar o efeito de um programa de aperfeiçoamento profissional na produtividade de trabalhadores. Sem se aprofundar muito na teoria econômica e especializada da área, podemos dizer que fatores como escolaridade, experiência profissional e treinamentos podem afetar a produtividade do trabalhador e, portanto, seus salários. Com esse simples entendimento podemos definir um modelo econômico como:

onde é o salário por hora, são os anos de educação formal, são os anos de experiência no mercado de trabalho e é o tempo despendido em aperfeiçoamento profissional. Outros fatores podem afetar , mas este modelo simples capta a essência do problema em questão.

Dado que estes fatores e variáveis podem ser observados - e se não fossem teríamos que levar isso em consideração -, o próximo passo é transformarmos esta especificação de modelo econômico para um modelo econométrico, como:

onde as constantes , , ..., são parâmetros do modelo que descrevem as direções (sinal) e as magnitudes (tamanho) da relação entre e as demais variáveis utilizadas para explicar no modelo; e o termo de erro contém fatores como "habilidade inata", qualidade da educação, histórico familiar e outros que podem influenciar o salário de um trabalhador. Se estivermos especialmente interessados no efeito do programa de aperfeiçoamento profissional, então  é o parâmetro de interesse.

Para uma análise empirica deste modelo precisamos de dados, portanto, após essa breve introdução vamos partir para a prática! No R, o conjunto de dados para usarmos nesse modelo vem do pacote {wooldridge} e pode ser carregado conforme abaixo:

Exploração dos dados

Os dados são do tipo cross-section e contém variáveis de 526 indivíduos referente ao ano de 1976. Deste conjunto de dados, usaremos apenas as variáveis wage (salário por hora), educ (anos de educação) e exper (anos de experiência). Para facilitar o entendimento, utilizaremos a transformação logarítmica na variável dependente, obtendo uma interpretação percentual dos parâmetros do modelo.

No R, com um simples comando também é possível obter uma tabela de estatísticas descritivas das variáveis:

Com o pacote ggplot2 podemos facilmente visualizar, em um gráfico de dispersão, a relação entre as variáveis do modelo:

Estimar o modelo

Conforme dito, iremos estimar o modelo econométrico acima mas com algumas modificações: sem o fator e com transformação logarítmica na variável . Com estes ajustes, comuns em exercícios empíricos, chegamos a uma especificação como esta:

No R, estimamos este modelo com a função lm() especificando os termos por uma fórmula e o objeto com os dados:

Resultados do modelo

Para obter os resultados do modelo estimado use a função summary(), que é uma função genérica para obter resultados de diversas famílias de modelos:

A interpretação dos resultados deste modelo deve ser feita ceteris paribus e os parâmetros possuem uma intepretação percentual. Por exemplo, o coeficiente educ (escolaridade) com valor 0,097 significa que, mantendo exper (experiencia) constante, um ano adicional de escolaridade aumenta wage (salario) em 9,7%. É isso que os economistas querem dizer quando se referem ao “retorno a mais por um ano de educação”.

Pode ser mais fácil utilizar essa saída de resultados, especialmente para usuários do {tidyverse}, se a mesma for transformada em tabela. Para organizar dessa maneira o pacote {broom} possui excelentes funções:

Diagnóstico do modelo

Além disso, no R existem diversos pacotes focados em análise estatística. Por exemplo, com o pacote {performance} podemos facilmente investigar visualmente as hipóteses do modelo com um simples comando:

Reportando resultados

Para reportar estes resultados, seja em um artigo, em uma apresentação, etc., também existem diversas facilidades no R. Por exemplo, você pode construir a representação da equação, já em LaTeX, com base no objeto que contém o modelo estimado:

E essa expressão do LaTeX pode ser renderizada, com o R Markdown por exemplo, para:

Já com o pacote {report} é possível criar um texto (em inglês) com alguns parágrafos que já interpretam os resultados do modelo de forma automatizada:

Gerando:

We fitted a linear model (estimated using OLS) to predict wage with educ and exper (formula: log(wage) ~ educ + exper). The model explains a statistically significant and moderate proportion of variance (R2 = 0.25, F(2, 523) = 86.86, p < .001, adj. R2 = 0.25). The model's intercept, corresponding to educ = 0 and exper = 0, is at 0.22 (95% CI [3.52e-03, 0.43], t(523) = 2.00, p = 0.046). Within this model:

- The effect of educ is statistically significant and positive (beta = 0.10, 95% CI [0.08, 0.11], t(523) = 12.85, p < .001; Std. beta = 0.17, 95% CI [0.15, 0.20])
- The effect of exper is statistically significant and positive (beta = 0.01, 95% CI [7.29e-03, 0.01], t(523) = 6.65, p < .001; Std. beta = 0.09, 95% CI [0.06, 0.12])

Standardized parameters were obtained by fitting the model on a standardized version of the dataset. 95% Confidence Intervals (CIs) and p-values were computed using the Wald approximation.

Para criar um tabela de resultados, usualmente presente em papers, use a variante *_table():

Por fim, gráficos de parâmetros do modelo também podem ser gerados facilmente:

Saiba mais

Para saber mais e se aprofundar no assunto, confira os cursos aplicados de R e Python da Análise Macro disponíveis neste outono. Além disso, existem alguns materiais gratuitos sobre modelos disponíveis no blog:

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PNADc Trimestral - 3° Trimestre/2024

A Análise Macro apresenta os resultados da PNADc Trimestral do 3º trimestre de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.