O objetivo deste tutorial é explorar os dados do produto interno bruto dos municípios com apresentações em mapas, bem como revisar regressão linear.

Contextualização

Produto Interno Bruto (PIB)

PIB representa o total dos bens e serviços produzidos pelas unidades produtoras residentes destinados aos usos finais, sendo, portanto, equivalente à soma dos valores adicionados pelas diversas atividades econômicas acrescida dos impostos, líquidos de subsídios, sobre produtos (PIB pela ótica da produção).

Base de dados

Leitura dos dados

Defina o diretório para o local onde está a base de dados e importe a bse completa:

options(scipen = 999) # opção para não exibir números científicos
library(readxl)
pib_mun <- read_excel("PIB dos Municípios - base de dados 2010-2020.xls")

Ao visulizar a estrutura dos dados, o nomes das colunas não está na melhor forma para manipulação. Assim, é recomendado algumas alterações:

Verificando variáveis

O pacote DataMaid é uma ferramenta valiosa no ambiente R para a verificação, limpeza e organização eficiente de conjuntos de dados. Desenvolvido com o objetivo de aprimorar a qualidade e confiabilidade dos dados, o DataMaid oferece funcionalidades que auxiliam na identificação de valores ausentes, erros de digitação, inconsistências e outras anomalias nos dados. Além disso, permite a criação de relatórios detalhados, facilitando a compreensão das estruturas e conteúdo dos datasets, promovendo assim uma exploração mais assertiva. Com suas capacidades automatizadas de geração de sumários e gráficos descritivos, o DataMaid é uma ferramenta para cientistas de dados e analistas que desejam garantir a qualidade e integridade dos seus dados, tornando todo o processo de análise mais eficiente e confiável.

library(dataMaid)
makeDataReport(pib_mun,replace = TRUE)
## The default of 'doScale' is FALSE now for stability;
##   set options(mc_doScale_quiet=TRUE) to suppress this (once per session) message
## Data report generation is finished. Please wait while your output file is being rendered.
## 
##  Is dataMaid_pib_mun.docx open on your computer? Please close it as fast as possible to avoid problems!

O que foi possível verificar com o relatório produzido anteriormente?

Perguntas

O principal indicador, PIB e o valor adicionado por atividades já foi calculado, assim vamos pensar na apresentação e análise desses dados tentando responder as seguintes perguntas?

  1. Quais os dez municípios que mais ganharam participação no PIB entre os anos de 2010 e 2019? E os dez que mais perderam?
  2. Quais os municípios que possuem a produção agropecuária como mais importante para sua economia local? E para a indústria e os Serviços? Quais possuem a Administração Pública como principal atividade?
  3. Qual a relação entre PIB percapita e Expectativa de Vida?
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ tibble  3.2.1     ✔ dplyr   1.1.2
## ✔ tidyr   1.2.1     ✔ stringr 1.4.1
## ✔ readr   2.1.3     ✔ forcats 0.5.2
## ✔ purrr   0.3.5
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ dplyr::summarize() masks dataMaid::summarize()
pib_mun_mg <- pib_mun %>%  filter(cod_uf == 31) %>% 
  mutate(p.agro = va_agro/va *100,
         p.ind = va_ind/va*100,
         p.serv = va_serv/va*100,
         p.admin = va_admin/va*100
  ) %>% group_by(ano) %>% mutate(p.pib = pib/sum(pib)*100)

Participação no PIB

library(tidyr)

# organiza base com os dados necessários e calcula a diferença
base1 <- pib_mun_mg %>%  select(ano,code_muni, nome_mun,p.pib) %>% spread(ano,p.pib) %>% mutate(dif_2019_2010 = round(`2019`-`2010`,2))

# organiza tabela com os dez municípios que mais ganharam participação
arrange(base1,desc(base1$dif_2019_2010))[1:10,c("code_muni","nome_mun","dif_2019_2010")]
## # A tibble: 10 × 3
##    code_muni nome_mun                 dif_2019_2010
##        <dbl> <chr>                            <dbl>
##  1   3125101 Extrema                           1.02
##  2   3117504 Conceição do Mato Dentro          0.56
##  3   3152501 Pouso Alegre                      0.46
##  4   3170206 Uberlândia                        0.38
##  5   3170107 Uberaba                           0.31
##  6   3144805 Nova Lima                         0.29
##  7   3147006 Paracatu                          0.27
##  8   3104007 Araxá                             0.26
##  9   3103504 Araguari                          0.24
## 10   3148004 Patos de Minas                    0.19
# organiza tabela com os dez municípios que mais perderam participação
arrange(base1,base1$dif_2019_2010)[1:10,c("code_muni","nome_mun","dif_2019_2010")]
## # A tibble: 10 × 3
##    code_muni nome_mun        dif_2019_2010
##        <dbl> <chr>                   <dbl>
##  1   3106705 Betim                   -2.36
##  2   3106200 Belo Horizonte          -1.95
##  3   3118601 Contagem                -0.78
##  4   3140001 Mariana                 -0.74
##  5   3146107 Ouro Preto              -0.58
##  6   3131307 Ipatinga                -0.33
##  7   3118007 Congonhas               -0.24
##  8   3167202 Sete Lagoas             -0.19
##  9   3105400 Barão de Cocais         -0.14
## 10   3134400 Iturama                 -0.12

Fazendo um mapa dos que ganharam mais participação e aqueles que mais perderam:

library(geobr)  
mun <- read_municipality(code_muni = "MG", year = 2019,showProgress = FALSE)  

#Juntar coordenadas para criar o mapa 
base_mapa<- left_join(base1, mun , by = 'code_muni')

Agora, vamos plotar os resultados em um mapa estático e um interativo.

# Carregar bibliotecas 
library(ggplot2) 
library(plotly)  
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(ggspatial)

# Criar o gráfico ggplot com o PIB 
ggplot_obj_1 <- base_mapa %>% 
  ggplot() +   
  geom_sf(data = base_mapa$geom, aes(fill = base_mapa$dif_2019_2010, 
                                     text = paste("Município: ", base_mapa$nome_mun, "<br>Diferença participação: ", base_mapa$dif_2019_2010, "%"))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Diferença part.') +
  annotation_scale(location = "bl", width_hint = 0.3) + 
  annotation_north_arrow(location = "bl", which_north = "true", 
        pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
        style = north_arrow_fancy_orienteering) +
  theme(panel.grid = element_line(colour = "transparent"),panel.background =  element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +   
  labs(title = "Diferença de participação do PIB dos Municípios de MG - 2019-2010 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)  
ggplot_obj_1

Fazendo uma versão interativa:

# Converter o gráfico ggplot para plotly
interactive_plot_1 <- ggplotly(ggplot_obj_1, tooltip = "text")
# Exibir o gráfico interativo 
interactive_plot_1

Atividades mais importantes

library(tidyr)

# organiza base com os dados necessários e calcula a diferença
base2 <- pib_mun_mg %>%  select(ano,code_muni, nome_mun,p.agro,p.ind,p.serv,p.admin) %>% filter(ano==2020) 

# organiza tabela com os dez municípios em que agropecuária é mais importante
arrange(base2,desc(base2$p.agro))[1:10,c("code_muni","nome_mun","p.agro")]
## # A tibble: 10 × 3
##    code_muni nome_mun              p.agro
##        <dbl> <chr>                  <dbl>
##  1   3145455 Olhos-d'Água            70.5
##  2   3128600 Guarda-Mor              64.5
##  3   3124807 Estrela do Sul          63.3
##  4   3141306 Medeiros                62.6
##  5   3100708 Água Comprida           62.0
##  6   3108206 Bonfinópolis de Minas   60.2
##  7   3156403 Romaria                 59.3
##  8   3143500 Morada Nova de Minas    58.6
##  9   3129103 Gurinhatã               58.0
## 10   3124708 Estrela do Indaiá       56.7
# organiza tabela com os dez municípios em que a industria é mais importante
arrange(base2,desc(base2$p.ind))[1:10,c("code_muni","nome_mun","p.ind")]
## # A tibble: 10 × 3
##    code_muni nome_mun                  p.ind
##        <dbl> <chr>                     <dbl>
##  1   3162948 São José da Barra          79.9
##  2   3103751 Araporã                    77.9
##  3   3127008 Fronteira                  75.9
##  4   3115359 Catas Altas                73.4
##  5   3117504 Conceição do Mato Dentro   73.1
##  6   3106309 Belo Oriente               72.4
##  7   3108800 Braúnas                    72.1
##  8   3133709 Itatiaiuçu                 69.8
##  9   3135407 Jeceaba                    69.1
## 10   3161908 São Gonçalo do Rio Abaixo  66.5
# organiza tabela com os dez municípios em que os serviços é mais importante
arrange(base2,desc(base2$p.serv))[1:10,c("code_muni","nome_mun","p.serv")]
## # A tibble: 10 × 3
##    code_muni nome_mun          p.serv
##        <dbl> <chr>              <dbl>
##  1   3117876 Confins             85.6
##  2   3133600 Itapeva             83.1
##  3   3125101 Extrema             68.7
##  4   3154705 Ribeirão Vermelho   68.6
##  5   3163706 São Lourenço        68.2
##  6   3139508 Manhumirim          67.9
##  7   3106200 Belo Horizonte      67.9
##  8   3136702 Juiz de Fora        66.6
##  9   3128709 Guaxupé             66.3
## 10   3152501 Pouso Alegre        66.3
# organiza tabela com os dez municípios em que a administração pública é mais importante
arrange(base2,desc(base2$p.admin))[1:10,c("code_muni","nome_mun","p.admin")]
## # A tibble: 10 × 3
##    code_muni nome_mun                p.admin
##        <dbl> <chr>                     <dbl>
##  1   3162450 São João das Missões       67.3
##  2   3117836 Cônego Marinho             63.7
##  3   3116100 Chapada do Norte           63.4
##  4   3127073 Fruta de Leite             62.8
##  5   3129657 Ibiracatu                  62.8
##  6   3166956 Serranópolis de Minas      62.6
##  7   3142254 Miravânia                  62.3
##  8   3147956 Patis                      61.7
##  9   3143153 Monte Formoso              61.7
## 10   3160454 Santo Antônio do Retiro    61.2

Representando em mapas:

#Juntar coordenadas para criar o mapa 
base_mapa2<- left_join(base2, mun , by = 'code_muni')

# Agropecuária
ggplot_obj_2 <- base_mapa2 %>% 
  ggplot() +   
  geom_sf(data = base_mapa2$geom, aes(fill = base_mapa2$p.agro, 
                                     text = paste("Município: ", base_mapa2$nome_mun, "<br>Part. Agropecuária: ", base_mapa2$p.agro, "%"))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Part. Agropecuária') +
  annotation_scale(location = "bl", width_hint = 0.3) + 
  annotation_north_arrow(location = "bl", which_north = "true", 
        pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
        style = north_arrow_fancy_orienteering) +
  theme(panel.grid = element_line(colour = "transparent"),panel.background =  element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +   
  labs(title = "Participação da Agropecuária no VA total municipal - 2020 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)  
ggplot_obj_2

# Indústria
ggplot_obj_3 <- base_mapa2 %>% 
  ggplot() +   
  geom_sf(data = base_mapa2$geom, aes(fill = base_mapa2$p.ind, 
                                     text = paste("Município: ", base_mapa2$nome_mun, "<br>Part. Indústria: ", base_mapa2$p.ind, "%"))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Part. Indústria') +
  annotation_scale(location = "bl", width_hint = 0.3) + 
  annotation_north_arrow(location = "bl", which_north = "true", 
        pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
        style = north_arrow_fancy_orienteering) +
  theme(panel.grid = element_line(colour = "transparent"),panel.background =  element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +   
  labs(title = "Participação da Indústria no VA total municipal - 2020 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)  
ggplot_obj_3

# Serviços
ggplot_obj_4 <- base_mapa2 %>% 
  ggplot() +   
  geom_sf(data = base_mapa2$geom, aes(fill = base_mapa2$p.serv, 
                                     text = paste("Município: ", base_mapa2$nome_mun, "<br>Part. Serviços: ", base_mapa2$p.serv, "%"))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Part. Serviços') +
  annotation_scale(location = "bl", width_hint = 0.3) + 
  annotation_north_arrow(location = "bl", which_north = "true", 
        pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
        style = north_arrow_fancy_orienteering) +
  theme(panel.grid = element_line(colour = "transparent"),panel.background =  element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +   
  labs(title = "Participação dos Serviços no VA total municipal - 2020 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)  
ggplot_obj_4

# Admnistração Pública
ggplot_obj_5 <- base_mapa2 %>% 
  ggplot() +   
  geom_sf(data = base_mapa2$geom, aes(fill = base_mapa2$p.admin, 
                                     text = paste("Município: ", base_mapa2$nome_mun, "<br>Part. Adm. Pública: ", base_mapa2$p.admin, "%"))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Part. Adm. Publica') +
  annotation_scale(location = "bl", width_hint = 0.3) + 
  annotation_north_arrow(location = "bl", which_north = "true", 
        pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
        style = north_arrow_fancy_orienteering) +
  theme(panel.grid = element_line(colour = "transparent"),panel.background =  element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +   
  labs(title = "Participação da Admin. Pública no VA total municipal- 2020 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)  
ggplot_obj_5

PIB per capita x Expectativa de Vida

Vamos investigar se existe uma relação linear entre PIB per capita e expectativa de vida ao nascer, ou seja, os municípios com os maiores PIB percapita são aqueles onde as expectativas de vida ao nascer é maior?

Montando a base de dados

library(tidyr)

# organiza base com os dados necessários e calcula a diferença
base3 <- pib_mun_mg %>%  select(ano,code_muni, nome_mun,pib_pc) %>% filter(ano==2010) 

# organiza tabela com os dez municípios com maiores PIB percapita e aqueles os 10 menores
arrange(base3,desc(base3$pib_pc))[1:10,c("code_muni","nome_mun","pib_pc")]
## # A tibble: 10 × 3
##    code_muni nome_mun                   pib_pc
##        <dbl> <chr>                       <dbl>
##  1   3161908 São Gonçalo do Rio Abaixo 199514.
##  2   3103751 Araporã                   159816.
##  3   3133709 Itatiaiuçu                 98177.
##  4   3117876 Confins                    97786.
##  5   3162948 São José da Barra          93740.
##  6   3140001 Mariana                    68111.
##  7   3144805 Nova Lima                  66319.
##  8   3126307 Fortaleza de Minas         66280.
##  9   3125101 Extrema                    65984.
## 10   3106705 Betim                      61939.
arrange(base3,base3$pib_pc)[1:10,c("code_muni","nome_mun","pib_pc")]
## # A tibble: 10 × 3
##    code_muni nome_mun             pib_pc
##        <dbl> <chr>                 <dbl>
##  1   3162450 São João das Missões  3250 
##  2   3126505 Francisco Badaró      3391.
##  3   3116100 Chapada do Norte      3504.
##  4   3108255 Bonito de Minas       3513.
##  5   3138658 Lontra                3517.
##  6   3154507 Riacho dos Machados   3614.
##  7   3139250 Mamonas               3638.
##  8   3146750 Palmópolis            3639.
##  9   3143153 Monte Formoso         3647.
## 10   3145307 Novo Cruzeiro         3667.
esperanca <- read_excel("esperanca_vida_nascer_mg.xlsx", 
     col_types = c("numeric", "text", "numeric"))
colnames(esperanca) <- c("code_muni","Município","e0")

# organiza tabela com os dez municípios com maiores expectativas de vida e aqueles os 10 menores
arrange(esperanca,desc(esperanca$e0))[1:10,c("code_muni", "Município","e0")]
## # A tibble: 10 × 3
##    code_muni Município     e0
##        <dbl> <chr>      <dbl>
##  1   3147907 Passos      78.2
##  2   3144805 Nova Lima   78.1
##  3   3168804 Tiradentes  78.1
##  4   3170206 Uberlândia  78.1
##  5   3132404 Itajubá     78.1
##  6   3171303 Viçosa      78.0
##  7   3105608 Barbacena   77.9
##  8   3128709 Guaxupé     77.8
##  9   3138203 Lavras      77.8
## 10   3149804 Perdizes    77.8
arrange(esperanca,esperanca$e0)[1:10,c("code_muni", "Município","e0")]
## # A tibble: 10 × 3
##    code_muni Município                e0
##        <dbl> <chr>                 <dbl>
##  1   3157658 Santa Helena de Minas  68.4
##  2   3122355 Divisa Alegre          68.4
##  3   3146750 Palmópolis             69.3
##  4   3148756 Pedra Bonita           69.4
##  5   3165552 Setubinha              69.6
##  6   3150539 Pingo D' Água          69.6
##  7   3125606 Felisburgo             69.7
##  8   3130556 Imbé de Minas          69.7
##  9   3118106 Congonhas do Norte     69.7
## 10   3140555 Mata Verde             69.9
base3 <- merge(base3,esperanca)

Análise descritiva

# Esperança de vida ao nascer
summary(base3$e0)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   68.37   73.10   74.41   74.42   75.78   78.15
hist(base3$e0)

boxplot(base3$e0)

# Relembrando
# knitr::include_graphics("pics/boxplot.png")

# PIB per capita
summary(base3$pib_pc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    3250    5613    7807   11267   12027  199514
hist(base3$pib_pc)

boxplot(base3$pib_pc)

# Transformação logarítmica do PIB per capita
summary(log(base3$pib_pc))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   8.086   8.633   8.963   9.080   9.395  12.204
hist(log(base3$pib_pc))

boxplot(log(base3$pib_pc))

# Gráfico de dispersão
ggplot(base3, aes(x=log(pib_pc), y=e0)) +
    geom_point()

# Correlação linear entre as variáveis
cor(log(base3$pib_pc),base3$e0)
## [1] 0.5622577
# Teste de correlação
cor.test(log(base3$pib_pc),base3$e0)
## 
##  Pearson's product-moment correlation
## 
## data:  log(base3$pib_pc) and base3$e0
## t = 19.834, df = 851, p-value < 0.00000000000000022
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5145526 0.6064928
## sample estimates:
##       cor 
## 0.5622577

Regressão linear

Uma regressão linear é uma técnica estatística que é usada para modelar a relação entre uma variável dependente (ou resposta) e uma ou mais variáveis independentes (ou preditoras) através de uma equação linear. O objetivo principal da regressão linear é entender e prever como as mudanças nas variáveis independentes afetam a variável dependente.

Aqui estão os principais elementos de uma regressão linear:

  1. Variável Dependente (Y): A variável que estamos tentando prever ou explicar é chamada de variável dependente. É representada como “Y” na equação de regressão.

  2. Variáveis Independentes (X): São as variáveis que usamos para prever a variável dependente. Podemos ter uma ou várias variáveis independentes, representadas como “X1”, “X2”, …, “Xn” na equação.

  3. Equação de Regressão: A equação de regressão linear é uma expressão matemática que descreve como as variáveis independentes estão relacionadas à variável dependente. Em sua forma mais simples, a equação de regressão linear é:

    \[Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_nX_n + \epsilon\]

    • \(Y\) é a variável dependente.
    • \(\beta_0\) é o intercepto, que representa o valor esperado de \(Y\) quando todas as variáveis independentes são iguais a zero.
    • \(\beta_1, \beta_2, \ldots, \beta_n\) são os coeficientes de regressão, que representam como uma mudança em cada variável independente afeta \(Y\).
    • \(\epsilon\) é o termo de erro, que representa a variação não explicada pelo modelo.
  4. Objetivo da Regressão: O objetivo principal da regressão linear é estimar os valores dos coeficientes (\(\beta\)) de forma que a equação de regressão se ajuste melhor aos dados observados. Isso é feito minimizando a soma dos quadrados dos resíduos (diferença entre os valores observados e os valores previstos pelo modelo).

  5. Avaliação do Modelo: A qualidade do ajuste do modelo é avaliada usando várias estatísticas, como o coeficiente de determinação (\(R^2\)), que mede a proporção da variação na variável dependente explicada pelas variáveis independentes.

  6. Teste de Hipóteses: Testes de hipóteses são usados para determinar se os coeficientes de regressão são estatisticamente significativos. Os testes t ou F são comuns para avaliar a significância dos coeficientes e a adequação global do modelo.

  7. Previsão: Uma vez que o modelo é ajustado e avaliado, ele pode ser usado para fazer previsões. Você pode inserir valores para as variáveis independentes na equação de regressão para prever o valor da variável dependente.

A regressão linear é uma ferramenta poderosa para analisar dados e entender as relações entre variáveis. Ela é amplamente utilizada em diversas áreas, como economia, ciências sociais, engenharia e ciências naturais, para fazer previsões e tomar decisões com base em dados observados. Existem várias extensões da regressão linear, como a regressão linear múltipla, que envolve várias variáveis independentes, e a regressão linear ponderada, que lida com dados ponderados.

# Regressão linear
model1 <- lm(e0 ~ log(pib_pc), data = base3)
summary(model1)
## 
## Call:
## lm(formula = e0 ~ log(pib_pc), data = base3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.0900 -0.8962  0.1018  1.0202  3.4111 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept) 59.35233    0.76161   77.93 <0.0000000000000002 ***
## log(pib_pc)  1.65997    0.08369   19.83 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.481 on 851 degrees of freedom
## Multiple R-squared:  0.3161, Adjusted R-squared:  0.3153 
## F-statistic: 393.4 on 1 and 851 DF,  p-value: < 0.00000000000000022

Para calcular o coeficiente de determinação (R²) em um modelo de regressão linear no R, você pode usar a função summary() após ajustar o modelo usando a função lm(). O R² é uma medida que indica a proporção da variabilidade na variável de resposta que é explicada pelo modelo.

O teste individual dos parâmetros, também conhecido como teste de hipótese para coeficientes individuais, é uma parte fundamental da análise de regressão. Esse teste é usado para determinar se cada coeficiente estimado no modelo de regressão é estatisticamente significativo, ou seja, se ele contribui de forma significativa para explicar a variação na variável dependente. Vou explicar os passos envolvidos em um teste individual dos parâmetros:

  1. Formulação das Hipóteses:
    • Hipótese Nula (H0): A hipótese nula assume que o coeficiente do parâmetro é igual a zero, o que significa que a variável independente correspondente não tem efeito sobre a variável dependente.
    • Hipótese Alternativa (Ha): A hipótese alternativa afirma que o coeficiente do parâmetro é diferente de zero, o que significa que a variável independente tem um efeito significativo sobre a variável dependente.
  2. Cálculo da Estatística de Teste:
    • A estatística de teste depende do tipo de teste de hipótese usado. Em uma regressão linear comum, o teste t é frequentemente usado. A estatística de teste t para um coeficiente específico é calculada da seguinte forma:

      \[ t = \frac{\text{Estimativa do Coeficiente}}{\text{Erro Padrão do Coeficiente}} \]

  3. Determinação do Grau de Liberdade:
    • O grau de liberdade do teste t é igual ao número de observações menos o número de parâmetros estimados no modelo.
  4. Cálculo do Valor-p:
    • Usando a estatística de teste t e o grau de liberdade, é possível calcular o valor-p associado ao coeficiente do parâmetro. O valor-p é a probabilidade de observar um valor tão extremo quanto o valor observado da estatística de teste t, assumindo que a hipótese nula seja verdadeira.
  5. Tomada de Decisão:
    • Com base no valor-p calculado, você toma uma decisão estatística. Se o valor-p for menor que um nível de significância pré-determinado (geralmente 0,05), você rejeita a hipótese nula e conclui que o coeficiente do parâmetro é estatisticamente significativo. Caso contrário, se o valor-p for maior que o nível de significância, você não rejeita a hipótese nula e conclui que o coeficiente do parâmetro não é estatisticamente significativo.
  6. Interpretação dos Resultados:
    • Se você rejeitar a hipótese nula, isso significa que a variável independente correspondente tem um efeito estatisticamente significativo sobre a variável dependente. Se você não rejeitar a hipótese nula, isso sugere que a variável independente não tem um efeito estatisticamente significativo.

O teste individual dos parâmetros é útil para identificar quais variáveis independentes são importantes para o modelo e merecem ser mantidas na análise. Isso ajuda a simplificar o modelo, removendo variáveis que não contribuem significativamente para explicar a variação na variável dependente. No entanto, lembre-se de que a interpretação dos resultados também deve levar em consideração o contexto do problema e a teoria subjacente.

# Regressão múltipla
base3$log_pib_pc_2 <- log(base3$pib_pc)^2

model2 <- lm(e0 ~ log(pib_pc) + log_pib_pc_2, data = base3)
summary(model2)
## 
## Call:
## lm(formula = e0 ~ log(pib_pc) + log_pib_pc_2, data = base3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.5028 -0.8041  0.1052  0.9786  3.2513 
## 
## Coefficients:
##              Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)  -33.5875     6.7561  -4.971          0.000000804 ***
## log(pib_pc)   21.3800     1.4281  14.971 < 0.0000000000000002 ***
## log_pib_pc_2  -1.0399     0.0752 -13.828 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.339 on 850 degrees of freedom
## Multiple R-squared:  0.4417, Adjusted R-squared:  0.4404 
## F-statistic: 336.3 on 2 and 850 DF,  p-value: < 0.00000000000000022