Régressions linéaires simples

Analyse des séries chronologiques en Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

Qu'est-ce qu'une régression ?

  • Régression linéaire simple :

$\ \ \ \ y_t = \alpha + \beta x_t + \epsilon_t$

Analyse des séries chronologiques en Python

Qu'est-ce qu'une régression ?

  • Moindres carrés ordinaires (OLS)
Analyse des séries chronologiques en Python

Paquetages Python pour effectuer des régressions

  • Dans statsmodels :
    import statsmodels.api as sm
    sm.OLS(y, x).fit()
    
  • Dans numpy :
    np.polyfit(x, y, deg=1)
    
  • Dans pandas :
    pd.ols(y, x)
    
  • Dans scipy :
    from scipy import stats
    stats.linregress(x, y)
    

Attention : l'ordre de x et y n'est pas uniforme selon les paquetages

Analyse des séries chronologiques en Python

Exemple : rendement des petites capitalisations sur les grandes

  • Importer le module statsmodels
    import statsmodels.api as sm
    
  • Comme précédemment, calculer les variations en pourcentage des deux séries
    df['SPX_Ret'] = df['SPX_Prices'].pct_change()
    df['R2000_Ret'] = df['R2000_Prices'].pct_change()
    
  • Ajouter une constante au DataFrame pour l'ordonnée à l'origine
    df = sm.add_constant(df)
    
Analyse des séries chronologiques en Python

Exemple de régression (suite)

  • Remarquez que la première ligne de rendements est NaN
                SPX_Price  R2000_Price   SPX_Ret  R2000_Ret
    Date                                                     
    2012-11-01  1427.589966   827.849976       NaN        NaN
    2012-11-02  1414.199951   814.369995 -0.009379  -0.016283
    
  • Supprimer la ligne de NaN
      df = df.dropna()
    
  • Exécuter la régression
      results = sm.OLS(df['R2000_Ret'],df[['const','SPX_Ret']]).fit()
      print(results.summary())
    
Analyse des séries chronologiques en Python

Exemple de régression (suite)

  • Résultat de la régression

  • Interception dans results.params[0]
  • Pente dans results.params[1]
Analyse des séries chronologiques en Python

Exemple de régression (suite)

  • Résultat de la régression

Analyse des séries chronologiques en Python

Lien entre R-carré et corrélation

  • $ [\text{corr} (x,y)]^2 = R^2$ (ou R-carré)
  • $ \text{sign(corr)} = \text{sign(regression slope)}$
  • Dans le dernier exemple :
    • R-carré = 0,753
    • Pente positive
    • corrélation = $ + \sqrt{0.753} = 0.868$
Analyse des séries chronologiques en Python

Passons à la pratique !

Analyse des séries chronologiques en Python

Preparing Video For Download...