[Scipy-svn] r3948 - trunk/scipy/stats/models
scipy-svn at scipy.org
scipy-svn at scipy.org
Tue Feb 19 16:13:14 EST 2008
Author: jonathan.taylor
Date: 2008-02-19 15:13:12 -0600 (Tue, 19 Feb 2008)
New Revision: 3948
Modified:
trunk/scipy/stats/models/contrast.py
Log:
clarifying doc string
Modified: trunk/scipy/stats/models/contrast.py
===================================================================
--- trunk/scipy/stats/models/contrast.py 2008-02-19 21:06:08 UTC (rev 3947)
+++ trunk/scipy/stats/models/contrast.py 2008-02-19 21:13:12 UTC (rev 3948)
@@ -98,9 +98,9 @@
self.rank = 1
-def contrastfromcols(T, D, pseudo=None):
+def contrastfromcols(L, D, pseudo=None):
"""
- From an n x p design matrix D and a matrix T, tries
+ From an n x p design matrix D and a matrix L, tries
to determine a p x q contrast matrix C which
determines a contrast of full rank, i.e. the
n x q matrix
@@ -109,39 +109,46 @@
is full rank.
- T must satisfy either T.shape[0] == n or T.shape[1] == p.
+ L must satisfy either L.shape[0] == n or L.shape[1] == p.
+ If L.shape[0] == n, then L is thought of as representing
+ columns in the column space of D.
+
+ If L.shape[1] == p, then L is thought of as what is known
+ as a contrast matrix. In this case, this function returns an estimable
+ contrast corresponding to the dot(D, L.T)
+
Note that this always produces a meaningful contrast, not always
with the intended properties because q is always non-zero unless
- T is identically 0. That is, it produces a contrast that spans
- the column space of T (after projection onto the column space of D).
+ L is identically 0. That is, it produces a contrast that spans
+ the column space of L (after projection onto the column space of D).
"""
- T = N.asarray(T)
+ L = N.asarray(L)
D = N.asarray(D)
n, p = D.shape
- if T.shape[0] != n and T.shape[1] != p:
- raise ValueError, 'shape of T and D mismatched'
+ if L.shape[0] != n and L.shape[1] != p:
+ raise ValueError, 'shape of L and D mismatched'
if pseudo is None:
pseudo = pinv(D)
- if T.shape[0] == n:
- C = N.dot(pseudo, T).T
+ if L.shape[0] == n:
+ C = N.dot(pseudo, L).T
else:
- C = T
+ C = L
C = N.dot(pseudo, N.dot(D, C.T)).T
- Tp = N.dot(D, C.T)
+ Lp = N.dot(D, C.T)
- if len(Tp.shape) == 1:
- Tp.shape = (n, 1)
+ if len(Lp.shape) == 1:
+ Lp.shape = (n, 1)
- if utils.rank(Tp) != Tp.shape[1]:
- Tp = utils.fullrank(Tp)
- C = N.dot(pseudo, Tp).T
+ if utils.rank(Lp) != Lp.shape[1]:
+ Lp = utils.fullrank(Lp)
+ C = N.dot(pseudo, Lp).T
return N.squeeze(C)
More information about the Scipy-svn
mailing list