| bf_nonlinear | R Documentation |
Computes the encompassing Bayes factor for a user-specified, nonlinear inequality
constraint. Restrictions are defined via an indicator function of the free parameters
c(p11,p12,p13, p21,p22,...) (i.e., the multinomial probabilities).
bf_nonlinear(
k,
options,
inside,
prior = rep(1, sum(options)),
log = FALSE,
...
)
count_nonlinear(
k = 0,
options,
inside,
prior = rep(1, sum(options)),
M = 5000,
progress = TRUE,
cpu = 1
)
k |
vector of observed response frequencies. |
options |
number of observable categories/probabilities for each item
type/multinomial distribution, e.g., |
inside |
an indicator function that takes a vector with probabilities
|
prior |
a vector with two positive numbers defining the shape parameters of the beta prior distributions for each binomial rate parameter. |
log |
whether to return the log-Bayes factor instead of the Bayes factor |
... |
further arguments passed to |
M |
number of posterior samples drawn from the encompassing model |
progress |
whether a progress bar should be shown (if |
cpu |
either the number of CPUs used for parallel sampling, or a parallel
cluster (e.g., |
Inequality constraints are defined via an indicator function inside
which returns inside(x)=1 (or 0) if the vector of free parameters
x is inside (or outside) the model space. Since the vector x
must include only free (!) parameters, the last probability for each
multinomial must not be used in the function inside(x)!
Efficiency can be improved greatly if the indicator function is defined as C++ code via the function cppXPtr in the package RcppXPtrUtils (see below for examples). In this case, please keep in mind that indexing in C++ starts with 0,1,2... (not with 1,2,3,... as in R)!
Klugkist, I., & Hoijtink, H. (2007). The Bayes factor for inequality and about equality constrained models. Computational Statistics & Data Analysis, 51(12), 6367-6379. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.csda.2007.01.024")}
Klugkist, I., Laudy, O., & Hoijtink, H. (2010). Bayesian evaluation of inequality and equality constrained hypotheses for contingency tables. Psychological Methods, 15(3), 281-299. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1037/a0020137")}
##### 2x2x2 continceny table (Klugkist & Hojtink, 2007)
#
# (defendant's race) x (victim's race) x (death penalty)
# indexing: 0 = white/white/yes ; 1 = black/black/no
# probabilities: (p000,p001, p010,p011, p100,p101, p110,p111)
# Model2:
# p000*p101 < p100*p001 & p010*p111 < p110*p011
# observed frequencies:
k <- c(19, 132, 0, 9, 11, 52, 6, 97)
model <- function(x) {
x[1] * x[6] < x[5] * x[2] & x[3] * (1 - sum(x)) < x[7] * x[4]
}
# NOTE: "1-sum(x)" must be used instead of "x[8]"!
# compute Bayes factor (Klugkist 2007: bf_0u=1.62)
bf_nonlinear(k, 8, model, M = 50000)
##### Using a C++ indicator function (much faster)
cpp_code <- "SEXP model(NumericVector x){
return wrap(x[0]*x[5] < x[4]*x[1] & x[2]*(1-sum(x)) < x[6]*x[3]);}"
# NOTE: C++ indexing starts at 0!
# define C++ pointer to indicator function:
model_cpp <- RcppXPtrUtils::cppXPtr(cpp_code)
bf_nonlinear(
k = c(19, 132, 0, 9, 11, 52, 6, 97), M = 100000,
options = 8, inside = model_cpp
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.