J'ai une situation étrange avec Scipy.Stats.Lintregress semble retourner une erreur standard incorrecte: alors que Excel renvoie ce qui suit: p> 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 em>? P> p>
5 Réponses :
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. p>
Quoi qu'il en soit toujours à la recherche d'un équivalent à SteyX en Python. p>
l'AS-tu trouvé?
@ user32882 Il existe plusieurs réponses dans ce fil qui répondent à la question.
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
Brillant. Merci Ars. Exactement ce dont j'avais besoin.
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) p>
Stack Exchange ne gérait pas la latex mais le math est ici A > Si vous êtes intéressé, dans la position "Analyser des échantillons de données". p>
Le calcul de "STD ERR sur Y" dans Excel est en fait écart type fort> 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é. P>
Je vois. Merci.
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)