neurostatx.statistics.models
Classes
| Name | Description |
|---|---|
GAD7Labeler | Assign GAD-7 severity labels from the seven questionnaire items. |
PHQ9Labeler | Assign PHQ-9 severity labels from the nine questionnaire items. |
Penalty | Regularization penalties for logistic regression. |
ScoringMethod | sklearn scoring names accepted by permutation testing. |
Solver | sklearn LogisticRegression solver names. |
Functions
| Name | Description |
|---|---|
permutation_testing | Permutation-test an estimator's score and coefficients. |
plsr_cv | Fit 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
| Name | Type | Default | Description |
|---|---|---|---|
X | pd.DataFrame | required | Item scores of shape (n_samples, 7). |
y | pd.Series | None | Unused 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
| Name | Type | Description |
|---|---|---|
X | pd.DataFrame | Item 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
| Name | Type | Default | Description |
|---|---|---|---|
X | pd.DataFrame | required | Item scores of shape (n_samples, 9). |
y | pd.Series | None | Unused 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
| Name | Type | Description |
|---|---|---|
X | pd.DataFrame | Item 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.
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
| Name | Type | Default | Description |
|---|---|---|---|
estimator | estimator | required | Unfitted sklearn-compatible estimator. |
X | pd.DataFrame | required | Predictor variables. |
Y | pd.DataFrame | required | Dependent variables. |
binary | bool | False | Unused flag kept for API compatibility. Defaults to False. |
nb_permutations | int | 1000 | Number of permutations. Defaults to 1000. |
scoring | str | 'r2' | Scoring name passed to sklearn. Defaults to "r2". |
splits | int | 10 | Number of cross-validation folds. Defaults to 10. |
processes | int | 1 | Number of parallel jobs. Defaults to 1. |
verbose | bool | False | If True, increase sklearn Parallel verbosity. Defaults to False. |
Returns
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
| Name | Type | Default | Description |
|---|---|---|---|
X | pd.DataFrame | required | Predictor variables. |
Y | pd.DataFrame | required | Dependent variables. |
nb_comp | int | required | Maximum number of components to evaluate. |
max_iter | int | 1000 | Maximum iterations for PLSR. Defaults to 1000. |
splits | int | 10 | Number of cross-validation folds. Defaults to 10. |
processes | int | 1 | Number of parallel jobs. Defaults to 1. |
verbose | bool | False | If 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... )