[Scipy-svn] r5593 - trunk/scipy/stats
scipy-svn at scipy.org
scipy-svn at scipy.org
Tue Feb 24 14:53:21 EST 2009
Author: josef
Date: 2009-02-24 13:53:18 -0600 (Tue, 24 Feb 2009)
New Revision: 5593
Modified:
trunk/scipy/stats/stats.py
Log:
small rewrite of stats.linregress
Modified: trunk/scipy/stats/stats.py
===================================================================
--- trunk/scipy/stats/stats.py 2009-02-24 00:52:17 UTC (rev 5592)
+++ trunk/scipy/stats/stats.py 2009-02-24 19:53:18 UTC (rev 5593)
@@ -1768,9 +1768,11 @@
n = len(x)
xmean = np.mean(x,None)
ymean = np.mean(y,None)
- xm,ym = x-xmean, y-ymean
- r_num = np.add.reduce(xm*ym)
- r_den = np.sqrt(ss(xm)*ss(ym))
+
+ # average sum of squares:
+ ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat
+ r_num = ssxym
+ r_den = np.sqrt(ssxm*ssym)
if r_den == 0.0:
r = 0.0
else:
@@ -1779,10 +1781,10 @@
#z = 0.5*log((1.0+r+TINY)/(1.0-r+TINY))
df = n-2
t = r*np.sqrt(df/((1.0-r+TINY)*(1.0+r+TINY)))
- prob = betai(0.5*df,0.5,df/(df+t*t))
- slope = r_num / ss(xm)
+ prob = distributions.t.sf(np.abs(t),df)*2
+ slope = r_num / ssxm
intercept = ymean - slope*xmean
- sterrest = np.sqrt((1-r*r)*ss(ym) / ss(xm) / df)
+ sterrest = np.sqrt((1-r*r)*ssym / ssxm / df)
return slope, intercept, r, prob, sterrest
More information about the Scipy-svn
mailing list