def FdCalc(self, Aoptimality=True):
'''
Compute detection power.
:param Aoptimality: Kind of optimality to optimize: A- or D-optimality
:type Aoptimality: boolean
'''
try:
invM = scipy.linalg.inv(self.Z)
except scipy.linalg.LinAlgError:
try:
invM = scipy.linalg.pinv(self.Z)
except np.linalg.linalg.LinAlgError:
invM = np.nan
sys.exc_clear()
invM = np.array(invM)
CMC = np.matrix(self.C) * invM * np.matrix(t(self.C))
if Aoptimality == True:
self.Fd = float(len(self.C) / np.matrix.trace(CMC))
else:
self.Fd = float(np.linalg.det(CMC)**(-1 / len(self.C)))
self.Fd = self.Fd / self.experiment.FdMax
return self
评论列表
文章目录