web-dev-qa-db-fra.com

Comment extraire le coefficient de régression de statsmodels.api?

 result = sm.OLS(gold_lookback, silver_lookback ).fit()

Après avoir obtenu le résultat, comment puis-je obtenir le coefficient et la constante?

En d'autres termes, si y = ax + c comment obtenir les valeurs a et c?

8
JOHN

Vous pouvez utiliser la propriété params d'un modèle ajusté pour obtenir les coefficients.

Par exemple, le code suivant:

import statsmodels.api as sm
import numpy as np
np.random.seed(1)
X = sm.add_constant(np.arange(100))
y = np.dot(X, [1,2]) + np.random.normal(size=100)
result = sm.OLS(y, X).fit()
print(result.params)

vous affichera un tableau numpy [ 0.89516052 2.00334187] - estimations de l'interception et de la pente respectivement.

Si vous souhaitez plus d'informations, vous pouvez utiliser l'objet result.summary() qui contient 3 tableaux détaillés avec description du modèle.

13
David Dale

Cribbing from this answer Conversion de l'objet récapitulatif des modèles de statistiques en Pandas Dataframe , il semble que le result.summary () soit un ensemble de tables, que vous pouvez exporter en html et puis utilisez Pandas pour convertir en un dataframe, ce qui vous permettra d'indexer directement les valeurs souhaitées.

Donc, pour votre cas (en mettant la réponse du lien ci-dessus sur une seule ligne):

df = pd.read_html(result.summary().tables[1].as_html(),header=0,index_col=0)[0]

Et alors

a=df['coef'].values[1]
c=df['coef'].values[0]
0
Idiot Tom