NIPY logo

Site Navigation

NIPY Community

Table Of Contents

This Page

neurospin.utils.emp_null

Module: neurospin.utils.emp_null

Inheritance diagram for nipy.neurospin.utils.emp_null:

this module contains a class that fits a gaussian model to the central part of an histogram, following schwartzman et al, 2009. This is typically necessary to estimate a fdr when one is not certain that the data behaves as a standard normal under H_0.

Author : Bertrand Thirion, 2008-2009

Classes

ENN

class nipy.neurospin.utils.emp_null.ENN(x)

Bases: object

Class to compute the empirical null normal fit to the data.

The data which is used to estimate the FDR, assuming a gaussian null from Schwartzmann et al., NeuroImage 44 (2009) 71–82

Methods

fdr
fdrcurve
learn
plot
threshold
uncorrected_threshold
__init__(x)

Initiate an empirical null normal object.

Parameters :

x : 1D ndarray

The data used to estimate the empirical null.

fdr(theta)

given a threshold theta, find the estimated fdr

fdrcurve()

Returns the fdr associated with any point of self.x

learn(left=0.2, right=0.8)

Estimate the proportion, mean and variance of a gaussian distribution for a fraction of the data

Parameters :

left : float, optional

Left cut parameter to prevent fitting non-gaussian data

right : float, optional

Right cut parameter to prevent fitting non-gaussian data

Notes

This method stores the following attributes:
  • mu = mu
  • p0 = min(1, np.exp(lp0))
  • sqsigma : standard deviation of the estimated normal distribution
  • sigma = np.sqrt(sqsigma) : variance of the estimated normal distribution
plot(efp=None, alpha=0.05, bar=1, mpaxes=None)

plot the histogram of x

Parameters :

efp : float, optional

The empirical fdr (corresponding to x) if efp==None, the false positive rate threshod plot is not drawn.

alpha : float, optional

The chosen fdr threshold

bar=1 : bool, optional

mpaxes=None: if not None, handle to an axes where the fig. :

will be drawn. Avoids creating unnecessarily new figures. :

threshold(alpha=0.05, verbose=0)

Compute the threshold correponding to an alpha-level fdr for x

Parameters :

alpha : float, optional

the chosen false discovery rate threshold.

verbose : boolean, optional

the verbosity level, if True a plot is generated.

uncorrected_threshold(alpha=0.001, verbose=0)

Compute the threshold correponding to a specificity alpha for x

Parameters :

alpha : float, optional

the chosen false discovery rate threshold.

verbose : boolean, optional

the verbosity level, if True a plot is generated.

FDR

class nipy.neurospin.utils.emp_null.FDR(x)

Bases: object

This is the basic class to handle false discovery rate computation parameter: fdr.x the samples from which the fdr is derived x is assumed to be a normal variate

The Benjamini-Horchberg procedure is used

Methods

all_fdr
all_fdr_from_pvals
check_pv
pth_from_pvals
threshold
threshold_from_student
__init__(x)

x is assumed to be a 1-d array

all_fdr(x=None, verbose=0)

Returns all the FDR (false discovery rates) values for the sample x

Parameters :

x : ndarray of shape (n)

The normal variates

all_fdr_from_pvals(pv, verbose=0)

Returns the fdr associated with each the values

Parameters :

pv : ndarray of shape (n)

The samples p-value

Returns :

q : array of shape(n)

The corresponding fdrs

check_pv(pv)

Do some basic checks on the pv array: each value should be within [0,1]

Parameters :

pv : array of shape (n)

The sample p-values

Returns :

pv : array of shape (n)

The sample p-values

pth_from_pvals(pv, alpha=0.05)

Given a set pv of p-values, returns the critical p-value associated with an FDR alpha

Parameters :

alpha : float

The desired FDR significance

pv : array of shape (n)

The samples p-value

Returns :

pth: float :

The p value corresponding to the FDR alpha

threshold(alpha=0.05, x=None)

Given an array x of normal variates, this function returns the critical p-value associated with alpha. x is explicitly assumed to be normal distributed under H_0

Parameters :

alpha: float, optional :

The desired significance, by default 0.05

x : ndarray, optional

The variate. By default self.x is used

Returns :

th : float

The threshold in variate value

threshold_from_student(df, alpha=0.05, x=None)

Given an array t of student variates with df dofs, returns the critical p-value associated with alpha.

Parameters :

df : float

The number of degrees of freedom

alpha : float, optional

The desired significance

x : ndarray, optional

The variate. By default self.x is used

Returns :

th : float

The threshold in variate value

Functions

nipy.neurospin.utils.emp_null.Gamma_Gaussian_fit(x, test=None, verbose=0, mpaxes=None, bias=1, gaussian_mix=0, return_estimator=False)

Computing some prior probabilities that the voxels of a certain map are in class disactivated, null or active uning a gamma-Gaussian mixture

Parameters :

x: array of shape (nvox,) :

the map to be analysed

test: array of shape (nbitems,), optional :

the test values for which the p-value needs to be computed by default, test = x

verbose: 0, 1 or 2, optional :

verbosity mode, 0 is quiet, and 2 calls matplotlib to display graphs.

mpaxes: matplotlib axes, option. :

axes handle used to plot the figure in verbose mode if None, new axes are created

bias: float, optional :

lower bound on the gaussian variance (to avoid shrinkage)

gaussian_mix: float, optional :

if nonzero, lower bound on the gaussian mixing weight (to avoid shrinkage)

return_estimator: boolean, optional :

If return_estimator is true, the estimator object is returned.

Returns :

bfp: array of shape (nbitems,3) :

The probability of each component in the mixture model for each test value

estimator: nipy.neurospin.clustering.ggmixture.GGGM object :

The estimator object, returned only if return_estimator is true.

nipy.neurospin.utils.emp_null.smoothed_histogram_from_samples(x, bins=None, nbins=256, normalized=False)

Returns the smooth histogram corresponding to the density underlying the smples in x

Parameters :

x: array of shape(n_samples), :

input data

bins: array of shape(nbins+1), optional, :

the bins location

nbins: int, optional, :

the number of bins of the resulting histogram

Normalized: bool, optional :

if True, the result is returned as a density value

Returns :

h: array of shape (nbins) :

the histogram

bins: array of shape(nbins+1), :

the bins location

nipy.neurospin.utils.emp_null.three_classes_GMM_fit(x, test=None, alpha=0.01, prior_strength=100, verbose=0, fixed_scale=False, mpaxes=None, bias=0, theta=0, return_estimator=False)
Fit the data with a 3-classes Gaussian Mixture Model,

i.e. computing some probability that the voxels of a certain map are in class disactivated, null or active

Parameters :

x array of shape (nvox,1): the map to be analysed :

test=None array of shape(nbitems,1): :

the test values for which the p-value needs to be computed by default, test=x

alpha = 0.01 the prior weights of the positive and negative classes :

prior_strength = 100 the confidence on the prior :

(should be compared to size(x))

verbose=0 : verbosity mode

fixed_scale = False, boolean, variance parameterization :

if True, the variance is locked to 1 otherwise, it is estimated from the data

mpaxes=None: axes handle used to plot the figure in verbose mode :

if None, new axes are created

bias = 0: allows a recaling of the posterior probability :

that takes into account the thershold theta. Not rigorous.

theta = 0 the threshold used to correct the posterior p-values :

when bias=1; normally, it is such that test>theta note that if theta = -np.infty, the method has a standard behaviour

return_estimator: boolean, optional :

If return_estimator is true, the estimator object is returned.