Pourquoi est-ce que je n'obtiens qu'un seul paramètre d'un ajustement de statsmodels OLS

voici ce que je fais:

$ python
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
>>> import statsmodels.api as sm
>>> statsmodels.__version__
'0.5.0'
>>> import numpy 
>>> y = numpy.array([1,2,3,4,5,6,7,8,9])
>>> X = numpy.array([1,1,2,2,3,3,4,4,5])
>>> res_ols = sm.OLS(y, X).fit()
>>> res_ols.params
array([ 1.82352941])

j'avais prévu un tableau avec deux éléments?!? L'ordonnée à l'origine et le coefficient de pente?

22
demandé sur Tom 2013-12-20 14:27:10

4 réponses

essaye ceci:

X = sm.add_constant(X)
sm.OLS(y,X)

comme dans l' documentation:

Une interception n'est pas inclus par défaut et doit être ajouté par l'utilisateur

statsmodels.tools.tools.add_constant

33
répondu behzad.nouri 2018-08-18 00:53:32

Juste pour être complet, ceci fonctionne:

>>> import numpy 
>>> import statsmodels.api as sm
>>> y = numpy.array([1,2,3,4,5,6,7,8,9])
>>> X = numpy.array([1,1,2,2,3,3,4,4,5])
>>> X = sm.add_constant(X)
>>> res_ols = sm.OLS(y, X).fit()
>>> res_ols.params
array([-0.35714286,  1.92857143])

il me donne un coefficient de pente différent, mais je suppose que les chiffres comme nous avons maintenant une interception.

6
répondu Tom 2016-09-19 12:05:17

j'exécute 0.6.1 et il semble que la fonction" add_constant " ait été déplacée dans les modèles de statistiques.module outils. Voici ce que j'ai couru qui a fonctionné:

res_ols = sm.OLS(y, statsmodels.tools.add_constant(X)).fit()
0
répondu lukearmistead 2015-09-25 05:28:27

Essayez cela, il a travaillé pour moi:

import statsmodels.formula.api as sm

from statsmodels.api import add_constant

X_train = add_constant(X_train)

X_test = add_constant(X_test)


model = sm.OLS(y_train,X_train)

results = model.fit()

y_pred=results.predict(X_test)

results.params
0
répondu sup 2018-10-05 19:22:54