vuong
Nonnested model tests
Perform Vuong's (1989) or Clarke's (2007) test for nonnested 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 ofmodel1
 outcome1
 Optional: if
model1
is of class"game"
, specify an integer to restrict attention to a particular binary outcome (the corresponding column ofpredict(model1)
). Forultimatum
models, "offer" or "accept" may also be used. See "Details" below for more information on when to specify an outcome. Ifmodel1
is not of class"game"
andoutcome1
is nonNULL
, it will be ignored and a warning will be issued.  outcome2
 Optional: same as
outcome1
, but corresponding tomodel2
.  level
 Numeric: significance level for the test.
 digits
 Integer: number of digits to print
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 nonnested). The null hypothesis is that the
estimated models are the same KullbackLeibler 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 nonnull 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 leastsquares 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
.
Value

Typical use will be to run the function interactively and examine
the printed output. The functions return an object of class
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 loglikelihoods for
model1
loglik2
 Vector of observationwise loglikelihoods for
model2
nparams
 Integer vector containing the number of parameters
fitted in
model1
andmodel2
respectively nobs
 Number of observations of the dependent variable being modeled
"nonnest.test"
, which is a list containing: References
Quang H. Vuong. 1989. "Likelihood Ratio Tests for Model Selection and NonNested Hypotheses." Econometrica 57(2): 307333.
Kevin Clarke. 2007. "A Simple DistributionFree Test for Nonnested Hypotheses." Political Analysis 15(3): 347363.
Examples
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)