marginal_overlap: Feasibility of all Marginal Ellipse Overlaps

Description Usage Arguments Details Value See Also Examples

View source: R/marginal_overlap.R

Description

Determin if the projections of ellipses onto each margin overlap.

Usage

1
marginal_overlap(ell, margins = "all")

Arguments

ell

a list of at least two (non degenerate) ellipses; see wrangle_ellipse.

margins

either "all" or a vector indicating the margins to project the ellipses onto and take intersections.

Details

The ellipses are projected onto the specified margins. For each margin the intersection of the projected ellipses is found. The Lower and Upper endpoints of the intersection interval is reported. If the intersection along a margin is empty then Lower and Upper is reported as NA.

Note that if the ellipses overlap when projected onto each margin this does not imply that the ellipses themselves intersect non-emptily. The example below is constructed to illustrate this.

Value

marginal_overlap returns an object of class "marginal_overlap" which contains a data.frame where the coloumns descibe the following

Margin

Intputted margins.

Overlap

Whether the ellipses overlap when projected onto corresponding margin.

Lower

Lower endpoint of intersection interval. NA if the intersection is empty.

Upper

Upper endpoint of intersection interval. NA if the intersection is empty.

See Also

wrangle_ellipse for detailed on ellipse parameterization.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
## two dimensional ellipses
e1 <- list(c = c(0.1, 0), P = matrix(c(3, 0, 0, 1), ncol = 2), r = 1)
e2 <- list(c = c(1, 1), P = matrix(c(3, 1.2, 1.2, 1), ncol = 2), r = 0.8)
e3 <- list(c = c(2, 1.5), P = matrix(c(1, 0.6, 0.6, 1), ncol = 2), r = 0.4)
# Note: These three ellipses have been chosen so (some of) the marginal
#       projections intersect, but the actual ellipses do not intersect.

# Ellipses e1 and e2 overlap when projected onto margin 1 and 2 respectivly.
marginal_overlap(list(e1, e2))

# Adding ellipse e3:
# Then there is no overlap when projecting onto margin 1
marginal_overlap(list(e1, e2, e3), margins = c(1))


## regression example
n <- 100
E <- rbinom(n, 1, 0.5)
X <- rnorm(n, E * 3, 1)
Y <- rnorm(n, 2 + X, 1)
lm_E0 <- lm(Y ~ X, data = data.frame(Y, X), subset = (E == 0))
lm_E1 <- lm(Y ~ X, data = data.frame(Y, X), subset = (E == 1))

# create 95% confidence ellipses and check marginal overlap
q <- qchisq(0.95, 2) # df = 2, as there are two covariates (1, X)
ell0 <- list(c = coefficients(lm_E0), S = vcov(lm_E0), r = q)
ell1 <- list(c = coefficients(lm_E1), S = vcov(lm_E1), r = q)
marginal_overlap(list(ell0, ell1))

fellov documentation built on Feb. 21, 2020, 5:07 p.m.