Primeiro vou importar as bibliotecas padrão.
import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'
import numpy as np
import pandas as pd
import statsmodels.formula.api as sm
Criei uma função para pegar os dados do Banco Central.
def get_bcb(cod_bcb):
url = 'http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados?formato=json'.format(cod_bcb)
df = pd.read_json(url)
df['data'] = pd.to_datetime(df['data'], dayfirst=True)
df.set_index('data', inplace=True)
return df
Agora vou obter os dados do desemprego:
des = get_bcb(24369)/100 # 24369 is the code of PNADC
des.columns=['des']
des.head() # head of data
## des
## data
## 2012-03-01 0.079
## 2012-04-01 0.077
## 2012-05-01 0.076
## 2012-06-01 0.075
## 2012-07-01 0.074
O próximo passo é obter a primeira diferença do desemprego.
ddes = des.diff()
ddes.describe()
## des
## count 97.000000
## mean 0.000485
## std 0.002821
## min -0.004000
## 25% -0.002000
## 50% 0.000000
## 75% 0.003000
## max 0.007000
Agora vou obter dados do PIB brasileiro.
GDP = get_bcb(4385)
GDP = GDP['20120301':'20200401']
pd.DataFrame.describe(GDP)
## valor
## count 98.000000
## mean 172041.448980
## std 27228.822663
## min 109696.000000
## 25% 150857.250000
## 50% 161064.000000
## 75% 203267.000000
## max 216197.000000
Então vou calcular o crescimento do PIB.
gy = GDP.pct_change() # growth
gy.describe()
## valor
## count 97.000000
## mean -0.005110
## std 0.052594
## min -0.278206
## 25% -0.025265
## 50% -0.001826
## 75% 0.017671
## max 0.099140
Vou concatenar os dois data frames para fazer um gráfico utilizando o ggplot.
dt = pd.concat([ddes, gy], axis=1) # concatenate two dfs
dt.columns = ['ddes', 'gy'] # change colnames
dt.head()
## ddes gy
## data
## 2012-03-01 NaN NaN
## 2012-04-01 -0.002 -0.041689
## 2012-05-01 -0.001 0.031541
## 2012-06-01 -0.001 -0.016582
## 2012-07-01 -0.001 0.041627
Umas das coisas mais legais do Rmarkdown é poder utilizar o ggplot com variáveis Python. Um pacote semelhante ao ggplot para o Python é o plotnine. Aqui, fiz um scatter plot entre variação do desemprego e crescimento do PIB brasileiro.
ggplot(py$dt, mapping=aes(x=ddes, y=gy)) +geom_point()+ geom_smooth(method = 'lm',formula = y~x, color='black', se=F)
A regressão pode ser vista abaixo.
reg = sm.ols('ddes ~ gy', data=dt).fit()
print(reg.summary())
## OLS Regression Results
## ==============================================================================
## Dep. Variable: ddes R-squared: 0.001
## Model: OLS Adj. R-squared: -0.010
## Method: Least Squares F-statistic: 0.07626
## Date: Sat, 27 Jun 2020 Prob (F-statistic): 0.783
## Time: 17:58:32 Log-Likelihood: 432.34
## No. Observations: 97 AIC: -860.7
## Df Residuals: 95 BIC: -855.5
## Df Model: 1
## Covariance Type: nonrobust
## ==============================================================================
## coef std err t P>|t| [0.025 0.975]
## ------------------------------------------------------------------------------
## Intercept 0.0005 0.000 1.702 0.092 -8.19e-05 0.001
## gy 0.0015 0.006 0.276 0.783 -0.009 0.012
## ==============================================================================
## Omnibus: 11.515 Durbin-Watson: 0.651
## Prob(Omnibus): 0.003 Jarque-Bera (JB): 9.547
## Skew: 0.671 Prob(JB): 0.00845
## Kurtosis: 2.252 Cond. No. 19.1
## ==============================================================================
##
## Warnings:
## [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.