Skip to content

neurostatx.statistics.models

Classes

NameDescription
GAD7LabelerAssign GAD-7 severity labels from the seven questionnaire items.
PHQ9LabelerAssign PHQ-9 severity labels from the nine questionnaire items.
PenaltyRegularization penalties for logistic regression.
ScoringMethodsklearn scoring names accepted by permutation testing.
Solversklearn LogisticRegression solver names.

Functions

NameDescription
permutation_testingPermutation-test an estimator's score and coefficients.
plsr_cvFit a PLSR model and choose the component count by cross-validation.

GAD7Labelerclass#

class GAD7Labeler()

Assign GAD-7 severity labels from the seven questionnaire items.

fitmethod#

def fit(X, y=None)

Label GAD-7 item scores.

Delegates to transform.

Parameters

NameTypeDefaultDescription
Xpd.DataFramerequiredItem scores of shape (n_samples, 7).
ypd.SeriesNoneUnused target, kept for sklearn compatibility.

Returns

labelspd.Series
Severity labels returned by transform.

Examples

>>> import pandas as pd
>>> from neurostatx.statistics.models import GAD7Labeler
>>> X = pd.DataFrame([[0] * 7])
>>> GAD7Labeler().fit(X).iloc[0]
'Subthreshold'

transformmethod#

def transform(X)

Assign a GAD-7 severity label to each row.

Labels are Subthreshold, Mild, Moderate, or Severe.

Parameters

NameTypeDescription
Xpd.DataFrameItem scores of shape (n_samples, 7).

Returns

labelspd.Series
One severity label per sample.

Examples

>>> import pandas as pd
>>> from neurostatx.statistics.models import GAD7Labeler
>>> X = pd.DataFrame([[0] * 7])
>>> GAD7Labeler().transform(X).iloc[0]
'Subthreshold'

PHQ9Labelerclass#

class PHQ9Labeler()

Assign PHQ-9 severity labels from the nine questionnaire items.

fitmethod#

def fit(X, y=None)

Label PHQ-9 item scores.

Delegates to transform.

Parameters

NameTypeDefaultDescription
Xpd.DataFramerequiredItem scores of shape (n_samples, 9).
ypd.SeriesNoneUnused target, kept for sklearn compatibility.

Returns

labelspd.Series
Severity labels returned by transform.

Examples

>>> import pandas as pd
>>> from neurostatx.statistics.models import PHQ9Labeler
>>> X = pd.DataFrame([[0] * 9])
>>> PHQ9Labeler().fit(X).iloc[0]
'Subthreshold'

transformmethod#

def transform(X)

Assign a PHQ-9 severity label to each row.

Labels are Subthreshold, Mild, Moderate, Mod-Severe, or Severe.

Parameters

NameTypeDescription
Xpd.DataFrameItem scores of shape (n_samples, 9).

Returns

labelspd.Series
One severity label per sample.

Examples

>>> import pandas as pd
>>> from neurostatx.statistics.models import PHQ9Labeler
>>> X = pd.DataFrame([[0] * 9])
>>> PHQ9Labeler().transform(X).iloc[0]
'Subthreshold'

Penaltyclass#

class Penalty(StrEnum, Enum)

Bases: StrEnum, Enum

Regularization penalties for logistic regression.

elasticnetattributeclass attributeinstance attribute#

elasticnet = 'elasticnet'

l1attributeclass attributeinstance attribute#

l1 = 'l1'

l2attributeclass attributeinstance attribute#

l2 = 'l2'

ScoringMethodclass#

class ScoringMethod(StrEnum, Enum)

Bases: StrEnum, Enum

sklearn scoring names accepted by permutation testing.

accuracyattributeclass attributeinstance attribute#

accuracy = 'accuracy'

adjusted_mutual_info_scoreattributeclass attributeinstance attribute#

adjusted_mutual_info_score = 'adjusted_mutual_info_score'

adjusted_rand_scoreattributeclass attributeinstance attribute#

adjusted_rand_score = 'adjusted_rand_score'

average_precisionattributeclass attributeinstance attribute#

average_precision = 'average_precision'

balanced_accuracyattributeclass attributeinstance attribute#

balanced_accuracy = 'balanced_accuracy'

completeness_scoreattributeclass attributeinstance attribute#

completeness_score = 'completeness_score'

d2_absolute_error_scoreattributeclass attributeinstance attribute#

d2_absolute_error_score = 'd2_absolute_error_score'

d2_pinball_scoreattributeclass attributeinstance attribute#

d2_pinball_score = 'd2_pinball_score'

d2_tweedie_scoreattributeclass attributeinstance attribute#

d2_tweedie_score = 'd2_tweedie_score'

explained_varianceattributeclass attributeinstance attribute#

explained_variance = 'explained_variance'

f1attributeclass attributeinstance attribute#

f1 = 'f1'

f1_macroattributeclass attributeinstance attribute#

f1_macro = 'f1_macro'

f1_microattributeclass attributeinstance attribute#

f1_micro = 'f1_micro'

f1_samplesattributeclass attributeinstance attribute#

f1_samples = 'f1_samples'

f1_weightedattributeclass attributeinstance attribute#

f1_weighted = 'f1_weighted'

fowlkes_mallows_scoreattributeclass attributeinstance attribute#

fowlkes_mallows_score = 'fowlkes_mallows_score'

homogeneity_scoreattributeclass attributeinstance attribute#

homogeneity_score = 'homogeneity_score'

jaccardattributeclass attributeinstance attribute#

jaccard = 'jaccard'

max_errorattributeclass attributeinstance attribute#

max_error = 'max_error'

mutual_info_scoreattributeclass attributeinstance attribute#

mutual_info_score = 'mutual_info_score'

neg_brier_scoreattributeclass attributeinstance attribute#

neg_brier_score = 'neg_brier_score'

neg_log_lossattributeclass attributeinstance attribute#

neg_log_loss = 'neg_log_loss'

neg_mean_absolute_errorattributeclass attributeinstance attribute#

neg_mean_absolute_error = 'neg_mean_absolute_error'

neg_mean_absolute_percentage_errorattributeclass attributeinstance attribute#

neg_mean_absolute_percentage_error = 'neg_mean_absolute_percentage_error'

neg_mean_gamma_devianceattributeclass attributeinstance attribute#

neg_mean_gamma_deviance = 'neg_mean_gamma_deviance'

neg_mean_poisson_devianceattributeclass attributeinstance attribute#

neg_mean_poisson_deviance = 'neg_mean_poisson_deviance'

neg_mean_squared_errorattributeclass attributeinstance attribute#

neg_mean_squared_error = 'neg_mean_squared_error'

neg_mean_squared_log_errorattributeclass attributeinstance attribute#

neg_mean_squared_log_error = 'neg_mean_squared_log_error'

neg_median_absolute_errorattributeclass attributeinstance attribute#

neg_median_absolute_error = 'neg_median_absolute_error'

neg_root_mean_squared_errorattributeclass attributeinstance attribute#

neg_root_mean_squared_error = 'neg_root_mean_squared_error'

normalized_mutual_info_scoreattributeclass attributeinstance attribute#

normalized_mutual_info_score = 'normalized_mutual_info_score'

precisionattributeclass attributeinstance attribute#

precision = 'precision'

r2attributeclass attributeinstance attribute#

r2 = 'r2'

rand_scoreattributeclass attributeinstance attribute#

rand_score = 'rand_score'

recallattributeclass attributeinstance attribute#

recall = 'recall'

roc_aucattributeclass attributeinstance attribute#

roc_auc = 'roc_auc'

roc_auc_ovoattributeclass attributeinstance attribute#

roc_auc_ovo = 'roc_auc_ovo'

roc_auc_ovo_weightedattributeclass attributeinstance attribute#

roc_auc_ovo_weighted = 'roc_auc_ovo_weighted'

roc_auc_ovrattributeclass attributeinstance attribute#

roc_auc_ovr = 'roc_auc_ovr'

roc_auc_ovr_weightedattributeclass attributeinstance attribute#

roc_auc_ovr_weighted = 'roc_auc_ovr_weighted'

top_k_accuracyattributeclass attributeinstance attribute#

top_k_accuracy = 'top_k_accuracy'

v_measure_scoreattributeclass attributeinstance attribute#

v_measure_score = 'v_measure_score'

Solverclass#

class Solver(StrEnum, Enum)

Bases: StrEnum, Enum

sklearn LogisticRegression solver names.

lbfgsattributeclass attributeinstance attribute#

lbfgs = 'lbfgs'

liblinearattributeclass attributeinstance attribute#

liblinear = 'liblinear'

newton_cgattributeclass attributeinstance attribute#

newton_cg = 'newton-cg'

newton_choleskyattributeclass attributeinstance attribute#

newton_cholesky = 'newton-cholesky'

sagattributeclass attributeinstance attribute#

sag = 'sag'

sagaattributeclass attributeinstance attribute#

saga = 'saga'

permutation_testingfunction#

def permutation_testing(estimator, X, Y, binary=False, nb_permutations=1000, scoring='r2', splits=10, processes=1, verbose=False)

Permutation-test an estimator’s score and coefficients.

Parameters

NameTypeDefaultDescription
estimatorestimatorrequiredUnfitted sklearn-compatible estimator.
Xpd.DataFramerequiredPredictor variables.
Ypd.DataFramerequiredDependent variables.
binaryboolFalseUnused flag kept for API compatibility. Defaults to False.
nb_permutationsint1000Number of permutations. Defaults to 1000.
scoringstr'r2'Scoring name passed to sklearn. Defaults to "r2".
splitsint10Number of cross-validation folds. Defaults to 10.
processesint1Number of parallel jobs. Defaults to 1.
verboseboolFalseIf True, increase sklearn Parallel verbosity. Defaults to False.

Returns

modestimator
Fitted estimator from the unpermuted data.
scorefloat
Observed score.
coefarray
Observed coefficients.
perm_scorearray
Permuted scores.
score_pvaluefloat
P-value for the observed score.
perm_coefarray
Permuted coefficients.
coef_pvaluearray
P-values for the coefficients.

Examples

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> from neurostatx.statistics.models import permutation_testing
>>> rng = np.random.RandomState(0)
>>> X = rng.rand(20, 2)
>>> Y = X[:, 0] + 0.1 * rng.rand(20)
>>> mod, score, coef, perm_score, score_pvalue, perm_coef, coef_pvalue = (
... permutation_testing(LinearRegression(), X, Y, nb_permutations=5,
... splits=3, processes=1)
... )

plsr_cvfunction#

def plsr_cv(X, Y, nb_comp, max_iter=1000, splits=10, processes=1, verbose=False)

Fit a PLSR model and choose the component count by cross-validation.

Parameters

NameTypeDefaultDescription
Xpd.DataFramerequiredPredictor variables.
Ypd.DataFramerequiredDependent variables.
nb_compintrequiredMaximum number of components to evaluate.
max_iterint1000Maximum iterations for PLSR. Defaults to 1000.
splitsint10Number of cross-validation folds. Defaults to 10.
processesint1Number of parallel jobs. Defaults to 1.
verboseboolFalseIf True, show a progress bar. Defaults to False.

Returns

plsrPLSRegression
Fitted model using the component count with lowest CV MSE.
mselist
Cross-validated MSE for each component count.
score_cfloat
In-sample R2 score.
score_cvfloat
Cross-validated R2 score.
rscorefloat
Square root of the in-sample R2 score.
mse_cfloat
In-sample mean squared error.
mse_cvfloat
Cross-validated mean squared error.

Examples

>>> import pandas as pd
>>> from neurostatx.statistics.models import plsr_cv
>>> X = pd.DataFrame({"a": [1, 2, 3, 4], "b": [2, 1, 4, 3]})
>>> Y = pd.DataFrame({"y": [1.1, 1.9, 3.2, 3.8]})
>>> plsr, mse, score_c, score_cv, rscore, mse_c, mse_cv = plsr_cv(
... X, Y, nb_comp=2, splits=2
... )