Direct API¶
All 12 statistical test functions are available directly. Use these when you already know which test you need and want explicit, readable code with full parameter control.
Every function returns a HypoResult — the same structured object as analyze().
Parametric Tests¶
One-sample t-test¶
Test whether the mean of a single sample equals a hypothesised value.
hx.ttest_1samp(data, mu=0, alpha=0.05, alternative="two-sided")
Parameter |
Type |
Description |
|---|---|---|
|
|
Sample data |
|
|
Null hypothesis mean (default |
|
|
Significance level (default |
|
|
|
import hypotestx as hx
scores = df["test_score"].tolist()
result = hx.ttest_1samp(scores, mu=70, alternative="greater")
print(result.summary())
Two-sample t-test (Welch / Student)¶
Compare means of two independent groups.
hx.ttest_2samp(group1, group2, alpha=0.05, alternative="two-sided", equal_var=False)
Parameter |
Type |
Description |
|---|---|---|
|
|
First group |
|
|
Second group |
|
|
Significance level |
|
|
|
|
|
|
males = df[df["gender"] == "M"]["salary"].tolist()
females = df[df["gender"] == "F"]["salary"].tolist()
result = hx.ttest_2samp(males, females, alternative="greater", equal_var=False)
Welch’s t-test (explicit)¶
Identical to ttest_2samp with equal_var=False. Provided as a convenience alias.
hx.welch_ttest(group1, group2, alpha=0.05, alternative="two-sided")
Paired t-test¶
Compare two measurements from the same subjects (before/after, repeated measures).
hx.ttest_paired(before, after, alpha=0.05, alternative="two-sided")
Parameter |
Type |
Description |
|---|---|---|
|
|
Pre-treatment or first measurement |
|
|
Post-treatment or second measurement |
pre = df["pre_score"].tolist()
post = df["post_score"].tolist()
result = hx.ttest_paired(pre, post, alternative="less")
# alternative="less": testing whether pre < post, i.e. scores improved
One-way ANOVA¶
Test whether means differ across three or more independent groups.
hx.anova_1way(*groups, alpha=0.05)
eng = df[df["dept"] == "engineering"]["salary"].tolist()
sales = df[df["dept"] == "sales"]["salary"].tolist()
mktg = df[df["dept"] == "marketing"]["salary"].tolist()
result = hx.anova_1way(eng, sales, mktg, alpha=0.05)
print(result.effect_size_name) # 'eta-squared'
print(result.effect_magnitude) # 'small' | 'medium' | 'large'
Non-parametric Tests¶
Mann-Whitney U¶
Non-parametric alternative to the two-sample t-test. Does not assume normality.
hx.mannwhitney(group1, group2, alpha=0.05, alternative="two-sided")
result = hx.mannwhitney(
df[df["group"] == "A"]["score"].tolist(),
df[df["group"] == "B"]["score"].tolist(),
)
print(result.effect_size_name) # 'rank-biserial r'
Wilcoxon Signed-Rank¶
Non-parametric alternative to the paired t-test.
hx.wilcoxon(x, y=None, mu=0, alpha=0.05, alternative="two-sided")
# Paired: compare pre and post
result = hx.wilcoxon(df["pre"].tolist(), y=df["post"].tolist())
# One-sample: test if median equals mu
result = hx.wilcoxon(df["score"].tolist(), mu=50)
Kruskal-Wallis¶
Non-parametric alternative to one-way ANOVA. Does not assume normality.
hx.kruskal(*groups, alpha=0.05)
groups = [df[df["region"] == r]["sales"].tolist() for r in df["region"].unique()]
result = hx.kruskal(*groups)
Categorical Tests¶
Chi-square test¶
Test independence between two categorical variables (contingency table), or goodness-of-fit for a 1-D observed distribution.
hx.chi2_test(observed, alpha=0.05)
Parameter |
Type |
Description |
|---|---|---|
|
|
2-D contingency table, or 1-D observed counts |
# 2×2 contingency table
table = [[30, 10], [20, 40]]
result = hx.chi2_test(table)
# Build table from DataFrame columns
from hypotestx.core.engine import _build_contingency_table
table = _build_contingency_table(df, "gender", "department")
result = hx.chi2_test(table)
Fisher’s exact test¶
Exact test for 2×2 contingency tables. Preferred when expected cell counts are small.
hx.fisher_exact(table, alpha=0.05, alternative="two-sided")
table = [[8, 2], [1, 5]]
result = hx.fisher_exact(table, alternative="greater")
print(result.effect_size_name) # 'odds ratio'
Correlation Tests¶
Pearson correlation¶
Test for linear association between two continuous numeric variables.
hx.pearson(x, y, alpha=0.05, alternative="two-sided")
result = hx.pearson(df["age"].tolist(), df["salary"].tolist())
print(result.effect_size_name) # 'Pearson r'
Spearman correlation¶
Rank-based test for monotonic association. More robust than Pearson.
hx.spearman(x, y, alpha=0.05, alternative="two-sided")
result = hx.spearman(df["rank"].tolist(), df["performance"].tolist())
Point-biserial correlation¶
Correlation between one continuous and one binary (0/1) variable.
hx.pointbiserial(continuous, binary, alpha=0.05)
result = hx.pointbiserial(
df["exam_score"].tolist(),
df["passed"].tolist(), # binary: 0 or 1
)