7
votes

Scipy Lintregress Fonction Erreur standard erronée Retourner?

J'ai une situation étrange avec Scipy.Stats.Lintregress semble retourner une erreur standard incorrecte: xxx

alors que Excel renvoie ce qui suit: xxx

SteyX est la fonction d'erreur standard d'Excel, renvoyant 11,696 versus 3,63 Scipy. Quelqu'un sait ce qui se passe ici? Toute solution alternative d'obtenir l'erreur standard d'une régression dans Python, sans aller à rby ?


0 commentaires

5 Réponses :


8
votes

Je viens d'être informé par le groupe d'utilisateurs sciples que le STD_ERR représente ici l'erreur standard de la ligne de gradient, et non l'erreur standard des y prédits, selon Excel. Néanmoins, les utilisateurs de cette fonction devraient faire attention, car ce n'était pas toujours le comportement de cette bibliothèque - il utilisait exactement comme Excel, et le changement semble avoir eu lieu au cours des derniers mois.

Quoi qu'il en soit toujours à la recherche d'un équivalent à SteyX en Python.


2 commentaires

l'AS-tu trouvé?


@ user32882 Il existe plusieurs réponses dans ce fil qui répondent à la question.



6
votes

Vous pouvez essayer le STATSModels Package:

In [37]: import statsmodels.api as sm

In [38]: x = [5.05, 6.75, 3.21, 2.66]

In [39]: y = [1.65, 26.5, -5.93, 7.96]

In [40]: X = sm.add_constant(x) # intercept

In [41]: model = sm.OLS(y, X)

In [42]: fit = model.fit()

In [43]: fit.params
Out[43]: array([  5.39357736, -16.28112799])

In [44]: fit.rsquared
Out[44]: 0.52480627513624789

In [45]: np.sqrt(fit.mse_resid)
Out[45]: 11.696414461570097


1 commentaires

Brillant. Merci Ars. Exactement ce dont j'avais besoin.



2
votes

Oui, c'est vrai - l'estimation standard du gradient est ce que la lintregress revient; L'estimation standard de l'estimation (y) est liée, cependant, et vous pouvez revenir dans la vue en multipliant l'erreur standard du gradient (SEG) que la lintregress vous donne: Seg = voir / sqrt (somme de (x - moyenne X) ** 2)

Stack Exchange ne gérait pas la latex mais le math est ici Si vous êtes intéressé, dans la position "Analyser des échantillons de données".


0 commentaires

0
votes

Le calcul de "STD ERR sur Y" dans Excel est en fait écart type de valeurs de y.

C'est la même chose pour STD ERR sur x. Le nombre "2" à l'étape finale est le degré de liberté d'exemple que vous avez donné. xxx


1 commentaires

Je vois. Merci.



1
votes

Cela vous donnera un équivalent à SteyX en utilisant Python:

fit = np.polyfit(x,y,deg=1)
n = len(x)
m = fit[0]
c = fit[1]
y_pred = m*x+c
STEYX = (((y-y_pred)**2).sum()/(n-2))**0.5
print(STEYX)


0 commentaires