tests.Rd
Tests different nulls against a free alternative
equalp.test(H, startp=NULL, ...)
knownp.test(H, p, ...)
samep.test(H, i, give=FALSE, startp=NULL, ...)
specificp.test(H, i, specificp=1/size(H),
alternative = c("two.sided","less","greater"), ...)
specificp.ne.test(H, i, specificp=1/size(H), ...)
specificp.gt.test(H, i, specificp=1/size(H), delta=1e-5, ...)
specificp.lt.test(H, i, specificp=1/size(H), ...)
# S3 method for class 'hyper2test'
print(x, ...)
A likelihood function, an object of class hyper2
In equalp.test()
, putative strength vector to be
tested
Further arguments passed by equalp.test()
to
maxp()
and ignored by print.hyper2test()
Starting value for optimization
A character vector of names
Strength, real number between 0 and 1
a character string specifying the alternative
hypothesis, must be one of two.sided
(default),
greater
or less
. You can specify just the initial
letter (taken from t.test.Rd
)
Boolean, with TRUE
meaning to return more
detailed debugging information, and default FALSE
meaning to
return a more user-friendly object of class equalp.test
,
which has its own print method
Object of class equalp.test
, the result of
equalp.test()
Small value for numerical stability
Given a hyper2
likelihood function, there are a number of
natural questions to ask about the strengths of the players; see
Hankin 2010 (JSS) for examples. An extended discussion is presented
in vignette “hyper2
” and the functions documented here
cover most of the tests used in the vignette.
The tests return an object with class hyper2test
, which has its
own print method.
Function equalp.test(H,p)
tests the null that all
strengths are equal to vector p
. If p
is missing, it
tests \(H_0\colon p_1=p_2=\cdots=p_n=\frac{1}{n}\), for example equalp.test(icons)
Function knownp.test()
tests the null that the strengths
are equal to the elements of named vector p
; it is a
generalization of equalp.test()
. Example:
knownp.test(icons,zipf(6))
.
Function specificp.test(H,i,p)
tests
\(H_0\colon p_i=p\), for example
specificp.test(icons,"NB",0.1)
Function samep.test()
tests \(H_0\colon
p_{i_1}=p_{i_2}=\cdots=p_{i_k}\), for example
samep.test(icons,c("NB","L"))
tests that NB
has the same
strength as L
.
Functions specificp.ne.test(H,i,p)
,
specificp.gt.test(H,i,p)
, and specificp.lt.test(H,i,p)
are low-level helper functions that implement one- or two-sided versions
of specificp.test()
via the alternative
argument,
following t.test()
The test functions return a list with class "hyper2test"
containing the following components:
the difference in support between the null and alternative
the (asymptotic) p-value for the test, based on Wilks's theorem
the maximum likelihood estimate for \(p\)
a character string indicating what type of test was performed
a character string giving the name(s) of the data.
Function specificp.gt.test()
includes quite a bit of messing
about to ensure that frequently-used idiom like
specificp.gt.test(icons,"NB",0)
works as expected, testing a null
of p_NB=0
(observe that specificp.ne.test(icons,"NB",0)
and specificp.gt.test(icons,"NB",0)
will (correctly) throw an
error). In the case of testing a strength's being zero, the support
function is often quite badly-behaved near the constraint [think tossing
a coin with probability \(p\) twice, observing one head and one tail,
and testing \(p=0\); at the constraint, the likelihood is zero, the
support negative infinity, and the gradient of the support is infinite].
Numerically, the code tests p_NB=delta
. Note that similar
machinations are not required in specificp.lt.test()
because a
null of p_NB=1
is unrealistic.
Function samep.test()
does not have access to gradient
information so it is slow, inaccurate, and may fail completely for
high-dimensional datasets. If any(i==n)
, this constrains the
fillup value; this makes no difference mathematically but the function
idiom is involved.
In functions specificp.??.test(H,i,...)
, if i
is not
present in H
, an error is returned although technically the
result should be “not enough evidence to reject”, as H
is
uninformative about i
.
equalp.test(chess)
#>
#> Constrained support maximization
#>
#> data: chess
#> null hypothesis: Topalov = Anand = Karpov
#> null estimate:
#> Topalov Anand Karpov
#> 0.3333333 0.3333333 0.3333333
#> (argmax, constrained optimization)
#> Support for null: -60.99695 + K
#>
#> alternative hypothesis: sum p_i=1
#> alternative estimate:
#> Topalov Anand Karpov
#> 0.4036108 0.3405168 0.2558723
#> (argmax, free optimization)
#> Support for alternative: -60.06174 + K
#>
#> degrees of freedom: 2
#> support difference = 0.9352125
#> p-value: 0.3925025
#>
# samep.test(icons,c("NB","L"))
# knownp.test(icons,zipf(icons))