J'essaie de calculer une sortie de régression en utilisant la bibliothèque python mais je ne peux pas; e pour obtenir la valeur d'interception lorsque j'utilise la bibliothèque:
import statsmodels.api as sm
Il imprime toute l'analyse de régression à l'exception de l'interception.
mais quand j'utilise:
from pandas.stats.api import ols
Mon code pour les pandas:
Regression = ols(y= Sorted_Data3['net_realization_rate'],x = Sorted_Data3[['Cohort_2','Cohort_3']])
print Regression
Je reçois l'interception avec un avertissement que cette librabry sera obsolète à l'avenir, donc j'essaie d'utiliser Statsmodels.
l'avertissement que je reçois en utilisant pandas.stats.api:
Avertissement (depuis le module d'avertissements): Fichier "C:\Python27\lib\idlelib\run.py", ligne 325 code d'exécution dans self.locals FutureWarning: Le module pandas.stats.ols est obsolète et sera supprimé dans une future version . Nous nous référons à des packages externes comme statsmodels, voir quelques exemples ici: http://statsmodels.sourceforge.net/stable/regression.html
Mon code pour Statsmodels:
import pandas as pd
import numpy as np
from pandas.stats.api import ols
import statsmodels.api as sm
Data1 = pd.read_csv('C:\Shank\Regression.csv') #Importing CSV
print Data1
exécuter un code de nettoyage
sm_model = sm.OLS(Sorted_Data3['net_realization_rate'],Sorted_Data3[['Cohort_2','Cohort_3']])
results = sm_model.fit()
print '\n'
print results.summary()
J'ai même essayé statsmodels.formula.api: as:
sm_model = sm.OLS(formula ="net_realization_rate ~ Cohort_2 + Cohort_3", data = Sorted_Data3)
results = sm_model.fit()
print '\n'
print result.params
print '\n'
print results.summary()
mais je reçois l'erreur:
TypeError: init () prend au moins 2 arguments (1 donné)
Sortie finale: 1er est de pandas 2e est de Stats .... Je veux le vaule d'interception comme celui de pandas de stats aussi:
Ainsi, statsmodels
a un add_constant
méthode que vous devez utiliser pour ajouter explicitement des valeurs d'interception. À mon humble avis, c'est mieux que l'alternative R où l'interception est ajoutée par défaut.
Dans votre cas, vous devez faire ceci:
import statsmodels.api as sm
endog = Sorted_Data3['net_realization_rate']
exog = sm.add_constant(Sorted_Data3[['Cohort_2','Cohort_3']])
# Fit and summarize OLS model
mod = sm.OLS(endog, exog)
results = mod.fit()
print results.summary()
Notez que vous pouvez ajouter une constante avant votre tableau ou après en passant True
(par défaut) ou False
au prepend
kwag dans sm.add_constant
Ou, non recommandé, mais vous pouvez utiliser Numpy pour ajouter explicitement une colonne constante comme ceci:
exog = np.concatenate((np.repeat(1, len(Sorted_Data3))[:, None],
Sorted_Data3[['Cohort_2','Cohort_3']].values),
axis = 1)
Vous pouvez également faire quelque chose comme ceci:
df['intercept'] = 1
Ici, vous créez explicitement une colonne pour l'interception.
Ensuite, vous pouvez simplement utiliser la méthode sm.OLS comme ceci:
lm = sm.OLS(df['y_column'], df[['intercept', 'x_column']])
results = lm.fit()
results.summary()