diff options
| author | Thibaut Horel <thibaut.horel@gmail.com> | 2012-03-02 02:01:39 -0800 |
|---|---|---|
| committer | Thibaut Horel <thibaut.horel@gmail.com> | 2012-03-02 02:30:56 -0800 |
| commit | ee2bb01590dd959cc0c844daceb9d9819a3d5679 (patch) | |
| tree | 6903fdf4cf9de3208830ff3d9c06d7f4ea219aad /data/normality.py | |
| parent | d63de51bea837d66aabb22a755a8215212782e9d (diff) | |
| download | kinect-ee2bb01590dd959cc0c844daceb9d9819a3d5679.tar.gz | |
Normality testing
Diffstat (limited to 'data/normality.py')
| -rwxr-xr-x | data/normality.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/data/normality.py b/data/normality.py new file mode 100755 index 0000000..eb22553 --- /dev/null +++ b/data/normality.py @@ -0,0 +1,40 @@ +import sys +import numpy as np +from scipy.stats import lognorm +import math + +def normtest(x): + x = np.matrix(x) + s = np.matrix(np.cov(x,bias=1,rowvar=0)) + n,p = x.shape + dift = x - np.mean(x,axis=0) + dj = np.diag(dift*s.I*dift.T) + y = x*s.I*x.T + djk = - 2*y.T + np.diag(y.T).T*np.ones((1,n)) + np.ones((n,1))*np.diag(y.T) + b = 1/(math.sqrt(2))*((2*p + 1)/4)**(1/(p + 4))*(n**(1/(p + 4))) + + if (np.rank(s) == p): + hz = n * (1/(n**2) * np.sum(np.sum(np.exp( - (b**2)/2 * djk))) - 2 * + ((1 + (b**2))**( - p/2)) * (1/n) * (np.sum(np.exp( - ((b**2)/(2 * + (1 + (b**2)))) * dj))) + ((1 + (2 * (b**2)))**( - p/2))) + else: + hz = n*4 + + wb = (1 + b**2)*(1 + 3*b**2) + a = 1 + 2*b**2 + mu = 1 - a**(- p/2)*(1 + p*b**2/a + (p*(p + 2)*(b**4))/(2*a**2)) + si2 = 2*(1 + 4*b**2)**(- p/2) + 2*a**( - p)*(1 + (2*p*b**4)/a**2 + (3*p* + (p + 2)*b**8)/(4*a**4)) - 4*wb**( - p/2)*(1 + (3*p*b**4)/(2*wb) + (p* + (p + 2)*b**8)/(2*wb**2)) + + pmu = math.log(math.sqrt(mu**4/(si2 + mu**2))) + psi = math.sqrt(math.log((si2 + mu**2)/mu**2)) + p = 1 - lognorm.cdf(hz,psi,scale=math.exp(pmu)) + return p + +if __name__ == "__main__": + filename = sys.argv[1] + x = np.loadtxt(filename,delimiter=",") + x = x[:10,7:] + p = normtest(x) + print p |
