Skip to contents

Tests the restriction that the inflation (split) equation is the same for every non-inflated category – the ZiOP / MiOP / TiOP – against the category-specific split of Brown, Harris and Spencer (2020) (split = "category"): a Lagrange-multiplier (score) test computed from the common-split fit alone, and the likelihood-ratio test from the category-specific refit (or from the stored common-split counterpart when object was fit with split = "category"). Under the null both statistics are chi-squared with (J - 2) times the number of split coefficients degrees of freedom (plus J - 2 for the correlations when correlated = TRUE).

Usage

split_test(object, lr = TRUE, information = c("opg", "hessian"))

Arguments

object

An "iop" or "iol" fit with split = "common" (the default) or split = "category".

lr

Also compute the likelihood-ratio test (refits the category-specific model when object has a common split).

information

Information-matrix estimate for the LM statistic: "opg" (outer product of gradients, as in Brown, Harris and Spencer; default) or "hessian" (observed information; NA when it is not positive definite at the restricted estimates).

Value

A data frame of class "split_test" with one row per test (LM, and LR when requested): statistic, df, p.value, and the log-likelihoods of the two models on the LR row; the information attribute records the LM variant and note any caveat.

Details

The LM statistic is \(s' I^{-1} s\), with \(s\) the score of the category-specific model evaluated at the common-split estimates (every split equation set equal to the common one) and \(I\) an estimate of the information matrix at that point. It needs no refit. information = "opg" (default) uses the outer product of the per-observation scores, as Brown, Harris and Spencer (2020) do; "hessian" uses the observed information (the negative Hessian of the category-specific log-likelihood at the restricted estimates). Under the null both are correctly sized (in a 120-replication simulation at n = 1500 both reject 4.2 percent of the time at the 5 percent level, as does the LR) and the Hessian form tracks the LR more closely. But the LM is a local test: it evaluates the information where the restriction holds, and when the restriction is strongly violated neither estimate is representative there – on the bp application the OPG statistic is 267 where the LR is 57 (outer-product information is known to over-reject; Davidson and MacKinnon 1983), and the observed information is not even positive definite at the restricted estimates (the Hessian-form statistic is then reported as NA with a note). The LR test refits the category-specific model, which is nested in the restricted one as an interior restriction, so the classical reference applies (unlike the ordered-versus-inflated comparison of inflation_test()). Treat the LM as a screening statistic and report the LR.

References

Davidson, R. and MacKinnon, J.G. (1983). Small sample properties of alternative forms of the Lagrange multiplier test. Economics Letters, 12, 269-275.

Brown, S., Harris, M.N. and Spencer, C. (2020). Modelling category inflation with multiple inflation processes: Estimation, specification, and testing. Oxford Bulletin of Economics and Statistics, 82, 1342-1361.

Examples

set.seed(8)
G <- cbind(c(0.3, 1), c(0.3, 1))                # equal split equations: the common model holds
d <- riop(800, beta = c(0.8, -0.5), tau = c(-0.6, 0.7), gamma = G, inflate = "bottom")
m <- iop(y ~ x1 + x2 | z1, d, inflate = "bottom")
split_test(m)
#> Test of a common split equation against category-specific split equations (Brown, Harris and Spencer 2020)
#> LM information: outer product of gradients (Brown, Harris and Spencer); a local screening statistic -- report the LR when they disagree
#>  test statistic df p.value logLik_common logLik_category
#>    LM     0.246  2   0.884       -578.82              NA
#>    LR     0.209  2   0.901       -578.82         -578.72
# \donttest{
G2 <- cbind(c(0.3, 1.2), c(1.0, 0.2))            # different split equations
d2 <- riop(800, beta = c(0.8, -0.5), tau = c(-0.6, 0.7), gamma = G2, inflate = "bottom")
split_test(iop(y ~ x1 + x2 | z1, d2, inflate = "bottom"))
#> Test of a common split equation against category-specific split equations (Brown, Harris and Spencer 2020)
#> LM information: outer product of gradients (Brown, Harris and Spencer); a local screening statistic -- report the LR when they disagree
#>  test statistic df  p.value logLik_common logLik_category
#>    LM    63.094  2 1.99e-14        -663.7              NA
#>    LR    39.371  2 2.82e-09        -663.7         -644.02
# }