pybmds Quickstart

The pybmds package is designed for those familiar with basic scripting in languages like R or Python. In Python there are many different environments (jupyter notebooks, ipython, RStudio, Sypder, etc) commonly used for scripting; the example below will work in any of them.

The following example is recommended for people already familiar with scripting.

To create a dataset and fit a suite of dose-response models to the dataset:

import pybmds

# create a dataset
dataset = pybmds.DichotomousDataset(
    doses=[0, 10, 50, 150, 400],
    ns=[25, 25, 24, 24, 24],
    incidences=[0, 3, 7, 11, 15],
)

# create a BMD session
session = pybmds.Session(dataset=dataset)

# add all default models
session.add_default_models()

# execute the session
session.execute()

# show a summary figure
session.plot(colorize=True)
_images/b13f00fec775ee4250306460784767e117d50893a14e1fedccd642d831608b4f.png

Show the first model output from the current session (i.e. Logistic):

first_model = session.models[0]
first_model.plot()
_images/d6f72afd7402642276f9ee2e4c7a2a1fe92e84cc1105162196fa13eea6c3db3d.png

Detailed outputs are available with the results attribute on each model, or you can view a text summary of the model fit:

print(first_model.text())
        Logistic Model        
══════════════════════════════

Version: pybmds 24.1 (bmdscore 24.1)

Input Summary:
╒══════════════════════════════╤══════════════════════════╕
│ BMR                          │ 10% Extra Risk           │
│ Confidence Level (one sided) │ 0.95                     │
│ Modeling approach            │ frequentist_unrestricted │
╘══════════════════════════════╧══════════════════════════╛

Parameter Settings:
╒═════════════╤═══════════╤═══════╤═══════╕
│ Parameter   │   Initial │   Min │   Max │
╞═════════════╪═══════════╪═══════╪═══════╡
│ a           │         0 │   -18 │    18 │
│ b           │         0 │     0 │   100 │
╘═════════════╧═══════════╧═══════╧═══════╛

Modeling Summary:
╒════════════════╤═════════════╕
│ BMD            │  88.0158    │
│ BMDL           │  67.4179    │
│ BMDU           │ 117.983     │
│ AIC            │ 128.521     │
│ Log-Likelihood │ -62.2605    │
│ P-Value        │   0.0278225 │
│ Overall d.f.   │   3         │
│ Chi²           │   9.11325   │
╘════════════════╧═════════════╛

Model Parameters:
╒════════════╤═════════════╤════════════╤═════════════╕
│ Variable   │    Estimate │ On Bound   │   Std Error │
╞════════════╪═════════════╪════════════╪═════════════╡
│ a          │ -1.77998    │ no         │  0.308654   │
│ b          │  0.00648704 │ no         │  0.00143054 │
╘════════════╧═════════════╧════════════╧═════════════╛

Goodness of Fit:
╒════════╤════════╤════════════╤════════════╤════════════╤═══════════════════╕
│   Dose │   Size │   Observed │   Expected │   Est Prob │   Scaled Residual │
╞════════╪════════╪════════════╪════════════╪════════════╪═══════════════════╡
│      0 │     25 │          0 │    3.60765 │   0.144306 │         -2.0533   │
│     10 │     25 │          3 │    3.81257 │   0.152503 │         -0.452045 │
│     50 │     24 │          7 │    4.5393  │   0.189138 │          1.2826   │
│    150 │     24 │         11 │    7.40513 │   0.308547 │          1.58868  │
│    400 │     24 │         15 │   16.6353  │   0.69314  │         -0.723809 │
╘════════╧════════╧════════════╧════════════╧════════════╧═══════════════════╛

Analysis of Deviance:
╒═══════════════╤══════════════════╤════════════╤════════════╤═════════════╤═════════════╕
│ Model         │   Log-Likelihood │   # Params │ Deviance   │ Test d.f.   │ P-Value     │
╞═══════════════╪══════════════════╪════════════╪════════════╪═════════════╪═════════════╡
│ Full model    │         -56.09   │          5 │ -          │ -           │ -           │
│ Fitted model  │         -62.2605 │          2 │ 12.3409    │ 3           │ 0.00630208  │
│ Reduced model │         -74.01   │          1 │ 35.84      │ 4           │ 3.12157e-07 │
╘═══════════════╧══════════════════╧════════════╧════════════╧═════════════╧═════════════╛

Recommend a best-fitting model from the collection of models used to fit the dataset:

session.recommend()

And show the recommended model:

print(session.recommended_model.text())
session.recommended_model.plot()
       LogProbit Model        
══════════════════════════════

Version: pybmds 24.1 (bmdscore 24.1)

Input Summary:
╒══════════════════════════════╤══════════════════════════╕
│ BMR                          │ 10% Extra Risk           │
│ Confidence Level (one sided) │ 0.95                     │
│ Modeling approach            │ frequentist_unrestricted │
╘══════════════════════════════╧══════════════════════════╛

Parameter Settings:
╒═════════════╤═══════════╤══════════╤═══════╕
│ Parameter   │   Initial │      Min │   Max │
╞═════════════╪═══════════╪══════════╪═══════╡
│ g           │         0 │ -18      │    18 │
│ a           │         0 │ -18      │    18 │
│ b           │         0 │   0.0001 │    18 │
╘═════════════╧═══════════╧══════════╧═══════╛

Modeling Summary:
╒════════════════╤══════════════╕
│ BMD            │   7.96379    │
│ BMDL           │   1.16574    │
│ BMDU           │  19.7093     │
│ AIC            │ 116.189      │
│ Log-Likelihood │ -56.0944     │
│ P-Value        │   0.999785   │
│ Overall d.f.   │   3          │
│ Chi²           │   0.00869929 │
╘════════════════╧══════════════╛

Model Parameters:
╒════════════╤════════════╤════════════╤══════════════╕
│ Variable   │   Estimate │ On Bound   │ Std Error    │
╞════════════╪════════════╪════════════╪══════════════╡
│ g          │  1.523e-08 │ yes        │ Not Reported │
│ a          │ -2.122     │ no         │ 0.504104     │
│ b          │  0.405055  │ no         │ 0.107298     │
╘════════════╧════════════╧════════════╧══════════════╛
Standard errors estimates are not generated for parameters estimated on corresponding bounds,
although sampling error is present for all parameters, as a rule. Standard error estimates may not
be reliable as a basis for confidence intervals or tests when one or more parameters are on bounds.


Goodness of Fit:
╒════════╤════════╤════════════╤══════════════╤════════════╤═══════════════════╕
│   Dose │   Size │   Observed │     Expected │   Est Prob │   Scaled Residual │
╞════════╪════════╪════════════╪══════════════╪════════════╪═══════════════════╡
│      0 │     25 │          0 │  3.80749e-07 │  1.523e-08 │      -0.000617049 │
│     10 │     25 │          3 │  2.92888     │  0.117155  │       0.0442273   │
│     50 │     24 │          7 │  7.09176     │  0.29549   │      -0.0410505   │
│    150 │     24 │         11 │ 11.1164      │  0.463183  │      -0.0476461   │
│    400 │     24 │         15 │ 14.8744      │  0.619768  │       0.0527974   │
╘════════╧════════╧════════════╧══════════════╧════════════╧═══════════════════╛

Analysis of Deviance:
╒═══════════════╤══════════════════╤════════════╤════════════╤═════════════╤═════════════╕
│ Model         │   Log-Likelihood │   # Params │ Deviance   │ Test d.f.   │ P-Value     │
╞═══════════════╪══════════════════╪════════════╪════════════╪═════════════╪═════════════╡
│ Full model    │         -56.09   │          5 │ -          │ -           │ -           │
│ Fitted model  │         -56.0944 │          2 │ 0.00869649 │ 3           │ 0.999785    │
│ Reduced model │         -74.01   │          1 │ 35.84      │ 4           │ 3.12157e-07 │
╘═══════════════╧══════════════════╧════════════╧════════════╧═════════════╧═════════════╛
_images/cd43389aefebe92b97a8932540ecd893ade4846571346bb8a21aeab748d715bd.png