2012-09-01 3 views
2

Je suis un grand fan de Stack Overflow et je suis sûr que ma question sera traitée ici. J'utilise Scipy pour faire une régression linéaire. Mais à un ensemble particulier d'entrées, je ne reçois pas la bonne sortie. (Python 2.5, SciPy 0.10.1 Windows 7 32 bits)Linregress donnant un résultat incorrect

from scipy.stats import linregress 
from numpy import arange 
x = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,2,0,0,2] 
y = arange(1,36) 
s,i,r,p,st = linregress(x,y) 

ici valeur de s est comme 9,241573, mais les rapports Excel pente à 0,026.

Ai-je raté quelque chose? Aidez-moi.

+0

Cela aide-t-il si vous faites x à un tableau numpy? 'x = numpy.array ([0,0, ...])' Ne pas oublier d'importer numpy :) – halex

+0

@halex - J'ai essayé, mais non - ce n'est pas le cas. linregress traite à la fois les tableaux chiffrés et les tableaux pythoniques. – PKG

Répondre

4

Vous semblez avoir des arguments à l'envers:

s,i,r,p,st = linregress(y,x) 

donne s = 0.026330532212885151. Excel et Scipy ont les arguments dans l'ordre inverse.

+0

C'est intéressant. Excel dit 'SLOPE (y, x)' et scipy dit 'linregress (x, y)' ... Cependant, 'SLOPE (y, x) = linregress (y, x)'. – Onlyjus

+0

Les noms de variable de 'x' et' y' dans la question sont également échangés –

+1

lol. Quelqu'un va lire ceci et devenir vraiment confus ... – Onlyjus