{
  "_id": "6a1693b8acfb0bcc41d798d6",
  "Package": "causaloptim",
  "Encoding": "UTF-8",
  "Type": "Package",
  "Title": "An Interface to Specify Causal Graphs and Compute Bounds on\nCausal Effects",
  "Version": "1.0.2",
  "Date": "2026-04-27",
  "Authors@R": "c(\nperson(\"Michael C\", \"Sachs\", role = c(\"aut\", \"cre\"), email = \"sachsmc@gmail.com\"),\nperson(\"Erin E\", \"Gabriel\", role = \"aut\"),\nperson(\"Arvid\", \"Sjölander\", role = \"aut\"),\nperson(\"Gustav\", \"Jonzon\", role = \"aut\"),\nperson(\"Alexander A\", \"Balke\", role = \"ctb\",comment =\"(C++ code)\"),\nperson(\"Colorado\", \"Reed\", role = \"ctb\", comment = \"(graph-creator.js)\")\n)",
  "Maintainer": "Michael C Sachs <sachsmc@gmail.com>",
  "Description": "When causal quantities are not identifiable from the\nobserved data, it still may be possible to bound these\nquantities using the observed data. We outline a class of\nproblems for which the derivation of tight bounds is always a\nlinear programming problem and can therefore, at least\ntheoretically, be solved using a symbolic linear optimizer. We\nextend and generalize the approach of Balke and Pearl (1994)\n<doi:10.1016/B978-1-55860-332-5.50011-0> and we provide a user\nfriendly graphical interface for setting up such problems via\ndirected acyclic graphs (DAG), which only allow for problems\nwithin this class to be depicted. The user can then define\nlinear constraints to further refine their assumptions to meet\ntheir specific problem, and then specify a causal query using a\ntext interface. The program converts this user defined DAG,\nquery, and constraints, and returns tight bounds. The bounds\ncan be converted to R functions to evaluate them for specific\ndatasets, and to latex code for publication. The methods and\nproofs of tightness and validity of the bounds are described in\na paper by Sachs, Jonzon, Gabriel, and Sjölander (2022)\n<doi:10.1080/10618600.2022.2071905>.",
  "License": "MIT + file LICENSE",
  "RoxygenNote": "7.3.2",
  "VignetteBuilder": "knitr",
  "URL": "https://sachsmc.github.io/causaloptim/",
  "BugReports": "https://github.com/sachsmc/causaloptim/issues/",
  "Config/testthat/edition": "3",
  "Config/pak/sysreqs": "cmake libglpk-dev libgmp3-dev make libuv1-dev\nlibxml2-dev zlib1g-dev",
  "Repository": "https://sachsmc.r-universe.dev",
  "Date/Publication": "2026-04-27 10:11:26 UTC",
  "RemoteUrl": "https://github.com/sachsmc/causaloptim",
  "RemoteRef": "HEAD",
  "RemoteSha": "ae8e03666322eb1f28b57e77f38b918625667ac5",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-27 06:29:46 UTC",
    "User": "root"
  },
  "Author": "Michael C Sachs [aut, cre],\nErin E Gabriel [aut],\nArvid Sjölander [aut],\nGustav Jonzon [aut],\nAlexander A Balke [ctb] ((C++ code)),\nColorado Reed [ctb] ((graph-creator.js))",
  "MD5sum": "de76a3604aa200018adf565b7539d97b",
  "_user": "sachsmc",
  "_type": "src",
  "_file": "causaloptim_1.0.2.tar.gz",
  "_fileid": "dbe05e6c5854f338e3a55b7cdba5355df7780146272b34da4a2b6576b5839954",
  "_filesize": 2306496,
  "_sha256": "dbe05e6c5854f338e3a55b7cdba5355df7780146272b34da4a2b6576b5839954",
  "_created": "2026-05-27T06:29:46.000Z",
  "_published": "2026-05-27T06:48:24.094Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78020516880,
      "time": 1081,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7233709863"
    },
    {
      "job": 78020516868,
      "time": 153,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7233462822"
    },
    {
      "job": 78020516986,
      "time": 115,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7233452758"
    },
    {
      "job": 78020516908,
      "time": 123,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7233454884"
    },
    {
      "job": 78020179842,
      "time": 161,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7233422949"
    },
    {
      "job": 78020516871,
      "time": 114,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7233452438"
    },
    {
      "job": 78020516889,
      "time": 116,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7233453320"
    },
    {
      "job": 78020516910,
      "time": 109,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7233451387"
    },
    {
      "job": 78020516909,
      "time": 117,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7233453713"
    }
  ],
  "_buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/sachsmc/causaloptim",
  "_commit": {
    "id": "ae8e03666322eb1f28b57e77f38b918625667ac5",
    "author": "Michael Sachs <sachsmc@gmail.com>",
    "committer": "Michael Sachs <sachsmc@gmail.com>",
    "message": "typo\n",
    "time": 1777284686
  },
  "_maintainer": {
    "name": "Michael C Sachs",
    "email": "sachsmc@gmail.com",
    "login": "sachsmc",
    "linkedin": "in/michael-sachs-09324659",
    "description": "",
    "uuid": 5464185
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "igraph",
      "role": "Depends"
    },
    {
      "package": "shiny",
      "role": "Imports"
    },
    {
      "package": "rcdd",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "sachsmc",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-18",
      "n": 2
    }
  ],
  "_tags": [],
  "_stars": 22,
  "_contributors": [
    {
      "user": "sachsmc",
      "count": 149,
      "uuid": 5464185
    },
    {
      "user": "gjo11",
      "count": 19,
      "uuid": 70565078
    }
  ],
  "_userbio": {
    "uuid": 5464185,
    "type": "user",
    "name": "Michael Sachs"
  },
  "_downloads": {
    "count": 306,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/causaloptim"
  },
  "_devurl": "https://github.com/sachsmc/causaloptim",
  "_pkgdown": "https://sachsmc.github.io/causaloptim/",
  "_searchresults": 40,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/causaloptim.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/sachsmc/causaloptim",
  "_realowner": "sachsmc",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.6.4",
      "date": "2020-03-20"
    },
    {
      "version": "0.6.5",
      "date": "2020-03-25"
    },
    {
      "version": "0.7.1",
      "date": "2020-05-07"
    },
    {
      "version": "0.8.2",
      "date": "2021-06-09"
    },
    {
      "version": "0.9.1",
      "date": "2021-12-10"
    },
    {
      "version": "0.9.2",
      "date": "2022-03-25"
    },
    {
      "version": "0.9.3",
      "date": "2023-01-22"
    },
    {
      "version": "0.9.7",
      "date": "2023-03-24"
    },
    {
      "version": "0.9.8",
      "date": "2023-10-31"
    },
    {
      "version": "1.0.0",
      "date": "2024-10-17"
    }
  ],
  "_exports": [
    "analyze_graph",
    "btm_var",
    "causalproblemcheck",
    "check_constraints_violated",
    "check_linear_objective",
    "check_parents",
    "constraintscheck",
    "create_causalmodel",
    "create_effect_vector",
    "create_linearcausalproblem",
    "create_q_matrix",
    "create_response_function",
    "find_all_paths",
    "get_default_effect",
    "graphrescheck",
    "initialize_graph",
    "interpret_bounds",
    "latex_bounds",
    "list_to_path",
    "optimize_effect_2",
    "parse_constraints",
    "parse_effect",
    "plot_graphres",
    "querycheck",
    "rdirichlet",
    "sample_distribution",
    "simulate_bounds",
    "specify_graph",
    "update_effect"
  ],
  "_help": [
    {
      "page": "causaloptim-package",
      "title": "An Interface to Specify Causal Graphs and Compute Bounds on Causal Effects",
      "topics": [
        "causaloptim-package",
        "causaloptim"
      ]
    },
    {
      "page": "analyze_graph",
      "title": "Analyze the causal graph and effect to determine constraints and objective",
      "topics": [
        "analyze_graph"
      ]
    },
    {
      "page": "btm_var",
      "title": "Recursive function to get the last name in a list",
      "topics": [
        "btm_var"
      ]
    },
    {
      "page": "causalproblemcheck",
      "title": "Check conditions on causal problem",
      "topics": [
        "causalproblemcheck"
      ]
    },
    {
      "page": "check_constraints_violated",
      "title": "Check whether any of the observable constraints implied by the causal model are violated for a given distribution of observables",
      "topics": [
        "check_constraints_violated"
      ]
    },
    {
      "page": "check_linear_objective",
      "title": "Check linearity of objective function implied by a causal model and effect",
      "topics": [
        "check_linear_objective"
      ]
    },
    {
      "page": "check_parents",
      "title": "Check for paths from from to to",
      "topics": [
        "check_parents"
      ]
    },
    {
      "page": "constraintscheck",
      "title": "Check constraints",
      "topics": [
        "constraintscheck"
      ]
    },
    {
      "page": "create_causalmodel",
      "title": "Create a structural causal model from a graph or a set of response functions",
      "topics": [
        "create_causalmodel"
      ]
    },
    {
      "page": "create_effect_vector",
      "title": "Translate target effect to vector of response variables",
      "topics": [
        "create_effect_vector"
      ]
    },
    {
      "page": "create_linearcausalproblem",
      "title": "Create linear causal problem from causal model and effect",
      "topics": [
        "create_linearcausalproblem"
      ]
    },
    {
      "page": "create_q_matrix",
      "title": "Translate response functions into matrix of counterfactuals",
      "topics": [
        "create_q_matrix"
      ]
    },
    {
      "page": "create_response_function",
      "title": "Translate regular DAG to response functions",
      "topics": [
        "create_response_function"
      ]
    },
    {
      "page": "find_all_paths",
      "title": "Find all paths in a causal model",
      "topics": [
        "find_all_paths"
      ]
    },
    {
      "page": "get_default_effect",
      "title": "Define default effect for a given graph",
      "topics": [
        "get_default_effect"
      ]
    },
    {
      "page": "graphrescheck",
      "title": "Check conditions on digraph",
      "topics": [
        "graphrescheck"
      ]
    },
    {
      "page": "initialize_graph",
      "title": "Initialize an igraph object for use with causaloptim",
      "topics": [
        "initialize_graph"
      ]
    },
    {
      "page": "interpret_bounds",
      "title": "Convert bounds string to a function",
      "topics": [
        "interpret_bounds"
      ]
    },
    {
      "page": "latex_bounds",
      "title": "Latex bounds equations",
      "topics": [
        "latex_bounds"
      ]
    },
    {
      "page": "list_to_path",
      "title": "Recursive function to translate an effect list to a path sequence",
      "topics": [
        "list_to_path"
      ]
    },
    {
      "page": "opt_effect",
      "title": "Compute a bound on the average causal effect",
      "topics": [
        "opt_effect"
      ]
    },
    {
      "page": "optimize_effect_2",
      "title": "Run the optimizer to obtain symbolic bounds",
      "topics": [
        "optimize_effect",
        "optimize_effect_2"
      ]
    },
    {
      "page": "parse_constraints",
      "title": "Parse text that defines a the constraints",
      "topics": [
        "parse_constraints"
      ]
    },
    {
      "page": "parse_effect",
      "title": "Parse text that defines a causal effect",
      "topics": [
        "parse_effect"
      ]
    },
    {
      "page": "plot_graphres",
      "title": "Plot the analyzed graph object",
      "topics": [
        "plot_graphres"
      ]
    },
    {
      "page": "plot.linearcausalproblem",
      "title": "Plot the graph from the causal problem with a legend describing attributes",
      "topics": [
        "plot.linearcausalproblem"
      ]
    },
    {
      "page": "print.causalmodel",
      "title": "Print relevant information about the causal model",
      "topics": [
        "print.causalmodel"
      ]
    },
    {
      "page": "print.linearcausalproblem",
      "title": "Print the causal problem",
      "topics": [
        "print.linearcausalproblem"
      ]
    },
    {
      "page": "querycheck",
      "title": "Check conditions on query",
      "topics": [
        "querycheck"
      ]
    },
    {
      "page": "rdirichlet",
      "title": "Sample from a Dirichlet distribution",
      "topics": [
        "rdirichlet"
      ]
    },
    {
      "page": "sample_distribution",
      "title": "Sample a distribution of observable probabilities that satisfy the causal model",
      "topics": [
        "sample_distribution"
      ]
    },
    {
      "page": "simulate_bounds",
      "title": "Simulate bounds",
      "topics": [
        "simulate_bounds"
      ]
    },
    {
      "page": "specify_graph",
      "title": "Shiny interface to specify network structure and compute bounds",
      "topics": [
        "specify_graph"
      ]
    },
    {
      "page": "update_effect",
      "title": "Update the effect in a linearcausalproblem object",
      "topics": [
        "update_effect"
      ]
    }
  ],
  "_readme": "https://github.com/sachsmc/causaloptim/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "bslib",
    "cachem",
    "cli",
    "commonmark",
    "cpp11",
    "digest",
    "fastmap",
    "fontawesome",
    "fs",
    "glue",
    "htmltools",
    "httpuv",
    "igraph",
    "jquerylib",
    "jsonlite",
    "later",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "memoise",
    "mime",
    "otel",
    "pkgconfig",
    "promises",
    "R6",
    "rappdirs",
    "rcdd",
    "Rcpp",
    "rlang",
    "sass",
    "shiny",
    "sourcetools",
    "vctrs",
    "withr",
    "xtable"
  ],
  "_vignettes": [
    {
      "source": "example-code.Rmd",
      "filename": "example-code.html",
      "title": "Code from examples in manuscript",
      "engine": "knitr::rmarkdown",
      "headings": [
        "confounded exposure and outcome",
        "multiple instruments",
        "measurement error in the outcome"
      ],
      "created": "2020-03-09 13:50:19",
      "modified": "2024-08-30 11:44:52",
      "commits": 10
    },
    {
      "source": "shinyapp.Rmd",
      "filename": "shinyapp.html",
      "title": "How to use the causaloptim Shiny app to analyze graphs",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Specifying the causal effect of interest",
        "Specifying constraints (optional)",
        "Computation of the bounds"
      ],
      "created": "2019-08-15 17:24:06",
      "modified": "2023-10-05 08:19:21",
      "commits": 17
    },
    {
      "source": "vertexenum-speed.Rmd",
      "filename": "vertexenum-speed.html",
      "title": "Improving the speed of computing causal bounds",
      "author": "@gjo11",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What is causaloptim?",
        "Background",
        "Efficiency matters!",
        "How does causaloptim work?",
        "Response Function Variables",
        "Parameters and their Relationships",
        "Linear Programming",
        "Vertex Enumeration",
        "References"
      ],
      "created": "2021-01-20 09:25:56",
      "modified": "2026-04-27 10:11:26",
      "commits": 7
    }
  ],
  "_score": 6.12057393120585,
  "_indexed": true,
  "_nocasepkg": "causaloptim",
  "_universes": [
    "sachsmc"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.2",
      "date": "2026-05-27T06:47:31.000Z",
      "distro": "noble",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "b6475256c09dd2018e07506b1d772c1f5f78ec2096e7e9ea7036bbe412df1199",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.2",
      "date": "2026-05-27T06:32:03.000Z",
      "distro": "noble",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "dffe7ffe3d9e9de95901ae1719f2b12b18244cd9c40abed5bd763230c8ca94ca",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:34.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "4dc3e7865c5b4736bae7aab3d21ab64bd7b1d4a6f5901d52cbc1e8380ef44b34",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:37.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "201778aa59adafefb1e3ccfdf3a5af531b61935a3e212106c995a760f7ad145a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:58.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "1f6363b2edb2de69873c02b7922faa687030e3121d3744cd218b925a4aa6118a",
      "status": "success",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:21.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "14e6b19ec887273554230b459ff799bd56609f7cd2c25fa75630b9feeb312d63",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:10.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "98ab76b4cff1bd32c2ef9ce47a1ac788d866efea76f5dbc0140ea26d01b10a3d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-27T06:31:21.000Z",
      "commit": "ae8e03666322eb1f28b57e77f38b918625667ac5",
      "fileid": "176e889befab0e76579c5a312ea7a2d6e494adbd7430955bd38c573565013d62",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/sachsmc/actions/runs/26494729207"
    }
  ]
}