Learn R Programming

hyper2 (version 3.0-0)

suplist: Methods for suplist objects

Description

Basic functionality for lists of hyper2 objects, allowing the user to concatenate independent observations which are themselves composite objects such as returned by ggrl().

Usage

# S3 method for suplist
Ops(e1, e2)
# S3 method for suplist
sum(x,...,na.rm=FALSE)
suplist_add(e1,e2)
suplist_times_scalar(e1,e2)
as.suplist(L)

Value

Returns a suplist object.

Arguments

e1,e2

Objects of class suplist, here interpreted as a list of possible likelihood functions (who should be added)

x,...,na.rm

In the sum() method, objects to be summed; na.rm is currently ignored

L

A list of hyper2 objects

Author

Robin K. S. Hankin

Details

A suplist object is a list of hyper2 objects. Each element is a hyper2 object that is consistent with an incomplete rank observation \(R\); the list elements are exclusive and exhaustive for \(R\). If S is a suplist object, and S=list(H1,H2,...,Hn) where the Hi are hyper2 objects, then Prob(p|H_1)++Prob(p|H_n)Prob(p|H1)+...+Prob(p|Hn). This is because the elements of a suplist object are disjoint alternatives.

It is incorrect to say that a likelihood function L_S(p)L_S(p) for \(p\) is the sum of separate likelihood functions. This is incorrect because the arbitrary multiplicative constant messes up the math, for example we might have L_H_1(p)=C_1Prob(p|H_1)? and L_H_2(p)=C_2Prob(p|H_2)? and indeed L_H_1 H_2(p)=C_12(Prob(p|H_1)+Prob(p|H_2))? but

L_H_1(p)+L_H_2(p) C_1Prob(p|H_1)+C_2Prob(p|H_2)see PDF

(the right hand side is meaningless).

Functions suplist_add() and sum.suplist() implement “S1+S2” as the support function for independent observations S1 and S2. The idea is that the support functions “add” in the following sense. If S1=list(H1,...,Hr) and S2=list(I1,...,Is) where Hx,Ix are hyper2 objects, then the likelihood function for “S1+S2” is the likelihood function for S1 followed by (independent) S2. Formally

Prob(p|S_1+S_2) = ( Prob(p|H_1) ++ Prob(p|H_r) )( Prob(p|I_1) ++ Prob(p|I_s) )omitted; see PDF

Prob(p|S_1+S_2) = ( Prob(p|H_1) ++ Prob(p|H_r) )+( Prob(p|I_1) ++ Prob(p|I_s) )omitted; see PDF

However, S1+S2 is typically a large and unwieldy object, and can be very slow to evaluate. These functions are here because they provide slick R idiom.

The experimental lsl mechanism furnishes an alternative methodology which is more computationally efficient at the expense of a non-expicit likelihood function. It is not clear at present (2022) which of the two systems is better.

See Also

Ops.hyper2,Extract,loglik

Examples

Run this code

W <- hyper2(pnames=letters[1:5])
W1 <- ggrl(W, 'a', letters[2:3],'d')  # 2-element list
W2 <- ggrl(W, 'e', letters[1:3],'d')  # 6-element list
W3 <- ggrl(W, 'c', letters[4:5],'a')  # 2-element list

# likelihood function for independent observations  W1,W2,W3:

W1+W2+W3 # A 2*6*2=24-element list

like_single_list(equalp(W),W1+W2+W3)
if (FALSE) dotchart(maxplist(W1+W1+W3),pch=16) # takes a long time

a <- lsl(list(W1,W2,W3),4:6)  # observe W1 four times, W2 five times and W3 six times
loglik_lsl(equalp(W),a,log=TRUE)

Run the code above in your browser using DataLab