Régressions avec le module Rpy2

en langage python

Le module Rpy2 sous python permet de faire des régressions en exploitant les fonctionnalités de R

1- Installer Rpy2

1.1- Installer pip qui permettra d'installer Rpy2

Suivre ce lien pour télécharger le programme get-pip.py puis taper le code suivant dans la console Windows : en modifiant mon_dossier...

python C:/mon_dossier/get-pip.py

pip - V

1.2- Installer Rpy2 grâce à pip

Suivre ce lien pour télécharger Rpy2 (trouver la dernière version au format .whl) puis taper le code suivant dans la console windows pour finir l'installation :

pip install C:/Users/apcma/Desktop/rpy2/rpy2-2.9.5-cp37-cp37m-win32.whl

2- Lancer Rpy2 sous python

import rpy2.robjects as rr

print(rr.r['pi'])

x = rr.FloatVector([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]) # Un vecteur X

y = rr.FloatVector([1.8, 2.5, 3.3, 4.0, 5.2, 6]) # Un vecteur Y

print(x) ; print(y)

# Tracer le graphique

##########################

rr.r.X11()

rr.r.plot(x,y,pch=16,col="red")

3- Mettre en place la régression linéaire

from rpy2.robjects.packages import importr # Fonction importr de chargement de librairies et des fonctions associées

stats = importr('stats')

rr.globalenv["x"] = x

rr.globalenv["y"] = y

myreg = stats.lm("y ~ x")

# Tracer le graphique + la régression

rr.r.X11()

rr.r.plot(x,y,pch=16,col="blue",cex=3)

rr.r.abline(myreg,col="red",lwd=3)


4- Contrôler le modèle de régression

# Afficher le bilan de la régression

base = importr('base')

print(base.summary(myreg))

print(myreg.names)

coeff = myreg.rx2('coefficients') ; print(coeff) # Coefficients de la régression

# Afficher le bilan graphique

#rr.r.plot(myreg) # L'écriture automatique habituelle (sous R : plot(myreg) fait planter python : on va donc décomposer

# On peut signaler un bug : les titres correspondent toujours au titre du graphique suivant...

rr.r.X11()

rr.r.layout(rr.r.matrix(rr.IntVector([1,2,3,4,5,6]), nrow=2, ncol=3))

rr.r.plot(myreg, which = 1)

rr.r.plot(myreg, which = 2)

rr.r.plot(myreg, which = 3)

rr.r.plot(myreg, which = 4)

rr.r.plot(myreg, which = 5)

rr.r.plot(myreg, which = 6)

Pour comprendre ces graphiques et s'assurer que la régression est bonne suivre le lien suivant : Aide à l'utilisation de R : régressions linéaires