| grmtree | R Documentation |
This function implements a tree-based graded response model (GRM) using model-based recursive partitioning to detect and account for differential item functioning (DIF) in polytomous items. The GRMTree combines the statistical framework of item response theory with recursive partitioning to identify heterogeneous subgroups in the population where item parameters (discrimination and thresholds) vary systematically across covariates.
grmtree(
formula,
data,
na.action = na.omit,
control = grmtree.control(),
mtry = NULL,
...
)
formula |
A formula specifying the model structure with the response
matrix on the left and partitioning variables on the right (e.g.,
|
data |
A data frame containing the variables in the model. |
na.action |
How to handle missing values (default: |
control |
A list of control parameters created by |
mtry |
Number of variables randomly sampled as candidates at each split. If NULL, all variables are considered. |
... |
Additional arguments passed to the fitting function. |
The algorithm works by first estimating a global GRM for the entire sample, then recursively testing for parameter instability with respect to available covariates. When significant DIF is detected, the sample is partitioned into homogeneous subgroups, each with their own set of item parameters. This approach allows for the identification of complex interaction effects and provides interpretable tree structures that visualize how item functioning varies across different patient subgroups.
GRMTree is particularly useful in health outcomes research where patient-reported outcome measures may function differently across diverse demographic, clinical, or socioeconomic subgroups. The resulting tree diagrams facilitate the development of personalized assessment strategies and can inform targeted interventions by identifying specific patient characteristics associated with differential item interpretation.
Let Y_{im} denote the response of the i^{th} (i=1,\ldots,N)
individual to the m^{th} (m = 1,2,\ldots,M) item. The graded
response model is described as:
P(Y_{im} \geq j | \tau_{mj}, \lambda_m, \theta_i) =
\frac{\exp(-(\tau_{mj} - \lambda_m \theta_i))}{1 + \exp(-(\tau_{mj} -
\lambda_m \theta_i))}
where:
P(Y_{im} \geq j | \tau_{mj}, \lambda_m, \theta_i) is the probability that
individual i's response is in category j or higher on item
m,
\tau_{mj} is the threshold parameter between categories j-1 and
j for item m,
\lambda_m is the discrimination parameter for item m,
\theta_i \sim N(0,1) is the latent trait score for individual i.
This parametrization is equivalent to the conventional IRT formulation where
item discrimination is a_m = \lambda_m and item difficulty is
b_{mj} = \tau_{mj} / \lambda_m.
The GRMTree is a hybrid model that integrates the GRM with model-based recursive partitioning to detect and account for differential item functioning (DIF) across subgroups defined by covariates. The algorithm proceeds through the following steps:
Step 1: Global Model Estimation
Estimate the GRM item parameters (\hat{\tau}_{mj}, \hat{\lambda}_m)
jointly for all individuals in the study cohort at the root node via maximum
likelihood estimation:
\hat{\beta}_{\text{global}} = \arg\max_{\beta} \sum_{i=1}^N \log
L(\beta; \mathbf{y}_i)
where \beta = (a_1, \ldots, a_J, b_{11}, \ldots, b_{J,m-1}) contains
all item parameters (discrimination and difficulty), providing a baseline
model assuming parameter invariance.
Step 2: Parameter Stability Testing
For each available covariate X_p (p = 1, \ldots, P), assess the
stability of the item parameters by conducting score-based structural change
tests. This involves: 1. Calculating the score function contributions
s(\hat{\beta}; y_i, x_i) for each individual, 2. Ordering these scores
with respect to each covariate X_p, 3. Testing the null hypothesis
H_0: \mathbb{E}[s(\hat{\beta}; y_i, x_i)] = 0 for all i against
the alternative that scores fluctuate systematically with X_p,
indicating parameter instability (DIF).
Step 3: Recursive Partitioning
If significant instability is detected (p < \alpha_{\text{adj}}):
Covariate Selection: Identify the covariate X_p^* with the most
significant instability (smallest adjusted p-value),
Split Point Determination: Find the optimal cut-point c^* that
maximizes the partitioned log-likelihood:
\ell_{\text{left}}(\beta) +
\ell_{\text{right}}(\beta) = \sum_{i: X_{pi} \leq c^*} \log L(\beta; y_i) +
\sum_{i: X_{pi} > c^*} \log L(\beta; y_i)
over all possible cut-points on
X_p^*,
Sample Splitting: Partition the sample into two child nodes based on the
rule X_p^* \leq c^*.
Step 4: Recursive Application & Stopping Criteria
Repeat Steps 1-3 recursively within each resulting child node until one of the following stopping criteria is met:
No Significant Instability: No covariate shows significant parameter
instability after multiple testing correction (\alpha_{\text{adj}} =
\alpha/m, where multiple adjustment methods can be applied, including
Bonferroni, Holm, Benjamini-Hochberg, etc.).
Minimum Node Size: The subsample size falls below a prespecified
minimum (e.g., n < 10 \times the number of item parameters).
The final GRMTree provides a piecewise GRM where each terminal node represents a subgroup with homogeneous item parameters, explicitly modeling the detected DIF structure within the data. The resulting GRMTree model can be expressed as a mixture of subgroup-specific GRMs:
P(Y_{ij} = k | \theta_i, \mathbf{x}_i) = \sum_{b=1}^B I(\mathbf{x}_i
\in \mathcal{X}_b) \cdot P_b(Y_{ij} = k | \theta_i)
where:
B is the number of terminal nodes,
\mathcal{X}_b is the covariate subspace defining terminal node b,
P_b is the node-specific GRM with parameters \beta_b,
I(\cdot) is the indicator function.
Each terminal node b contains a complete GRM with:
Node-specific item parameters: \beta_b = (a_{1b}, \ldots, a_{Jb}, b_{11b}, \ldots, b_{J,m-1,b})
Local ability distribution: \theta_i | \mathbf{x}_i \in \mathcal{X}_b \sim N(0, 1)
This approach allows differential item functioning (DIF) to be detected and modeled explicitly through the tree structure, where item parameters can vary across subgroups defined by covariates, while maintaining the conditional distribution of the latent trait within each subgroup.
For holm, BH, BY, hochberg, and
hommel methods, the algorithm employs a two-stage approach: (1) build a tree
using initial_alpha as the splitting threshold, (2) apply global
p-value adjustment across all splits, and (3) prune splits that do not meet
the adjusted threshold alpha. This differs from Bonferroni correction,
which is applied locally during tree construction via partykit::mob.
The choice of initial_alpha represents a statistical trade-off. The
default (min(3 * alpha, 0.20)) provides a balance between power and
computational efficiency. Note that global post-hoc adjustments in
hierarchical tree structures may be conservative compared to per-node
adjustments, as they account for all tests performed during tree exploration.
This global adjustment approach controls the tree-wide error rate and may be
conservative (Type I error often <3%). This conservativeness ensures strong
control of family-wise error rate or false discovery rate across all splits
in the tree. Users requiring less conservative control may prefer the
Bonferroni method, which applies per-node adjustment during tree
construction.
An object of class grmtree inheriting from modelparty containing
the fitted tree structure.
Olayinka Imisioluwa Arimoro olayinka.arimoro@ucalgary.ca, Lisa M. Lix, Tolulope T. Sajobi
Samejima, F. (1969). Estimation of latent ability using a response pattern of graded scores. Psychometrika Monograph Supplement, 34, 100-114.
Strobl, C., Kopf, J., & Zeileis, A. (2015). Rasch trees: A new method for detecting differential item functioning in the Rasch model. Psychometrika, 80(2), 289-316.
Komboz, B., Strobl, C., & Zeileis, A. (2018). Tree-based global model tests for polytomous Rasch models. Educational and psychological measurement, 78(1), 128-166. https://doi.org/10.1177/0013164416664394
Arimoro, O. I., Lix, L. M., Patten, S. B., Sawatzky, R., Sebille, V., Liu, J., Wiebe, S., Josephson, C. B., & Sajobi, T. T. (2025). Tree-based latent variable model for assessing differential item functioning in patient-reported outcome measures: a simulation study. Quality of Life Research. https://doi.org/10.1007/s11136-025-04018-6
Arimoro, O. I., Josephson, C. B., James, M. T., Patten, S. B., Wiebe, S., Lix, L. M., & Sajobi, T. T. (2024). Screening for depression in patients with epilepsy: same questions but different meaning to different patients. Quality of Life Research, 33(12), 3409-3419. https://doi.org/10.1007/s11136-024-03782-1
print.grmtree prints the detailed summary results of
the grmtree object, grmtree.control creates a control
object for grmtree, plot.grmtree creates plot for the
grmtree object, grmforest for GRM Forests,
varimp calculates the variable importance for GRM Forest,
fscores_grmtree for computing factor scores,
threshpar_grmtree for extracting threshold parameters,
discrpar_grmtree for extracting discrimination parameters,
itempar_grmtree for extracting item parameters
library(grmtree)
library(hlt)
# Prepare the asti data (from the hlt package)
data("asti", package = "hlt")
asti$resp <- data.matrix(asti[, 1:4])
# Fit GRM tree with gender and group as partitioning variables
tree <- grmtree(resp ~ gender + group,
data = asti,
control = grmtree.control(minbucket = 30))
## Print and plot the tree
print(tree)
plot(tree)
# Extract item parameters for specific subgroups
discr_params <- discrpar_grmtree(tree)
threshold_params <- threshpar_grmtree(tree)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.