跳转至

pystatpower.models.proportion.independent.inequality

Functions:

Name Description
solve_power

Calculate the statistical power for an inequality test of two independent proportions.

solve_size

Estimate the required sample size for an inequality test of two independent proportions.

solve_treatment_proportion

Estimate the required proportion in the treatment group for an inequality test of two independent proportions.

solve_reference_proportion

Estimate the required proportion in the reference group for an inequality test of two independent proportions.

solve_power

solve_power(
    *,
    treatment_proportion: float,
    reference_proportion: float,
    treatment_size: int,
    reference_size: int,
    alternative: Literal["one-sided", "two-sided"],
    alpha: float = 0.05,
    pooled: bool = False,
    continuity_correction: bool = False,
) -> float

Calculate the statistical power for an inequality test of two independent proportions.

Parameters:

Name Type Description Default
treatment_proportion float

Actual proportion in the treatment group (\(p_1\)). Must be between 0 and 1.

required
reference_proportion float

Actual proportion in the reference group (\(p_2\)). Must be between 0 and 1.

required
alternative Literal['one-sided', 'two-sided']

Type of the alternative hypothesis.

  • 'one-sided': Tests for a difference in one direction (uses \(\alpha\)).
  • 'two-sided': Tests for any difference (uses \(\alpha/2\) per tail).
required
treatment_size int

Sample size for the treatment group (\(n_1\)).

required
reference_size int

Sample size for the reference group (\(n_2\)).

required
alpha float

Significance level.

0.05
pooled bool

If True, use the pooled variance estimator (\(\bar{p}\)) under the null hypothesis.

False
continuity_correction bool

If True, applies Yates' continuity correction.

False

Returns:

Type Description
float

Power of the test.

solve_size

solve_size(
    *,
    treatment_proportion: float,
    reference_proportion: float,
    alternative: Literal["one-sided", "two-sided"],
    ratio: float = 1,
    alpha: float = 0.05,
    power: float = 0.8,
    pooled: bool = False,
    continuity_correction: bool = False,
) -> tuple[int, int]

Estimate the required sample size for an inequality test of two independent proportions.

Parameters:

Name Type Description Default
treatment_proportion float

Expected proportion in the treatment group (\(p_1\)). Must be between 0 and 1.

required
reference_proportion float

Expected proportion in the reference group (\(p_2\)). Must be between 0 and 1.

required
alternative Literal['one-sided', 'two-sided']

Type of the alternative hypothesis.

  • 'one-sided': Tests for a difference in one direction (uses \(\alpha\)).
  • 'two-sided': Tests for any difference (uses \(\alpha/2\) per tail).
required
ratio float

Ratio of treatment sample size to reference sample size (\(k = n_1 / n_2\)).

1
alpha float

Significance level.

0.05
power float

Desired statistical power.

0.8
pooled bool

If True, use the pooled variance estimator (\(\bar{p}\)) under the null hypothesis.

False
continuity_correction bool

If True, applies Yates' continuity correction.

False

Returns:

Type Description
tuple[int, int]

The required sample sizes for the treatment and reference groups, respectively.

solve_treatment_proportion

solve_treatment_proportion(
    *,
    reference_proportion: float,
    treatment_size: int,
    reference_size: int,
    alternative: Literal["one-sided", "two-sided"],
    alpha: float = 0.05,
    power: float = 0.8,
    pooled: bool = False,
    continuity_correction: bool = False,
    search_direction: Literal["lower", "upper"] = "upper",
) -> float

Estimate the required proportion in the treatment group for an inequality test of two independent proportions.

Parameters:

Name Type Description Default
reference_proportion float

Expected proportion in the reference group (\(p_2\)). Must be between 0 and 1.

required
treatment_size int

Sample size for the treatment group (\(n_1\)).

required
reference_size int

Sample size for the reference group (\(n_2\)).

required
alternative Literal['one-sided', 'two-sided']

Type of the alternative hypothesis.

  • 'one-sided': Tests for a difference in one direction (uses \(\alpha\)).
  • 'two-sided': Tests for any difference (uses \(\alpha/2\) per tail).
required
alpha float

Significance level.

0.05
power float

Desired statistical power.

0.8
pooled bool

If True, use the pooled variance estimator (\(\bar{p}\)) under the null hypothesis.

False
continuity_correction bool

If True, applies Yates' continuity correction.

False
search_direction Literal['lower', 'upper']

Which solution to search for relative to \(p_2\).

  • "lower": Finds \(p_1\) where \(p_1 < p_2\).
  • "upper": Finds \(p_1\) where \(p_1 > p_2\).
'upper'

Returns:

Type Description
float

The required proportion in the treatment group.

solve_reference_proportion

solve_reference_proportion(
    *,
    treatment_proportion: float,
    treatment_size: int,
    reference_size: int,
    alternative: Literal["one-sided", "two-sided"],
    alpha: float = 0.05,
    power: float = 0.8,
    pooled: bool = False,
    continuity_correction: bool = False,
    search_direction: Literal["lower", "upper"] = "lower",
) -> float

Estimate the required proportion in the reference group for an inequality test of two independent proportions.

Parameters:

Name Type Description Default
treatment_proportion float

Expected proportion in the treatment group (\(p_1\)). Must be between 0 and 1.

required
treatment_size int

Sample size for the treatment group (\(n_1\)).

required
reference_size int

Sample size for the reference group (\(n_2\)).

required
alternative Literal['one-sided', 'two-sided']

Type of the alternative hypothesis.

  • 'one-sided': Tests for a difference in one direction (uses \(\alpha\)).
  • 'two-sided': Tests for any difference (uses \(\alpha/2\) per tail).
required
alpha float

If True, use the pooled variance estimator (\(\bar{p}\)) under the null hypothesis.

0.05
power float

Desired statistical power.

0.8
pooled bool

If True, use the pooled variance estimator.

False
continuity_correction bool

If True, applies Yates' continuity correction.

False
search_direction Literal['lower', 'upper']

Which solution to search for relative to \(p_1\).

  • "lower": Finds \(p_2\) where \(p_2 < p_1\).
  • "upper": Finds \(p_2\) where \(p_2 > p_1\).
'lower'

Returns:

Type Description
float

The required proportion in the reference group.