Learn R Programming

games (version 1.1.2)

vuong: Non-nested model tests

Description

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

Usage

vuong(model1, model2, outcome1=NULL, outcome2=NULL, level=0.05, digits=2)
clarke(model1, model2, outcome1=NULL, outcome2=NULL, level=0.05, digits=2)

Arguments

model1
A fitted statistical model of class "game", "lm", or "glm"
model2
A fitted statistical model of class "game", "lm", or "glm" whose dependent variable is the same as that of model1
outcome1
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.
outcome2
Optional: same as outcome1, but corresponding to model2.
level
Numeric: significance level for the test.
digits
Integer: number of digits to print

Value

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:
stat
The test statistic
test
The type of test ("vuong" or "clarke")
level
Significance level for the test
digits
Number of digits to print
loglik1
Vector of observationwise log-likelihoods for model1
loglik2
Vector of observationwise log-likelihoods for model2
nparams
Integer vector containing the number of parameters fitted in model1 and model2 respectively
nobs
Number of observations of the dependent variable being modeled

Details

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.

References

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.

Examples

Run this code
data("war1800")

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

## 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
data(data_ult)
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)

Run the code above in your browser using DataLab