View source: R/brms_localdep.R
| q3_statistic | R Documentation |
Computes a Bayesian analogue of Yen's Q3 statistic (Yen, 1984) for
detecting local dependence between item pairs in Rasch-family models
fitted with brms. For each posterior draw, residual correlations
are computed for both observed and replicated data, yielding draw-level
Q3 values that can be summarized and visualized via
q3_post.
q3_statistic(model, item_var = item, person_var = id, ndraws_use = NULL)
model |
A fitted |
item_var |
An unquoted variable name identifying the item grouping
variable in the model data. Default is |
person_var |
An unquoted variable name identifying the person
grouping variable in the model data. Default is |
ndraws_use |
Optional positive integer. If specified, a random
subset of posterior draws of this size is used. If |
The procedure works as follows for each posterior draw s:
Compute expected values E^{(s)}_{vi} from the category
probabilities returned by posterior_epred.
For ordinal models: E^{(s)}_{vi} = \sum_c c \cdot
P^{(s)}(X_{vi} = c). For binary models: E^{(s)}_{vi} =
P^{(s)}(X_{vi} = 1).
Compute observed residuals: d^{(s)}_{vi} = X_{vi} -
E^{(s)}_{vi}.
Compute replicated residuals: d^{rep(s)}_{vi} =
Y^{rep(s)}_{vi} - E^{(s)}_{vi}, where Y^{rep} is drawn
via posterior_predict.
For each item pair (i, j), compute Q3 as the Pearson
correlation of residuals across all persons who responded to
both items.
A tibble in long format with one row
per draw per item pair, containing:
Integer draw index.
Character label of the item pair
("item1 : item2").
First item in the pair.
Second item in the pair.
Observed Q3 residual correlation for this draw.
Replicated Q3 residual correlation for this draw.
This long-format output parallels the structure of
infit_statistic and can be passed directly to
q3_post for summary tables and plots.
Yen, W. M. (1984). Effects of local item dependence on the fit and equating performance of the three-parameter logistic model. Applied Psychological Measurement, 8(2), 125–145. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1177/014662168400800201")}
Christensen, K. B., Makransky, G. & Horton, M. (2017). Critical values for Yen's Q3: Identification of local dependence in the Rasch model using residual correlations. Applied Psychological Measurement, 41(3), 178–194. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1177/0146621616677520")}
Bürkner, P.-C. (2021). Bayesian Item Response Modeling in R with brms and Stan. Journal of Statistical Software, 100, 1–54. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.18637/jss.v100.i05")}
q3_post for postprocessing summaries and plots,
infit_statistic for Bayesian infit/outfit,
posterior_epred,
posterior_predict.
library(brms)
library(dplyr)
library(tidyr)
library(tibble)
# --- Partial Credit Model ---
df_pcm <- eRm::pcmdat2 %>%
mutate(across(everything(), ~ .x + 1)) %>%
rownames_to_column("id") %>%
pivot_longer(!id, names_to = "item", values_to = "response")
fit_pcm <- brm(
response | thres(gr = item) ~ 1 + (1 | id),
data = df_pcm,
family = acat,
chains = 4,
cores = 1, # use more cores if you have
iter = 500 # use at least 2000
)
# Q3 residual correlations
q3_draws <- q3_statistic(fit_pcm, ndraws_use = 500)
# Postprocess
result <- q3_post(q3_draws)
result$summary
result$hdi
result$plot
# --- Dichotomous Rasch Model ---
df_rm <- eRm::raschdat3 %>%
as.data.frame() %>%
rownames_to_column("id") %>%
pivot_longer(!id, names_to = "item", values_to = "response")
fit_rm <- brm(
response ~ 1 + (1 | item) + (1 | id),
data = df_rm,
family = bernoulli(),
chains = 4,
cores = 1, # use more cores if you have
iter = 500 # use at least 2000
)
q3_draws <- q3_statistic(fit_rm, ndraws_use = 500)
# Postprocess
result <- q3_post(q3_draws)
result$summary
result$hdi
result$plot
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.