Non-nested model tests

Perform Vuong's (1989) or Clarke's (2007) test for non-nested model selection.

vuong(model1, model2, outcome1=NULL, outcome2=NULL, level=0.05, digits=2)
clarke(model1, model2, outcome1=NULL, outcome2=NULL, level=0.05, digits=2)
A fitted statistical model of class "game", "lm", or "glm"
A fitted statistical model of class "game", "lm", or "glm" whose dependent variable is the same as that of model1
Optional: if model1 is of class "game", specify an integer to restrict attention to a particular binary outcome (the corresponding column of predict(model1)). For ultimatum models, "offer" or "accept" may also be used. See "Details" below for more information on when to specify an outcome. If model1 is not of class "game" and outcome1 is non-NULL, it will be ignored and a warning will be issued.
Optional: same as outcome1, but corresponding to model2.
Numeric: significance level for the test.
Integer: number of digits to print

These tests are for comparing two statistical models that have the same dependent variable, where neither model can be expressed as a special case of the other (i.e., they are non-nested). The null hypothesis is that the estimated models are the same Kullback-Leibler distance from the true model. To adjust for potential differences in the dimensionality of the models, the test statistic for both vuong and clarke is corrected using the Bayesian information criterion (see Clarke 2007 for details).

It is crucial that the dependent variable be exactly the same between the two models being tested, including the order the observations are placed in. The vuong and clarke functions check for such discrepancies, and stop with an error if any is found. Models with non-null weights are not yet supported.

When comparing a strategic model to a (generalized) linear model, you must take care to ensure that the dependent variable is truly the same between models. This is where the outcome arguments come into play. For example, in an ultimatum model where acceptance is observed, the dependent variable for each observation is the vector consisting of the offer size and an indicator for whether it was accepted. This is not the same as the dependent variable in a least-squares regression of offer size, which is a scalar for each observation. Therefore, for a proper comparison of model1 of class "ultimatum" and model2 of class "lm", it is necessary to specify outcome1 = "offer". Similarly, consider an egame12 model on the war1800 data, where player 1 chooses whether to escalate the crisis and player 2 chooses whether to go to war. The dependent variable for each observation in this model is the vector of each player's choice. By contrast, in a logistic regression where the dependent variable is whether war occurs, the dependent variable for each observation is a scalar. To compare these models, it is necessary to specify outcome1 = 3.


Typical use will be to run the function interactively and examine the printed output. The functions return an object of class "nonnest.test", which is a list containing:
The test statistic
The type of test ("vuong" or "clarke")
Significance level for the test
Number of digits to print
Vector of observationwise log-likelihoods for model1
Vector of observationwise log-likelihoods for model2
Integer vector containing the number of parameters fitted in model1 and model2 respectively
Number of observations of the dependent variable being modeled


Quang H. Vuong. 1989. "Likelihood Ratio Tests for Model Selection and Non-Nested Hypotheses." Econometrica 57(2): 307--333.

Kevin Clarke. 2007. "A Simple Distribution-Free Test for Nonnested Hypotheses." Political Analysis 15(3): 347--363.

  • clarke
  • vuong

## Balance of power model
f1 <- esc + war ~ balanc + s_wt_re1 | 0 | balanc | balanc + s_wt_re1
m1 <- egame12(f1, data = war1800, subset = ! & !

## Regime type model
f2 <- esc + war ~ regime1 | 0 | regime1 + regime2 | regime1 + regime2
m2 <- egame12(f2, data = war1800)

## Comparing two strategic models
vuong(model1 = m1, model2 = m2)
clarke(model1 = m1, model2 = m2)

## Comparing strategic model to logit - must specify `outcome1` appropriately
logit1 <- glm(war ~ balanc + s_wt_re1, data = m1$model, family=binomial)
vuong(model1 = m1, outcome1 = 3, model2 = logit1)
clarke(model1 = m1, outcome1 = 3, model2 = logit1)

logit2 <- glm(sq ~ regime1 + regime2, data = war1800, family=binomial)
vuong(model1 = m2, outcome1 = 1, model2 = logit2)
clarke(model1 = m2, outcome1 = 1, model2 = logit2)

## Ultimatum model
f3 <- offer + accept ~ w1 + w2 + x1 + x2 | w1 + w2 + z1 + z2
m3 <- ultimatum(f3, maxOffer = 15, data = data_ult)
ols1 <- lm(offer ~ w1 + w2 + x1 + x2 + z1 + z2, data = data_ult)
vuong(model1 = m3, outcome1 = "offer", model2 = ols1)
clarke(model1 = m3, outcome1 = "offer", model2 = ols1)
Documentation reproduced from package games, version 1.1.2, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.